Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Canvas Drucken (https://www.delphipraxis.net/46087-canvas-drucken.html)

LoL 18. Mai 2005 10:52


Canvas Drucken
 
moin

Ich schreibe gerade ein Programm das Matheaufgaben mit den Grundrechenarten ausspucken soll. Aufgabeerstellung klappt 1A. nun will ich die Aufgabe 4 Spaltig drucken. Zu diesem Zweck will ich mit Canvas auf den "Drucker malen". Hab zu Testzwecken das mal auf mein Form gemalt sonst wären ja 1000 Seiten draufgegangen :). Auf meiner Form funktioniert das Einwandfrei und schaut optimal aus. Wenn ich aber nun genau das gleiche auf den Drucker male druckt der irgendwie nur sch**** aus.(Links oben auf dem Blatt ein paar Zahlen übereinander geschrieben). Woran kann das liegen?
hab das mal zur übersichtlichkeit etwas vereinfacht: Die ganzen Aufgaben stehen in der Listbos "l".
Delphi-Quellcode:
cnt := 0;
While ( i < 800 ) Do
  Begin
    if cnt <= l.Count - 1 then//Wenn der Counter nicht die ListbosItems übersteigt
      begin
        Canvas.TextOut(0,i,l.Items.Strings[cnt]);//Bzw. Printer.Canvas
        Inc(cnt);
        Inc(i, 15);//Nur zum Ausrichten
      end
    else
      break;
  End;

Steve 18. Mai 2005 11:00

Re: Canvas Drucken
 
Hi,

Du rechnest pro Zeile nur 15 Pixel, das is bei nem Drucker...."recht wenig" :mrgreen:
Schau Dir mal Delphi-Referenz durchsuchenTCanvas.TextHeight etc. an :)


Gruß
Stephan :dance:

LoL 18. Mai 2005 11:10

Re: Canvas Drucken
 
"Wieviel Pixel passen denn auf den Drucker"?

Steve 18. Mai 2005 11:13

Re: Canvas Drucken
 
Hi,

das ist von Drucker zu Drucker unterschiedlich... Die Antwort bekommst Du über Delphi-Referenz durchsuchenGetDeviceCaps (siehe auch MSDN-Library durchsuchenGetDeviceCaps)


Gruß
Stephan :dance:

RedDust 18. Mai 2005 11:14

Re: Canvas Drucken
 
Hi,

ich hab' mich vor langer Zeit auch mal mit diesem Problem befasst. Das Problem was ich bei der Printer.Canvas "version" gefunden habe ist, du "schneiderst" den Druckauftrag nur für deinen Drucker zu. Wenn du das Blatt z.B. auf einem anderen Drucker ausdrucken willst kann es sein das der komplette Text verschoben ist. Ich würde dir in dem Fall die Hier im Forum suchenQuickReport Komponente empfehlen.

//EDIT//

Ups, da war wohl jemand schneller

Steve 18. Mai 2005 11:18

Re: Canvas Drucken
 
Hi,

²RedDust: da hast Du schon recht, dass das passieren kann, darum sollte man hier auch niemals konstante Werte (wie hier z.B. die 15) benutzen, sondern die Werte für Positionen etc. berechnen bzw. abfragen!

Gruß
Stephan :dance:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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