Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Ein Bereich einer Form drucken? (https://www.delphipraxis.net/68473-ein-bereich-einer-form-drucken.html)

smart 30. Apr 2006 09:29


Ein Bereich einer Form drucken?
 
Ich möchte gern eine Form mit allem was auf der Form ist ausdrucken, aber nur einen bestimmten Bereich. Hat Einer von Euch einen Tipp, wo man da ansetzen muss?

Gruß
Heike

Der_Unwissende 30. Apr 2006 10:39

Re: Ein Bereich einer Form drucken?
 
Hi,
was soll ich sagen, ja hab eine Idee. Hast Du auch eine? Ich meine mit der Anzahl an Beiträgen sollte Dir doch klar sein, dass jetzt das Übliche kommt. Was hast Du schon versucht? Was genau hast Du dir schon angeschaut (Drucken, Bereich einer Form, ...)? Was genau weißt du dort nicht?

Also was Drucken angeht, findest du über die Forumsuche wahrscheinlich eine Menge. Wie man einen Teil des Bildschirms kopiert (siehe Screenshot) auch. Wo dein Form sich befindet weißt Du sicher selbst (Top, Left) und nun ja, der Ausschnitt wird Dir sicherlich auch bekannt sein.

Gruß Der Unwissende (der nicht ausschließt, dass du auch das gesamte Problem per Forensuche finden könntest)

smart 30. Apr 2006 10:51

Re: Ein Bereich einer Form drucken?
 
Die Druck-Metoden hier im Forum habe ich natürlich schon getestet. Helfen aber nicht wirklich! Ich habe ein HintergrundImage. Auf diesesem liegen ander, kleinere Images. Jetzt möchte das Hintergrundimage mit den Kleineren sozusagen michschen und dann ausdrcken. Da alle Images auf der gleichen Form liegen, dachte ich, einfach die Form ausdrucken, was einfach ist. Aber leider hat man da z.B. die Bedienellemente mit drauf. Zugeben muss ich, dass ich mich mit Druckfunktionen in Delphi leider nicht auskenne.

Gruß
Heike

Der_Unwissende 30. Apr 2006 17:32

Re: Ein Bereich einer Form drucken?
 
Also vielleicht verstehe ich dein Problem einfach nur falsch, aber worin liegt es genau?
Also ich kenne nicht mehr die Artikel der DP zum Thema ausdruck, aber um es mal kurz zu fassen, du arbeitest einfach nur mit einem Canvas. Ob dies nun von einem Drucker kommt oder nicht kann dir dank OOP vollkommen egal sein. Wie man mit einem Canvas arbeitet weißt du sicherlich aus Arbeiten mit Bitmaps (ansonsten wirst du dazu sicherlich eine Menge im Netz finden).
Wenn du die Bedienelemente nicht möchtest, dann kopier sie einfach nicht mit.
Wie du das Form kopierst denke ich weißt du schon (wenn ich dich richtig verstanden habe). Wenn du nun nicht den gesamten Bereich eines Bildes möchtest, dann gibt es die Funktion BitBlt (und viele andere), mit der kannst du den Inhalt eines Canvas auf ein anderes kopieren. Dazu übergibst du das Handle des Ziels, die Ziel X, Y Koordinaten, Breite und Höhe des Ziels, das Handle der Quelle und hier die Startkoordinaten sowie den Modus (wie kopiert wird).
Wenn du nun also weißt wie groß das zu kopierende Image (das große im Hintergrund ist) und wo dieses anfängt, kannst du dir leicht eine Bitmap erstellen, die dessen größe besitzt und den entsprechenden Ausschnitt der Form reinkopieren

Delphi-Quellcode:
var formBitmap : TBitmap;
    target : TBitmap;
begin
  // wie auch immer du dir dein Form als Bitmap holst
  formBitmap := getFormAsBitmap;
 
  // ziel mit Größe der Bitmap, auf der die kleinen liegen
  target := TBitmap.Create;
  target.Width := self.ImageBackground.Width;
  target.Height := self.ImageBackground.Height;
 
  BitBlt(target.Canvas.Handle, 0, 0, target.Width, target.Height, formBitmap.Canvas.Handle, self.ImageBackground.Left, self.ImageBackground.Top, SRCCOPY);
  // und jetzt drucken
  ...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 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