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!