Toon posts:

[Delphi] Resultaten Printen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo mede Tweakers,
ik ben een programma aan het schrijven voor iemand. Daarin worden 100 vragen gesteld en daarna worden de resultaten op het beeld gezet. Het progamma werkt al zo goed als.
Maar nu wil ik die resultaten ook nog kunnen printen en zelf op kunnen slaan als een Excel-document.

Printen:
Ik heb weleens gezien dat je in Delphi QuickReports kunt gebruiken, maar heb er zelf nooit mee gewerkt. Als ik ze op het formulier sleep (of een nieuwe maak) dan moet ik datasources enzo instellen. Maar mijn data komt niet uit een database.
Ook kan ik een TPrinter gebruiken. Maar ik weet ook niet hoe dat werkt.
De resultaten moeten in 3 kolommen worden afdrukt (met een nette lay-out).
Kan iemand mij hier bij helpen? Als het kan met een duidelijke uitleg en eventueel met een voorbeeldje.

Opslaan als Excel-document:
Nou...
Hier weet ik helemaal niets van. Ik weet ook niet of het mogelijk is.
Dus alle mogelijk oplossingen zijn welkom.

Als iemand mij hierbij kan helpen zou ik dat hartstikke fijn vinden !!
Alvast bedankt.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Delphi kan prima samenwerken met Office (iig 2000), je kunt dat gewoon een Excel blad gaan vullen met jou data. Kijk hier maar es of natuurlijk Google.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 23:30
Of gewoon zo:

[search=delphi printen]

:)

Verwijderd

Topicstarter
ehm......
Ik had graag een iets duidelijker voorbeeld.
Hoe ik bijv. 3 kolommen op papier kan krijgen
OK

  • Paul
  • Registratie: September 2000
  • Laatst online: 09:36
met (beetje summier)
code:
1
2
3
4
5
6
7
8
9
10
11
12
uses Printer;

begin
  Printer.BeginDoc;
  with Printer.Canvas do
    begin
    TextOut(positie en tekst (zie help));
    TextOut(2e kolom);
    TextOut(3e kolom);
    end;
  Printer.EndDoc;
end;

Verder kun je adhv de Y waarde die je meegeeft aan TextOut (en dus verhoogt bij de volgende regel) en Printer.PageHeight kijken of je nog op je pagina zit, zo niet doe je een Printer.NewPage oid (weet zo niet uit mijn hoofd, wederom, zie help :) ).

Enige probleempje is dat je op een 600 dpi printer een andere layout hebt dan op een 300 dpi printer. Op de 600 staat het 2x zo dicht op elkaar :P

Dit valt ook weer op te lossen door
code:
1
2
3
4
5
6
Xmulti, Ymulti : double;
begin
  Xmultie := Printer.PageWidth / eenRelatieveBreedte;
  Ymultie := Printer.PageHeigth / eenRelatieveHoogte;
  Printer.Canvas.TextOut(round(Xpositie * Xmultie), round(Ypositie * Ymultie), 'blaat');
end;

Aangezien wij initieel op 300dpi dpi printten, en ik de heugelijke taak heb gekregen om iig een deel van de prints om te zetten naar generiekere dpi-mogelijkheden, men ik me zo te herinneren dat wij als eenRelatieveBreedte 2400, en als eenRelatieveHoogte 3500 gebruiken. Dan heb je die twee dus zeg maar als absolute breedte en hoogte opgegeven, waardoor je je uit kunt leven op het designen.

Disclaimer: Kan best zijn dat dat hele brakke code is, en dat het VEEL makkelijker / mooier kan, maar zo doen ze het bij mij op het werk, en het werkt :P

"Your life is yours alone. Rise up and live it." - Richard Rahl
Rhàshan - Aditu Sunlock


Verwijderd

Wegschrijven naar temp txtfile, deze text file kun je afdrukken met een shellexecute API, daarna temp txtfile weer verwijderen.
Pagina: 1