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:
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;
Das eigentliche Problem beläuft sich darauf, dass die Zeilen, wie im Quelltext angegeben, nicht einzeln ausgelesen werden.
Der ursprüngliche Quellcode dazu kommt von
http://noebis.pi-noe.ac.at/delphi/kapitel15.htm