Zitat von
_HAWK_:
ich habs jetzt mal wie gesagt mit printer versucht
Code:
printer.PrinterIndex:=-1;
printer.BeginDoc;
printer.Canvas.TextOut(0,0, 'test1' );
printer.Canvas.TextOut(0,0, 'test2' );
printer.EndDoc;
Das Problem ist nur, dass mir die zwei texte ... nicht, wie ich es eigentlich will, untereinander
Hi,
die ersten beiden Parameter von TCanvas.TextOut geben den Anfangspunkt an. Wenn Du 2 Text an die gleiche Stelle schreibst, können sie wohl nicht untereinander sein
Über TCanvas.TextHeight erhälst Du die Zeilenhöhe des Textes, den Du ausgeben möchtest. Mit dieser Information kannst Du die Y-Position der nächsten Zeile bestimmen.
Hier mal ein kleines Beispiel:
Delphi-Quellcode:
VAR
SL : Tstringlist;
i,dy : integer;
BEGIN
Printer.BeginDoc;
SL := TStringList.Create;
sl.Add('Test 1');
sl.Add('Test 2');
sl.Add('Test 3');
dy := round(Printer.Canvas.TextHeight(SL[0])*1.2); // Texthöhe + Zwischenraum
FOR i:=0 TO SL.Count -1 DO
BEGIN
Printer.Canvas.TextOut(50, // X: Linker Rand
i*dy, // Y: Zeile*Zeilenhöhe
SL[i]); // Text
END;
FreeAndNil(SL);
Printer.EndDoc;
END;
PS: Warum einfach wenns auch umständlich geht
Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...