AGB  ·  Datenschutz  ·  Impressum  







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

Wie Listbox Drucken?

Ein Thema von johnnycat14 · begonnen am 20. Apr 2006 · letzter Beitrag vom 20. Apr 2006
Antwort Antwort
johnnycat14

Registriert seit: 18. Apr 2006
Ort: Reinickendorf_Berlin
25 Beiträge
 
Delphi 7 Enterprise
 
#1

Wie Listbox Drucken?

  Alt 20. Apr 2006, 21:43
Hi Leute,
wie kann man den Inhalt einer Listbox drucken?
gruß john
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#2

Re: Wie Listbox Drucken?

  Alt 20. Apr 2006, 22:21
Hallo,

ich würde wohl den Inhalt auslesen und in ein RichEdit schreiben, welches ich dann ausdrucke.
Nett ist auch, wenn Du den Inhalt in eine WebBrowser Komponente lädst, um dann dessen Druckdialog nutzen zu können.
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#3

Re: Wie Listbox Drucken?

  Alt 20. Apr 2006, 22:23
Oder in ne Stringlist und dann in einer txt file speichern und drucken!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Wie Listbox Drucken?

  Alt 20. Apr 2006, 22:24
Gib den Inhalt der Listbox auf den Canvas des Druckers aus.

Mir war langweilig:
Delphi-Quellcode:
(*
* Author  : Michael Puff - [url]http://www.michael-puff.de[/url]
* Date    : 2006-04-21
* License : PUBLIC DOMAIN
*)


uses
  Printers;

procedure PrintLine(Canvas: TCanvas; const Line: string; idx, OffSetLeft, OffSetTop, Step: Integer);
begin
  Canvas.TextOut(OffSetLeft, Step * idx + OffSetTop, Line);
end;

procedure TForm1.Button1Click(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 := 7;
      // Schriftart
      Canvas.Font.Name := 'Courier New';
      for i := 0 to ListBox1.Items.Count - 1 do
      begin
        PrintLine(Printer.Canvas, // Ziel-Canvas, hier Drucker, kann aber auch Formulöar oder sonst was sein
          Listbox1.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;
Ein Druckdialog, eine Listbox und ein Button. Variablen und Konstanten sollten klar sein und die Kommentare auch.

Alternativ kann man auch auf ein Bitmap im Speicher alles ausgeben, ist wohl besser, wenn noch Grafiken gedruckt werden sollen und dann das Bitmap auf dem Drucker ausgeben, wie es in dem Beispiel im MSDN gemacht wird: Printing a Document
Michael
Ein Teil meines Codes würde euch verunsichern.
  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 12:23 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