![]() |
Inhalt eines Memos mit dem Printer-Objekt ausdrucken
Hallo Leute,
ich bin dabei ein Programm zu schreiben, das ein Memo-Feld besitzt. Der Inhalt dieses Memo-Feldes soll dann über den Drucker auf ein Blatt Papier gebracht werden. Zur Zeit sieht die Prozedur so aus (! nicht funktionsfähig !)
Delphi-Quellcode:
Das eigentliche Problem beläuft sich darauf, dass die Zeilen, wie im Quelltext angegeben, nicht einzeln ausgelesen werden. :coder2:
procedure TForm1.Drucken1Click(Sender: TObject);
begin IF PrintDialog1.Execute THEN BEGIN { AssignPrn (DruckDatei); <-- Das ist die alte Variante, die aber unschöne Seiten Rewrite (DruckDatei); produziert hat. writeln (DruckDatei, Memo1.Lines.GetText); CloseFile (DruckDatei); } Printer.BeginDoc; Hoehe := Printer.PageHeight; { Wie groß ist die Seite? } ZlDiff := Hoehe DIV 65; { Zeilenhoehe } WITH Printer.Canvas DO BEGIN SpDiff :=TextWidth('n'); { Wie breit ist ca. ein Buchstabe? } Zl := 3*ZlDiff; Sp := 8*SpDiff; TextOut (Sp*SpDiff,Zl,Memo1.Lines.GetText); {Hier ist das Problem} INC (Zl,ZlDiff); IF Zl > Hoehe - 5*ZlDiff THEN BEGIN Printer.NewPage; Zl := 3*ZlDiff; END; END; { WITH } Printer.EndDoc; END; end; Der ursprüngliche Quellcode dazu kommt von ![]() |
Re: Inhalt eines Memos mit dem Printer-Objekt ausdrucken
Herzlich willkommen in der Delphi-PRAXiS, rollstuhlfahrer.
Wie du in dem verlinkten Quelltext sehen kannst, werden mit dieser Ausgabetechnik einzelne Zeilen ausgegeben - und zwar an berechneten Stellen. An die Stelle der Schleife über die Datenbank-Tabelle tritt bei dir eine Schleife über die Zeilen deines Memos:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure TFormDatei.ButtonDruckClick(Sender: TObject);
var Hoehe, ZlDiff, Zl, SpDiff, Sp, ZlNr: WORD; begin IF PrintDialog.Execute THEN BEGIN Printer.BeginDoc; { Wie groß ist die Seite? } Hoehe := Printer.PageHeight; ZlDiff := Hoehe DIV 65; WITH Printer.Canvas DO BEGIN SpDiff := TextWidth('n'); {Wie breit ist ca. ein Buchstabe?} Zl := 3 * ZlDiff; Sp := 8 * SpDiff; FOR ZlNr := 0 to Pred(Memo.Lines.Count) DO BEGIN TextOut(Sp, Zl, Memo.Lines[ZlNr]); INC(Zl, ZlDiff); IF Zl > Hoehe - 5 * ZlDiff THEN BEGIN Printer.NewPage; Zl := 3 * ZlDiff; END; END; {FOR} END; { WITH } Printer.EndDoc; END; end; { ButtonDruckClick } Freundliche Grüße vom marabu |
Re: Inhalt eines Memos mit dem Printer-Objekt ausdrucken
thx, das funktioniert genau sowie ich mir das vorgestellt hab.
Damit ist diese offene Frage beantwortet rollstuhlfahrer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz