Hallo bitsetter, vielen Dank für den Code!
Ich habe den Code etwas umgemodelt, um auch verschiedene Schriftgrößen innerhalb des Textes zu unterstützen. Was hältst du davon:
Delphi-Quellcode:
procedure Ausdrucken(Text: TStringList; x, y: integer);
var
i, z: integer;
begin
x := x * 10;
y := y * 10;
z := y;
Printer.Begindoc;
//printer.Canvas.Font.Name := 'Courier New';
for i := 0 to Text.Count - 1 do
begin
(*if Printer.Canvas.TextWidth(Text[i]) > printer.PageWidth - x then
Showmessage('Zeile ' + inttostr(i + 1) + ' ist zu breit');*)
if (i mod 3) = 0 then
printer.Canvas.Font.Size := 16
else
printer.Canvas.Font.Size := 11;
Printer.Canvas.TextOut(x, y, Text[i]);
y := y + (printer.Canvas.Font.Size * 11);
if (y > (printer.PageHeight - z - (printer.Canvas.Font.Size * 10))) then
begin
y := z;
Printer.NewPage;
end;
end;
Printer.Enddoc;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
Text: TStringList;
begin
Text:= TStringList.Create;
Text.LoadFromFile('C:\Test.txt');
Ausdrucken(Text, 20, 17);
Text.Free;
end;
Jetzt bräuchte man nur noch eine Funktion, die überlange Textzeilen vor dem rechten Seitenrand an Wortgrenzen umbricht, dann wäre es perfekt!