![]() |
Drucken aus einer Form
Hallo, Ihr Experten,
mit "print" ( Delphi7) kann ich den Teil einer Form ausdrucken für den die Blattgröße ausreichend ist. Gibt es eine Möglichkeit, einen Bereich der Form per Pixelangabe auszuwählen , der gedruckt werden soll? Gruß GerHil |
Re: Drucken aus einer Form
Ich würde einfach einen Screenshot der Form machen und dann kann man das Bild ja mit einem Bearbeitungsprogramm anpassen und ausdrucken.
Oder versteh ich dein Problem falsch? |
Re: Drucken aus einer Form
Hier ist ein wenig Code, hoffentlich habe ich es richtig verstanden.
Delphi-Quellcode:
uses Printers;
Procedure BildAusSchnitt(hWND: HWND; iLeft, iTop, iWidth, iHeight: integer); var c: TCanvas; begin BringWindowToTop(hWND); c:= TCanvas.Create; c.Handle:= GetWindowDC(hWND); try 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; procedure TForm1.Button1Click(Sender: TObject); begin BildAusSchnitt(Form1.Handle, 80, 10, 180, 120); end; |
Re: Drucken aus einer Form
ich hab mir an Ausdrucken auch schon die Zähne ausgebissen, bin dann auf diesen Code gestoßen
Mußte die Berechnung der Header und Imagesize noch anpassen, lief ursprünglich mit getmem, da kam aber ab und zu nur Mißt aus dem Drucker, mit GETDIBSizes funzts. PROCEDURE PrintBitmap(Canvas: TCanvas; DestRect: TRect; Bitmap: TBitmap); VAR BitmapHeader: pBitmapInfo; BitmapImage,header,bits : POINTER; HeaderSize, BitsSize: Cardinal; ImageSize : DWORD; nographics:boolean; BEGIN GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);; Bitmapheader := VirtualAlloc(nil, HeaderSize, MEM_COMMIT, PAGE_READWRITE); BitmapImage := VirtualAlloc(nil, ImageSize, MEM_COMMIT, PAGE_READWRITE); TRY GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^); StretchDIBits(Canvas.Handle, DestRect.Left, DestRect.Top, // Destination Origin DestRect.Right - DestRect.Left, // Destination Width DestRect.Bottom - DestRect.Top, // Destination Height 0, 0, // Source Origin Bitmap.Width, Bitmap.Height, // Source Width & Height BitmapImage, TBitmapInfo(BitmapHeader^), DIB_RGB_COLORS, SRCCOPY) FINALLY VirtualFree(Bitmapheader, 0, MEM_FREE); VirtualFree(bitmapimage, 0, MEM_FREE); END END {PrintBitmap}; |
Re: Drucken aus einer Form
Hallo bitsette,
hallo matashen, hallo TonyR, vielen Dank für Eure Beiträge, Ihr habt mit sehr geholfen. Der Programm von bitsetter ist ja genial. Mit ein paar Parameter-Änderungen funktionierte es ohne Probleme. Genau das habe ich gesucht. Ich versuche gerade den Code nachzuvollziehen. Nicht so einfach. Gruß GerHil |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz