Drucken mit Delphi

Diskutiere Drucken mit Delphi im Developer Network Forum im Bereich Hardware & Software Forum; Hallo Zusammen, ich versuche seit einiger Zeit mit Delphi eine DIN A4-Seite zu drucken, ich nutze die Klasse TPrinter. Meine Quelltext sieht...
  • Drucken mit Delphi Beitrag #1
M

misterjo

Mitglied
Dabei seit
25.12.2001
Beiträge
11
Reaktionspunkte
0
Hallo Zusammen,

ich versuche seit einiger Zeit mit Delphi eine DIN A4-Seite zu drucken, ich nutze die Klasse TPrinter.
Meine Quelltext sieht im Groben folgendermaßen aus:

Printer.Title := 'Testseite';
Printer.Orientation := poPortrait;

Printer.BeginDoc;
Printer.Canvas.Font.Name := 'Times New Roman';
Printer.Canvas.Font.Height := -42;
Printer.Canvas.Font.Style := [];
Printer.Canvas.TextOut(10,10,'Text');

{ usw., unter Printer.Canvas wird das Dokument vollständig aufgebaut }

Printer.EndDoc;

// und im Destructor steht noch:

Printer.Free;

Ergebnis: Auf alten HP-Druckern (bis HP690) kein Problem,
auf allen anderen Druckern kommt irgendwie nur Murks raus (HP-Laserjet: Die Seite wird auf wenige cm verkleinert; nicht-HP-Drucker: es wird entweder in der Höhe oder in der Breite nur die halbe Seite bedruckt (verkleinert, nicht abgeschnitten) oder aber es kommt nur Schrott raus (Steuerzeichen)).

Die Delphi-Version spielt keine Rolle (ich nutze Delphi 5)!

Kann mir da jemand einen Tipp geben??

Gruß

J. Mehren
 
  • Drucken mit Delphi Beitrag #2
D

Dennis[B]

Bekanntes Mitglied
Dabei seit
05.01.2001
Beiträge
1.422
Reaktionspunkte
0
Ort
nix
Hi

Also ich habe ein Programm, das Tabellen und Grafiken erstellt und Druck.
Es wird mit bem Befehl CANVAS gedruckt. Das ganze geht auf 0,1 mm genau. Echt Klasse...


---

Folgendes unter USES hinzufügen:

Printers

---

Hierimt wählst Du, ob Du hochformat oder Querformat drucken willst.
printer.Orientation:= poPortrait
printer.Orientation:= poLandscape;

---

Folgendes aktiviert alles wichtige:

Printer.BeginDoc;//Starten des Druckauftrags
Printer.Canvas.TextOut (0, 0, ' ');
SetMapMode (Printer.Canvas.Handle, MM_LOMETRIC);//Damit wird die Druckausgabe auf Zehntel-Millimeter umgeschaltet
Printer.Canvas.Font.Name := 'Arial';
SetTextAlign (Handle, TA_LEFT + TA_TOP);//Textausrichtung links oben


---

Nun kannst Du mit Printer.canvas.textout(100,-100,'abc')... oder printer.canvas.lineto.... die Daten ausgeben.

---

Folgendes und der Druck geht los:

Printer.EndDoc;

---

Axo, ganz wichtig: Printer.canvas.textout(100,-100,'abc')... Die zweite Zahl muß immer negativ sein...

mfg
DennisB
 
  • Drucken mit Delphi Beitrag #3
O

O Love

Bekanntes Mitglied
Dabei seit
08.04.1999
Beiträge
2.286
Reaktionspunkte
0
Kurze Frage: Warum nutzt ihr nicht die QuickReports? Wenn sie auch Mist und buggy sind, wenn es ins Detail geht, aber für den schnellen Ausdruck zwischendurch bieten sie doch eine Menge Möglichkeiten...

O Love
 
  • Drucken mit Delphi Beitrag #5
M

misterjo

Mitglied
Dabei seit
25.12.2001
Beiträge
11
Reaktionspunkte
0
Hallo Leute,

mit diese QuickReports kann man ja wohl einiges machen, aber wenn ich ehrlich bin blicke ich da noch nicht durch. Wäre schön, wenn ihr mir mal ein Beispiel geben könntet, verleicht verstehe ich ja dann mehr.
Ausserdem sehen die Dinger sehr datenbankorientiert aus und ich habe keine DB!

Das mit dem TextAlign und der negativen y-Koordinate werde ich ausprobieren. Danke!
Welchen Sinn macht das TextOut(0,0, '') nach BeginDoc?

Viele Grüße

J. Mehren
 
  • Drucken mit Delphi Beitrag #6
D

Dennis[B]

Bekanntes Mitglied
Dabei seit
05.01.2001
Beiträge
1.422
Reaktionspunkte
0
Ort
nix
Hi

Weiß nicht so genau. Aber wenn man das wegläßt soll man angeblich bei einigen Druckern probleme bekommen. Und stören tut's ja auch nicht...

mfg
DennisB
 
Thema:

Drucken mit Delphi

ANGEBOTE & SPONSOREN

https://www.mofapower.de/

Statistik des Forums

Themen
213.180
Beiträge
1.579.174
Mitglieder
55.879
Neuestes Mitglied
stonetreck
Oben