AGB  ·  Datenschutz  ·  Impressum  







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

Bereich aus Form in PDF drucken

Ein Thema von Kegasetu · begonnen am 30. Nov 2020 · letzter Beitrag vom 30. Nov 2020
Antwort Antwort
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#1

Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 08:07
Hallo Zusammen.
Es gibt zu diesem Thema eine Vielzahl von Beiträgen, jedoch bin ich auch nur stundenlangen probieren nicht weitergekommen. Um einen Bereich zu drucken, verwende ich im Moment diesen Code:

Delphi-Quellcode:
Procedure 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;

procedure TForm1.druckenClick(Sender: TObject);
begin
BildAusSchnitt(Form1.Handle, 60, 82, 3600, 4000);
end;
Der ist fast 1:1 aus diesem Forum "geklaut". Mein Problem ist, egal wie hoch ich die Parameter 3600 und 4000 stelle, es verändert sich nichts am Bild. Bis ca. 2600 und 3000 hat es noch funktioniert, aber ab einer gewissen Größe bleibt das Bild gleich groß.
Um eine PDF draus zu machen, habe ich einfach einen PDF-Drucker als Standard eingestellt. Ist nicht die schönste Lösung, aber es funktioniert.

Hat jemand vielleicht eine Idee, oder eine ganz andere Methode um dieses Problem zu lösen? Ich bin für alle Vorschläge offen.
Vielen Dank für Unterstützung!
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 08:11
.. wieviele Bildpunkte hat denn Dein Monitor Vertikal/Horizontal?
Spielt die Scalierung vielleicht mit?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#3

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 09:02
.. wieviele Bildpunkte hat denn Dein Monitor Vertikal/Horizontal?
Spielt die Scalierung vielleicht mit?

Grüße
Klaus
1920 x 1080

Ich habe schon an der Form gespielt, leider ohne Erfolg.
  Mit Zitat antworten Zitat
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 09:35
Wie willst du bei "nur vorhandenen 1920 * 1080 Pixel, 3600 * 4000 Pixel erstellen?
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#5

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 09:41
Wie willst du bei "nur vorhandenen 1920 * 1080 Pixel, 3600 * 4000 Pixel erstellen?
Ich weiß nicht wonach das geht, aber ich bekomme bei 1920 * 1080 einen viel zu kleinen Auschnitt der Form. Wenn ich die Werte erhöhe, wird es größer, aber nur bis zu einer bestimmten Größe.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 09:58
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
var
  FormImage: TBitmap;
  PrinterDpiHeight, PrinterDpiWidth: Integer;
  FormDpiHeight, FormDpiWidth: Integer;
  Source: TRect;
begin
  FormImage := Self.GetFormImage;
  try
    Printer.Orientation := poLandscape;
    Printer.BeginDoc;
    try
      Source := Self.ClientRect;
      PrinterDpiWidth := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX);
      FormDpiWidth := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSX);
      Source.Width := Round(Source.Width * (PrinterDpiWidth / FormDpiWidth));
      PrinterDpiHeight := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
      FormDpiHeight := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSY);
      Source.Height := Round(Source.Height * (PrinterDpiHeight / FormDpiHeight));
      Printer.Canvas.StretchDraw(Source, FormImage);
    finally
      Printer.EndDoc;
    end;
  finally
    FormImage.Free;
  end;
end;
Damit bekommst du die gesamte Form mit der 1:1 Größe wie das richtige Formular ins PDF.
Willst du das seitenfüllend haben, müsstest du noch ein bisschen an Width und Height spielen.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#7

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 10:46
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
var
  FormImage: TBitmap;
  PrinterDpiHeight, PrinterDpiWidth: Integer;
  FormDpiHeight, FormDpiWidth: Integer;
  Source: TRect;
begin
  FormImage := Self.GetFormImage;
  try
    Printer.Orientation := poLandscape;
    Printer.BeginDoc;
    try
      Source := Self.ClientRect;
      PrinterDpiWidth := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSX);
      FormDpiWidth := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSX);
      Source.Width := Round(Source.Width * (PrinterDpiWidth / FormDpiWidth));
      PrinterDpiHeight := GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
      FormDpiHeight := GetDeviceCaps(Self.Canvas.Handle, LOGPIXELSY);
      Source.Height := Round(Source.Height * (PrinterDpiHeight / FormDpiHeight));
      Printer.Canvas.StretchDraw(Source, FormImage);
    finally
      Printer.EndDoc;
    end;
  finally
    FormImage.Free;
  end;
end;
Damit bekommst du die gesamte Form mit der 1:1 Größe wie das richtige Formular ins PDF.
Willst du das seitenfüllend haben, müsstest du noch ein bisschen an Width und Height spielen.

Ich habe auf der Form etwas gezeichnet, dass ist leider nicht drauf zu erkennen. Gezeigt werden nur die Bedienelemente
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 11:17
Bitte benutze eine Paintbox zum Zeichnen. Direkt auf das Formular zu malen ist nicht zu empfehlen, wie du gerade merkst.
  Mit Zitat antworten Zitat
Kegasetu

Registriert seit: 26. Sep 2013
85 Beiträge
 
#9

AW: Bereich aus Form in PDF drucken

  Alt 30. Nov 2020, 11:58
Bitte benutze eine Paintbox zum Zeichnen. Direkt auf das Formular zu malen ist nicht zu empfehlen, wie du gerade merkst.
Ja, damit geht es ganz einfach. Danke
  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 23:40 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