![]() |
Canvas-Druck
Hallo!
Ich habe mir über die Suchfunktion schon ein Beispiel von Michael Puff rausgesucht, mit dem man Listboxes drucken kann. Nun möchte ich aber z.B. mehrere Spalten drucken, einen Rahmen setzen und sowas. Wie kann man Rahmendicke, Spaltenzahl und Alignment festlegen?
Delphi-Quellcode:
procedure THauptform.Drucken1Click(Sender: TObject);
const TOPMARGIN = 20; // Millimeter BOTTOMMARGIN = 20; // Millimeter LEFTMARGIN = 20; // Millimeter var i, j : Integer; PaperHeight : Integer; begin j := 0; if PrintDialog1.Execute then begin with Printer do begin // Druckjob starten BeginDoc; // Einheit auf 0.1 Millimeter umstellen // Each logical unit is mapped to 0.1 millimeter. Positive x is to the right; positive y is up. SetMapMode(Canvas.Handle, MM_LOMETRIC); // Blatthöhe in Millimetern PaperHeight := GetDeviceCaps(Canvas.Handle, VERTSIZE); // Schriftgröße Canvas.Font.Size := 5; // Schriftart Canvas.Font.Name := 'Ariel'; PrintLine(Printer.Canvas, // Ziel-Canvas, hier Drucker, kann aber auch Formulöar oder sonst was sein 'Lehrerliste - Schulname', // zu druckende Zeichenkette j, // Zeile LEFTMARGIN * 10, // Linker Rand (1/10 mm) -TOPMARGIN * 10, // Oberer Rand (1/10 mm). Negativ, weil y ist von unten nach oben -Canvas.Font.Size * 30 // Zeilenabstand (= Schriftgröße), abhängig von Schriftgröße. // Negativ, weil y ist von unten nach oben ); for i := 0 to LbLehShort.Items.Count - 1 do begin PrintLine(Printer.Canvas, // Ziel-Canvas, hier Drucker, kann aber auch Formulöar oder sonst was sein LbLehShort.Items[i]+' - '+LbLehLong.Items[i], // zu druckende Zeichenkette j, // Zeile LEFTMARGIN * 10, // Linker Rand (1/10 mm) -TOPMARGIN * 10, // Oberer Rand (1/10 mm). Negativ, weil y ist von unten nach oben -Canvas.Font.Size * 10 // Zeilenabstand (= Schriftgröße), abhängig von Schriftgröße. // Negativ, weil y ist von unten nach oben ); // nächste Zeile Inc(j); // Wenn alles zusammen höher als die Blatthöhe + Ränder wird -> neue Seite // Achtung hier in Millimetern rechnen, da GetDeviceCaps Millimeter ausgibt!!! // Zähler + Zeilenabstand (= Schriftgröße) + oberer Rand + unterer Rand if ((j * Canvas.Font.Size + TOPMARGIN + BOTTOMMARGIN) >= PaperHeight) then begin // neue Seite NewPage; // Zeilenzähler zurücksetzen j := 0; end; end; EndDoc; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz