Entwickler-Ecke
Sonstiges (Delphi) - automatischer Zeilenumbruch bei Printer.Canvas.TextOut?
Stefan Dieler - Mo 29.07.02 16:57
Titel: automatischer Zeilenumbruch bei Printer.Canvas.TextOut?
Hallo,
ich habe einen Text, der mit Printer.Canvas.TextOut ausgegeben wird.
Da der Text manchmal aber ziemlich lang ist, möchte ich ihn ab einer best. Stelle umbrechen und in der nächsten Zeile fortsetzen.
Hat jemand eine Ahnung, wie man das machen könnte?
Vielen Dank an alle!
Gruß
Stefan
cbs - Mo 29.07.02 17:04
tag auch
nimm mal als zeilenumbruch die ascii zeichen 13 und 10
Quelltext
1:
| Printer.Canvas.TextOut(10,10, 'Zeile1' + #13#10 + 'Zeile2'); |
vieleicht reicht auch nur die 13 musste mal testen
ich habs net ausprobiert!
GPF - Mo 29.07.02 19:41
Anstatt Textout probiere die Windows Routine
DrawText.
Du findest näheres in der Windows API Hilfe oder falls Du die Sources besitzt ein schönes Beispiel in der Unit StdCtrls.pas in der Prozedur procedure TCustomLabel.DoDrawText(var Rect: TRect; Flags: Longint).
Der Aufruf müsste dann wie folgt lauten:
Quelltext
1: 2:
| Flags:=DT_EXPANDTABS or DT_WORDBREAK; DrawText (Canvas.Handle, PChar (DeinText), Length(DeinText), Rect, Flags); |
Wenn Du mit den Flags spielst kannst Du auch z.B. die Ausrichtung steuern. Dazu mehr aber in der Windows SDK Hilfe zu DrawText.
Rect gibt den Bereich an, in dem Dein Text gezeichnet werden soll.
Falls Du die Ausmaße eines Textes ermitteln möchtest verwende zusätzlich das Flag
DT_CALCRECT. Damit wird nichts gezeichnet - aber die Ausmaße in der Struktur Rect (vom Typ TRect) gespeichert.
MfG
GPF
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!