Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Komplettes Formular ausdrucken? (https://www.delphipraxis.net/102630-komplettes-formular-ausdrucken.html)

Borschti 2. Nov 2007 14:54

Re: Komplettes Formular ausdrucken?
 
War ich also doch auf dem falschen Weg...hab die Eingaben miteinander Vertauscht :oops:

Nun eine letzte Frage habe ich doch noch zu dem Thema, und zwar wie weit die X und Y Achsen bei Canvas gehen...genauer gesagt will ich damit versuchen das Bild auf dem Ausdruck zu Zentrieren o. gibts da vielleicht sogar eine direkte Anweisung?

Deep-Sea 5. Nov 2007 07:24

Re: Komplettes Formular ausdrucken?
 
Zitat:

Zitat von Borschti
Nun eine letzte Frage habe ich doch noch zu dem Thema, und zwar wie weit die X und Y Achsen bei Canvas gehen...genauer gesagt will ich damit versuchen das Bild auf dem Ausdruck zu Zentrieren o. gibts da vielleicht sogar eine direkte Anweisung?

In dem Fall helfen dir Printer.PageWidth und Printer.PageHeight :wink:

Borschti 5. Nov 2007 14:17

Re: Komplettes Formular ausdrucken?
 
Danke, sorry das ich jetzt erst zurückschreibe, hatte keinen PC übers Wochenende.

Ich habe deinen mal nach den Befehlen gegoogelt und bin auf folgendes (als einzig sinnvolles) Ergebnis gekommen:

Delphi-Quellcode:
Printer.Canvas.StretchDraw(Rect((Printer.PageWidth - Bitmap.Width) div 2, (Printer.PageHeight - Bitmap.Height) div 2, Bitmap.Width*10, Bitmap.Height*8), Bitmap);
Also, WENN ich das jetz endlich richtig verstanden habe (wovon ich ausgehe...) sind die ersten 2 Parameter da, um anzugeben welche Position der Ausdruck auf dem Blatt haben soll und die letzten zwei dazu da um die letztendliche größe auf dem Papier zu bestimmten.

Aber wieso verzehrt dann das Gesamte Druckbild wenn ich
Delphi-Quellcode:
 (Printer.PageWidth - Bitmap.Width) div 2, (Printer.PageHeight - Bitmap.Height) div 2, ...)
anstelle von (0, 0, ...) einfüge, wenn ich nämlich mit der zweiten Variante mein Programm starte und das Formular ausdrucke ist das Druckbild vollkommen normal.
Aber die erste Variante ist meines erachtens nicht verkehrt... :shock:

Was ist da bloß falsch...ich habe schon alle möglichen Varationen versucht aber der Ausdruck ist trotzdem nicht Zentriert :wall:

Deep-Sea 5. Nov 2007 14:41

Re: Komplettes Formular ausdrucken?
 
Zitat:

Zitat von Borschti
Also, WENN ich das jetz endlich richtig verstanden habe (wovon ich ausgehe...) sind die ersten 2 Parameter da, um anzugeben welche Position der Ausdruck auf dem Blatt haben soll und die letzten zwei dazu da um die letztendliche größe auf dem Papier zu bestimmten.

Net ganz. Die ersten beiden (Left und Top) geben an, wo die obere linke Ecke hin soll, richtig. Aber die anderen beiden (Right und Bottom) geben nicht die Größe an, sondern die untere Rechte Ecke. Sprich Rect(10, 10, 9, 9) wäre nicht 9 Pixel groß, sondern nur einen.

Borschti 6. Nov 2007 07:46

Re: Komplettes Formular ausdrucken?
 
Ah ok...das erklärt natürlich einiges :/

Borschti 7. Nov 2007 15:02

Re: Komplettes Formular ausdrucken?
 
Hallo mal wieder :-D

nachdem ich mich mit StretchDraw mm für mm vorgetastet hatte und trotzdem keinen Schritt näher an mein Ziel gekommen bin das der Ausdruck auf dem Papier Zentriert ist versuche ich nun die Bitmap vorher zu vergrößern und dann mit Draw den Ausdruck zu Zentrieren, dies hat aber nur halbwegs geklappt denn der Ausdruck ist jetzt zwar Zentriert und die Druckfläche an sich entspricht auch meinen Vorstellungen aber das Formular an sich ist nur ganz klein links oben in der Ecke abgebildet...

Hier mal eine kleine Abbildung so wie es aussieht (hab hier leider keinen Scanner...):
http://foto.arcor-online.net/palb/al...6632336263.jpg


Und hier auch der entsprechende Code Ausschnitt:

Delphi-Quellcode:
procedure TForm1.Drucken1Click(Sender: TObject);
begin

 if PrintDialog1.execute
    then
      Bitmap := GetFormImage;
     try
      Clipboard.Assign(Bitmap);
      Bitmap.Height := Bitmap.Height * 7; //hier wird die größe verändert
      Bitmap.Width := Bitmap.Width * 8; //hier auch
     with Printer do begin
      BeginDoc;
      Printer.Canvas.Draw((PageWidth - Bitmap.Width) div 2, (PageHeight - Bitmap.Height) div 2, Bitmap);
      // und hier wird der Ausdruck dann Zentriert
      EndDoc;
    end;
    finally
      Bitmap.Free;
    end;

end;
Ich habe keine Ahnung wo dran das Liegen könnte, kennt das Problem vielleicht jemand oder weiß eine Lösung :?:

Deep-Sea 7. Nov 2007 15:11

Re: Komplettes Formular ausdrucken?
 
Zitat:

Zitat von Borschti
Delphi-Quellcode:
[...]
      Bitmap.Height := Bitmap.Height * 7; //hier wird die größe verändert
      Bitmap.Width := Bitmap.Width * 8; //hier auch
[...]

Ich bin mir nicht sicher, aber ich glaube, dass du zwar die Bitmap an sich größer machst, aber das Bild in ihr vergrößert sich deswegen nicht.

Borschti 8. Nov 2007 08:10

Re: Komplettes Formular ausdrucken?
 
Hmm ja, soweit war ich auch aber wenn ich bei google oder in verschiedenen Tutorials suche finde ich keine wirklich hilfreiche Antwort.
Nur wie kann ich jetzt die vom Formular erstellte Bitmap da anpassen, ich hab gedacht das geht mit

Delphi-Quellcode:
Bitmap.Height := Bitmap.Height * 7;
Bitmap.Width := Bitmap.Width * 8;
Da ja hier die größe des von mir erstellten Bitmaps verändert wird oder?

Also hat da vielleicht jemand einen Ansatz wie das Problem behoben werden kann?

mfg
Borschti

Deep-Sea 8. Nov 2007 08:15

Re: Komplettes Formular ausdrucken?
 
http://www.swissdelphicenter.ch/de/showcode.php?id=1806

Aber was denkst du, was die Funktion vom Link nutzt? Richtig! StretchDraw :wink:

Borschti 12. Nov 2007 15:05

Re: Komplettes Formular ausdrucken?
 
An dieser Stelle nochmal vielen Dank für deine Hilfe und die Geduld die du mit dir gebracht hast ;)

Also ich habe jetzt eine andere Lösung gefunden und zwar ein paar recht simple Rechnungen, hier mal meine Lösung falls es jemanden Interessiert bzw. mal jemand das gleiche Problem haben sollte:

Delphi-Quellcode:
Printer.Canvas.StretchDraw(Rect( 100, (PageHeight div 4)*(3 div 2), PageWidth - 100, (PageHeight div 4)*3 ), Bitmap);
Ich habe einfach das Blatt in gleiche große Teile aufgeteilt und hatte somit nichtmehr das Problem mit den Pixeln, je nach Form eures Formulars solltet ihr die Parameter verändern, sonst könnte euer Formular ziemlich verzehrt aussehn :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.
Seite 3 von 4     123 4      

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