Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Drucker druckt Druckerdialog mit (https://www.delphipraxis.net/48021-drucker-druckt-druckerdialog-mit.html)

aiguille 19. Jun 2005 15:01


Drucker druckt Druckerdialog mit
 
Hallo,
und erstmal moin,moin, bin neu hier. Hab früher in Pascal geschrieben und hab ziemlich Probleme mit den Prinzipien von Delphi. Aktuell versuche ich seit Wochen, ein Canvas auszudrucken, wobei das Bild zur Laufzeit erzeugt wurde.
Wenn ich nun das Canvas ausdrucken will (Quelltext unten) dann druckt der mir den Druckerdialog gleich mit aus. Schiebe ich den Dialog zur Seite, entsteht an der Stelle, wo der Dialog war, ein blinder Fleck auf dem Bildschirm, und der Drucker macht daraus ein graues Rechteck. Wäre froh über ne auch für einen newbie verständliche Lösung Danke + Gruss Ekbert-Joachim (EJ)


Delphi-Quellcode:
procedure TForm1.ToolButton15Click(Sender: TObject);                                      
var
SrcRect:Trect;Targetrect:Trect;
printWidth,PrintHeight:integer;

begin
  if PrintDialog1.Execute then                                                    
  begin
        printer.BeginDoc;
             SrcRect:=Rect(0,0,Paintbox1.Width,Paintbox1.Height);
             PrintWidth := MulDiv(Paintbox1.Width,printer.PageHeight,Paintbox1.Height);
               if PrintWidth < printer.PageWidth then
               PrintHeight := printer.PageHeight
             else begin
               PrintWidth := printer.PageWidth;
               PrintHeight := MulDiv(Paintbox1.Height,printer.PageWidth,Paintbox1.Width)
                  end;

             TargetRect := Rect (0,0,PrintWidth,PrintHeight);

             // Kopiert den Inhalt des PaintBox1.Canvas in das Printer1.Canvas
           
printer.canvas.CopyRect(TargetRect,Paintbox1.Canvas,SrcRect);
        printer.EndDoc;
  end;
end;
[edit=alcaeus]Delphi-Tags eingefuegt. Bitte in Zukunft selbst machen. Danke :) Mfg, alcaeus[/edit]

Khabarakh 19. Jun 2005 15:09

Re: Drucker druckt Druckerdialog mit
 
Versuch es mal so:
Delphi-Quellcode:
begin
  if PrintDialog1.Execute then                                                    
  begin
    Repaint;
    Application.ProcessMessages;
    Printer.BeginDoc;

aiguille 23. Jun 2005 09:48

Re: Drucker druckt Druckerdialog mit
 
Hi Sebastian,
merci - aber damit passiert jetzt gar nix mehr, wenn ich auf den Drucker-Dialog-OK drücke. Es kommt allerdings auch keine Fehlermeldung. Das "Repaint" hat keinerlei Wirkung, das Bild wird nicht neu aufgebaut.
:roll: + Gruss EJ

s.h.a.r.k 23. Jun 2005 20:21

Re: Drucker druckt Druckerdialog mit
 
Zeichnesch du des auf eine Form oder auf ein Image?!?

aiguille 23. Jun 2005 21:10

Re: Drucker druckt Druckerdialog mit
 
:gruebel: ich zeich' n deß auf ne paintbox, wie im Quelltext oben beschrieben...
Gruss aiguille (der seit Wochen versucht, einige Pixel auszudrucken)

jfheins 23. Jun 2005 21:16

Re: Drucker druckt Druckerdialog mit
 
Pass auf, du erzegst dir am besten ein Bitmap mit TBitmap. Dann kopierst du das im OnPaint der paintbox mit BitBlt aufs Canvas der Paintbox. Deine Muster u.a. zeichnest du dann eifach ins Bitmap und rufst anschließend PaintBox.RePaint; auf.

Drucken kannst du dann entweder, indem du das Bitmap oder den Paintboxinhalt aufs Druckercanvas malst. (am besten wieder mit BitBlt)

:zwinker:

s.h.a.r.k 24. Jun 2005 12:29

Re: Drucker druckt Druckerdialog mit
 
Zitat:

Zitat von aiguille
:gruebel: ich zeich' n deß auf ne paintbox, wie im Quelltext oben beschrieben...

:wall: Ups... hab ich leider übersehen... sry

aber die Lösung von jfheins is wohl die beste!


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