Autor Beitrag
Stefan Dieler
Hält's aus hier
Beiträge: 1


Delphi 7 Pro
BeitragVerfasst: Mo 29.07.02 16:57 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.07.02 17:04 
tag auch

nimm mal als zeilenumbruch die ascii zeichen 13 und 10
ausblenden Quelltext
1:
Printer.Canvas.TextOut(10,10, 'Zeile1' + #13#10 + 'Zeile2');					

vieleicht reicht auch nur die 13 musste mal testen

ich habs net ausprobiert!
cbs
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 207
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.07.02 17:09 
hmmm ne, muss mich korigieren :oops:
scheint nicht zu funktionieren

guck dir mal das hier an:
mehrzeiligen Text auf einem Canvas ausgeben (swissdelphicenter.ch)
is aber nen bischen unelegant, vieleicht hat ja jemand noch ne bessere lösung?!?
GPF
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 85



BeitragVerfasst: 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:

ausblenden 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