Einzelnen Beitrag anzeigen

Benutzerbild von Delphi-Narr
Delphi-Narr

Registriert seit: 29. Aug 2009
Ort: Duisburg
437 Beiträge
 
Delphi 2007 Professional
 
#1

Drucken eines Panels (skaliert)

  Alt 29. Jan 2010, 13:06
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!
  Mit Zitat antworten Zitat