Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Drucken der Programm Oberfläche (https://www.delphipraxis.net/118406-drucken-der-programm-oberflaeche.html)

foofighter85 7. Aug 2008 10:21


Drucken der Programm Oberfläche
 
hab bei meinem programm jetzt auch die Option PrintDialog eingefugt und es wird auch das Fenster geöffnet für den Dialog...jedoch wenn ich auf "Drucken" klicke passiert nichts.
Gedruckt werden soll lediglich die Oberfläche des Programms.

hab das ganze bis jetzt nur soweit realisiert, da ich sonst keine Ahnung habe vom Drucken bei Delphi.

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
PrintDialog1.Execute;
end;


wäre cool, wenn mir jemand weiterhelfen könnte

SaFu 7. Aug 2008 10:23

Re: Drucken der Programm Oberfläche
 
Dein Printdialog ist dafür da um dir deinen Drücker zu wählen, den kannst aber auch rauswerfen und einfach nur

Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Form1.Print;
end;
Probieren :zwinker:

Gruß Sascha

DeddyH 7. Aug 2008 10:24

Re: Drucken der Programm Oberfläche
 
In welchem Thread soll es denn nun weitergehen?

SaFu 7. Aug 2008 10:28

Re: Drucken der Programm Oberfläche
 
@DaddyH
Jetzt hast du Ihn verschreckt und er ist abgehauen :mrgreen:

DeddyH 7. Aug 2008 10:33

Re: Drucken der Programm Oberfläche
 
BTW:
Zitat:

Zitat von fuknersascha
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Form1.Print;
end;

Besser keine benannten Instanzen verwenden, sondern entweder
Delphi-Quellcode:
self.Print;
oder einfach nur
Delphi-Quellcode:
Print;

foofighter85 7. Aug 2008 10:35

Re: Drucken der Programm Oberfläche
 
wird das denn auch direkt zurechtgeschnitten für eine DINA4 Seite ?
hab das jetzt probiert und das ist nicht alles komplett drauf

DeddyH 7. Aug 2008 10:36

Re: Drucken der Programm Oberfläche
 
Da wird nichts zugeschnitten, das musst Du schön alles selbst ausrechnen.

foofighter85 7. Aug 2008 10:38

Re: Drucken der Programm Oberfläche
 
und wie kann ich da vorgehen? also meine oberfläche hat die Maße 930 x 1400

DeddyH 7. Aug 2008 10:47

Re: Drucken der Programm Oberfläche
 
Das ist nicht ganz trivial. Deine Maße sind in Pixeln, der Drucker gibt Dir auf Anfrage seinen druckbaren Bereich in 1/10 mm zurück. Eins von beiden musst Du also ins andere Format konvertieren (z.B. mit Hier im Forum suchenSetMapMode). Danach musst Du Dir ausrechnen, um welchen Faktor Du das Bild ggf. verkleinern musst und dies dann tun (Hier im Forum suchenStretchBlt). Anschließend kannst Du das Bild ausdrucken, indem Du es auf der Zeichenfläche (Canvas) des Druckers ausgibst.

[edit] Eins von vielen Tutorials zu TPrinter habe ich gerade hier gefunden. [/edit]

foofighter85 7. Aug 2008 11:01

Re: Drucken der Programm Oberfläche
 
hab das nun so gelöst....


procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
PrintDialog1.Execute;
Form1.PrintScale := poPrintToFit;
Form1.Print;
end;


kann ich das nun noch auf querformat umstellen oder geht das nur über PrinterSetupDialog?

WIng2005 7. Aug 2008 11:02

Re: Drucken der Programm Oberfläche
 
Hallo foofighter85,

ich hatte das ganze bei mir so umgesetzt:

Delphi-Quellcode:
procedure TMainForm.Screenshotdrucken1Click(Sender: TObject);
var form:TBitmap;
    MyFormat : Word;
    AData : THandle;
    APalette : HPALETTE;
begin
try
try
mainform.PrintScale:=(poPrintToFit);
form:=Mainform.GetFormImage;
printer.Orientation:=poLandscape;
if PrintersetupDialog1.Execute then //mainform.print;
Begin
  try
    printer.BeginDoc;
    printer.canvas.stretchdraw(rect(0,0,printer.pagewidth,printer.pageheight),form);
  finally
    printer.EndDoc;
  end;
end
else //Nutzer bricht Druck-Dialog ab -> Bild verbleibt in Zwischnablage
Begin
  form.SaveToClipBoardFormat(MyFormat,AData,APalette);
  ClipBoard.SetAsHandle(MyFormat,AData);
end;
finally
  form.Free
end;  
except
Fehler_Durchgefuehrung; //Fehlermeldung ausgeben
end;
end;
Wenn der Nutzer hier den Druckdialog abbricht, bleibt die Form als Bild in der Zwischenablage....so könnte man diese in anderen Programmen nutzen...
Vielleicht nützt es Dir ja was....

MFG
Steffen

SaFu 7. Aug 2008 11:04

Re: Drucken der Programm Oberfläche
 
Zitat:

Zitat von DeddyH
BTW:
Zitat:

Zitat von fuknersascha
Delphi-Quellcode:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Form1.Print;
end;

Besser keine benannten Instanzen verwenden, sondern entweder
Delphi-Quellcode:
self.Print;
oder einfach nur
Delphi-Quellcode:
Print;

mach das noch also Form1. weglassen

WIng2005 7. Aug 2008 11:05

Re: Drucken der Programm Oberfläche
 
@foofighter85: schau dir mal printer.orientation an

MFG
Steffen

foofighter85 7. Aug 2008 11:15

Re: Drucken der Programm Oberfläche
 
alles klar....vielen dank erstmal :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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