Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Printer Canvas und DrawText (https://www.delphipraxis.net/177773-printer-canvas-und-drawtext.html)

Clemens Uhlenhut 26. Nov 2013 15:57

Delphi-Version: 7

Printer Canvas und DrawText
 
Hallo!

Ich stelle die Frage mal einfach falls es auch eine einfache Antwort gibt...
Ich habe eine Printer Canvas und kann problemlos mit

Code:
Printer.Canvas.TextOut()
Text auf dieser ausgeben. Versuche ich jedoch das gleiche mit zB

Code:
DrawText(Printer.Canvas.Handle, PChar(txt), -1, rect, DT_LEFT or DT_WORDBREAK)
schaffe ich es nicht den Text auf die Seite zu drucken. Wobei rect mit den Koordinaten gefüllt ist, die mir ein vorheriger Aufruf von DrawText() unter Verwendung von DT_CALCRECT geliefert hat.

Habe ich was übersehen?

Vielen Dank und Grüße
Clemens

himitsu 26. Nov 2013 16:27

AW: Printer Canvas und DrawText
 
Was stehen für Werte in
Delphi-Quellcode:
rect
?

Liegen die Werte auch innerhalb des Zeichenbereichs? (vorallem bei teilweise links daneben oder darüber wird gerne mal nicht gezeichnet)

Und gibt MSDN-Library durchsuchenDrawText eine Fehlermeldung zurück? (siehe Return Value > http://msdn.microsoft.com/en-us/libr...sktop/dd162498)

Clemens Uhlenhut 28. Nov 2013 19:11

AW: Printer Canvas und DrawText
 
Danke für die Antwort. Als Koordinaten habe ich die gleichen wie für TextOut() verwendet.
Bezüglich Fehlercode habe ich wirklich vergessen darauf zu achten. Danke für den Hinweis, ich kann dann am Montag mal sehen was da zurück kommt... Vielleicht auch gleich mal GetLastError() strapazieren.

Grüße

Sir Rufo 29. Nov 2013 02:00

AW: Printer Canvas und DrawText
 
Was für Werte stehen in rect (width, height)?

Versuch es mal damit, die Anzahl der Zeichen zu übergeben
Delphi-Quellcode:
DrawText( Printer.Canvas.Handle, PChar( txt ), Length( txt ), rect, DT_LEFT or DT_WORDBREAK );

Clemens Uhlenhut 23. Dez 2013 13:30

AW: Printer Canvas und DrawText
 
Anzahl der Zeichen haben ich auch schon mal angegeben. Ändert leider auch nichts.

Ich rufe zuerst DrawText() mit DT_CALCRECT auf und übernehme die Werte für rect. Habe auch schon probiert rect.top und rect.bottom zu vertauschen, da top > bottom geliefert wird. Als Rückgabe von DrawText() erhalte ich dann zB -30 wenn height -30 war.

Volker Z. 24. Dez 2013 00:04

AW: Printer Canvas und DrawText
 
Hallo,

Zitat:

Ich stelle die Frage mal einfach falls es auch eine einfache Antwort gibt...
besser ist: Stell Deine Frage so, dass hilfswillige (die offenbar zahlreich vorhanden sind, aber mit der langen Stange im Nebel stochern müssen und am Ende doch nur raten können) Futter haben, an der sie sich abarbeiten können (Stichwort: Quellcode - was machst Du eigentlich).

Ich habe mit der, von Dir beschriebenen Vorgehensweise keine Probleme Text (oder auch andere Inhalte) auf dem Drucker auszuwerfen. Wenn es bei Dir nicht funktioniert, dann zeigt doch einfach mal was Du tust.

Gruß

Sailor 24. Dez 2013 12:35

AW: Printer Canvas und DrawText
 
Ruf mal Settextalign auf, eventuell ist die Baseline auf taTop gesetzt. Dann wird zwar gezeichnet, aber Du siehst nix.

Luckie 25. Dez 2013 00:46

AW: Printer Canvas und DrawText
 
Und wenn du es nicht schon hast, installiere zum Testen einen PDF Drucker. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz