AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drucken aus einer Form

Ein Thema von GerHil · begonnen am 15. Feb 2007 · letzter Beitrag vom 18. Feb 2007
Antwort Antwort
GerHil

Registriert seit: 21. Dez 2006
Ort: Molfsee
15 Beiträge
 
#1

Drucken aus einer Form

  Alt 15. Feb 2007, 19:18
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
  Mit Zitat antworten Zitat
Benutzerbild von TonyR
TonyR

Registriert seit: 17. Jun 2006
Ort: Bautzen
503 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Drucken aus einer Form

  Alt 15. Feb 2007, 22:39
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?
Es ist unmöglich, witzig zu sein ohne ein bisschen Bosheit. Die Bosheit eines guten Witzes ist der Widerhaken, der ihn haften lässt. - Georg Christoph Lichtenberg
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Drucken aus einer Form

  Alt 16. Feb 2007, 00:09
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;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Drucken aus einer Form

  Alt 16. Feb 2007, 08:16
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};
Matthias
  Mit Zitat antworten Zitat
GerHil

Registriert seit: 21. Dez 2006
Ort: Molfsee
15 Beiträge
 
#5

Re: Drucken aus einer Form

  Alt 18. Feb 2007, 16:14
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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