AGB  ·  Datenschutz  ·  Impressum  







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

Drucken einer/mehrerer Groupboxen

Ein Thema von sebastian1979 · begonnen am 29. Mär 2011 · letzter Beitrag vom 30. Mär 2011
Antwort Antwort
sebastian1979

Registriert seit: 22. Jan 2010
Ort: Solingen
16 Beiträge
 
Delphi 2005 Professional
 
#1

Drucken einer/mehrerer Groupboxen

  Alt 29. Mär 2011, 15:48
Hallo!

Ich möchte gerne eine oder mehrere (vorherige Auswahl) Groupboxen drucken.

Mit Form.print geht es nicht, da dann die ganze Form gedruckt wird.

Also denke ich mit printer.canvas...
...aber wie?

Eine Groupbox brauche ich in jedem Fall und weitere 9 Stück soll man nach belieben auswählen können. Diese befinden sich in einer Scrollbox, demnach kommt ein Screenshot leider nicht in Frage.

Hat jemand ne Idee???

P.S.: in jeder Groupbox befinden sich ca. 200 DBEdit's und entsprechnede Labels, demnach macht FastRep oder QuickRep keinen Spaß zu erstellen.

Geändert von sebastian1979 (30. Mär 2011 um 08:37 Uhr)
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#2

AW: Drucken einer/mehrerer Groupboxen

  Alt 29. Mär 2011, 16:03
Hallo sebastian1979,

eine Idee: GroupBox.PaintTo
habe ich noch nie ausprobiert, ob da die Child-Controls mitgezeichnet werden, ich vermute mal...

Gruss,
blauweiss
  Mit Zitat antworten Zitat
sebastian1979

Registriert seit: 22. Jan 2010
Ort: Solingen
16 Beiträge
 
Delphi 2005 Professional
 
#3

AW: Drucken einer/mehrerer Groupboxen

  Alt 29. Mär 2011, 16:09
Vielen Dank, werde ich probieren.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Drucken einer/mehrerer Groupboxen

  Alt 29. Mär 2011, 16:10
Du kannst es ja mal mit dieser Prozedur versuche:
Delphi-Quellcode:
type TGraphicControlcracker = class(TGraphicControl);

procedure PaintControlToCanvas(control:TControl; Canvas:TCanvas; x,y:Integer);
var
   dest, src : TRect;
begin
   Assert(Assigned(control));
   Assert(Assigned(canvas));
   if control is TWinControl then
      TWinControl(control).PaintTo(Canvas.Handle, x, y)
   else if control is TGraphicControl then
   begin
      src := control.ClientRect;
      dest := src;
      OffsetRect(dest, x, y);
      Canvas.CopyRect(dest, TGraphicControlCracker(control).Canvas, src);
   end
   else
      Assert(False, 'PaintControlToCanvas: Control-Class not supported');
end;
Also dann ungefähr so:
Delphi-Quellcode:
Printer.BeginDoc;
PaintControlToCanvas(GroupBox1, Printer.Canvas, 100, 80);
...
Printer.EndDoc;
Zu beachten ist, dass die Controls eins zu eins gedruckt werden.
Bei 600dpi Druckerauflösung kann das Ergebnis sehr klein ausfallen.
Andreas
  Mit Zitat antworten Zitat
sebastian1979

Registriert seit: 22. Jan 2010
Ort: Solingen
16 Beiträge
 
Delphi 2005 Professional
 
#5

AW: Drucken einer/mehrerer Groupboxen

  Alt 30. Mär 2011, 09:31
Vielen Dank shmia,

die procedure funktionert einwandfrei, die Vergrößerung habe ich wie folgt gelöst:

Delphi-Quellcode:
  printer.Orientation := poLandscape;
  printer.BeginDoc;
  SetMapMode(Printer.Canvas.Handle, MM_ISOTROPIC);
  SetWindowExtEx(Printer.Canvas.Handle, 1, 1, nil);
  SetViewportExtEx(Printer.Canvas.Handle, 5, 5, nil); //Zoomfaktor
  PaintControlToCanvas(MHauptmaske.Auftrag, Printer.Canvas, 50, 50);
  if checkbox1.Checked = true then
  PaintControlToCanvas(MHauptmaske.GroupBox1, Printer.Canvas, 50, 70+MHauptmaske.Auftrag.Height);
  Printer.EndDoc;
Danke nochmal.

Gruss,
Sebastian
  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 20:05 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