Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Drucken eines Panels (skaliert) (https://www.delphipraxis.net/146921-drucken-eines-panels-skaliert.html)

Delphi-Narr 29. Jan 2010 13:06


Drucken eines Panels (skaliert)
 
Hallo,
ich bräuchte noch einmal Hilfe:

Ich habe auf einem Panel verschiedene Elemente. Daneben ist ein Button "Drucken".
Dieser Button ruft jetzt den Printdialog auf, der das gesamte Panel drucken soll.

Habe gegooglet und folgende Variante möchte ich benutzen:


Delphi-Quellcode:

Procedure TForm1.BildAusSchnitt(hWND: HWND; iLeft, iTop, iWidth, iHeight: integer);
var
  c: TCanvas;
begin
  BringWindowToTop(hWND);
  c:= TCanvas.Create;
  c.Handle:= GetWindowDC(hWND);
  try
    Printer.Orientation:=polandscape;
    printer.BeginDoc;
    printer.Canvas.CopyRect(Rect(0, 0, iWidth* 10, iHeight* 10), c, Rect(iLeft, iTop, iLeft+ iWidth, iTop+ iHeight));
    printer.EndDoc;
  finally
    ReleaseDC(hWND, c.handle);
    c.Free;
  end;
end;
Das klappt soweit auch, doch ist das Ergebnis nicht in Ordnung:
Man sieht nur die Hälfte, da das Panel wahrscheinlich zu groß ist (Mehr als 1000 Pixel breit)

1.: Wie kann ich den Druck so optimieren, dass das Panel automatisch auf die Größe des Blattes "verkleinert" wird?

2.: Ich möchte gerne über den im Dialog ausgewählten Drucker drucken. Was muss ich dafür noch tun?

Liebe Grüße!


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