AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas-Druck

Ein Thema von Svenkan · begonnen am 12. Dez 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Canvas-Druck

  Alt 12. Dez 2007, 15:30
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;
Sven Kannenberg
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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