AGB  ·  Datenschutz  ·  Impressum  







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

Ein Bereich einer Form drucken?

Ein Thema von smart · begonnen am 30. Apr 2006 · letzter Beitrag vom 30. Apr 2006
Antwort Antwort
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#1

Ein Bereich einer Form drucken?

  Alt 30. Apr 2006, 09:29
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
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Ein Bereich einer Form drucken?

  Alt 30. Apr 2006, 10:39
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)
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Ein Bereich einer Form drucken?

  Alt 30. Apr 2006, 10:51
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
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Ein Bereich einer Form drucken?

  Alt 30. Apr 2006, 17:32
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;
  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 17:44 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