Aber noch ganz kurz zum Prinzip zum Drucken.
Am einfachsten machst du es dir, wenn du eine Methode erzeugst, die für die eigentliche Ausgabe zuständig ist (also was genau angezeigt werden soll). Die bekommt als Argument halt einen TCanvas und zeichnet dort etwas rauf.
Delphi-Quellcode:
procedure printSomething(const Canvas : TCanvas);
begin
if assigned(Canvas) then
begin
// Zeichne irgendwas
end;
end;
Dann hast du an einer anderen Stelle den Aufruf des Druckerdialogs und der sieht dann so aus
Delphi-Quellcode:
procedure printOnPrinter;
begin
if self.PrinterDialog1.Execute then
begin
Printer.BeginDoc;
print(Printer.Canvas);
Printer.EndDoc;
end;
end;
Vielleicht siehst du hier schon den Vorteil dieser rangehensweise (kenne deine ja nicht), aber du kannst so auch leicht eine Vorschau erstellen. Statt einem PrinterCanvas übergibst du dort dann halt einen Bitmap-Canvas und zeigst das entsprechende Bitmap an.
Bei mir klappt das so jedenfalls mit jedem beliebigen Drucker.
Gruß Der Unwissende