Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Tchart drucken im Querformat
Bronstein - Di 14.03.06 10:11
Titel: Tchart drucken im Querformat
Möchte ein TChart drucken. Es soll auf eine Din A4 Seite gedruckt werden und im Querformat. Das Diagramm sollte möglichst die ganze Seite ausfüllen.
Habe hier mal ein bisschen Code im Internet gefunden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var rect1, rect2 : TRect; Printer: TPrinter; hoehe, laenge : integer; begin rect1.Left := 0; rect1.Top := 0; rect1.Right := Printer.PageWidth-1; rect1.Bottom := Printer.PageHeight-1;
Chart1.PrintRect(rect1); end; |
Das funktioniert aber nicht.
Bronstein - Di 14.03.06 16:05
Oder gibt es einen Möglichkeit, dass ich zwei Diagramme auf eine Seite bringe.
So habe ich mein Diagramm jetzt schonmal auf eine schöne größe gebracht, leider halt nur Hochkant und nicht im Querformat.
Jetzt habe ich aber noch ein zweites Diagramm, wie bekomm ich dies jetzt per Code auf die gleiche Seite wie mein erstes diagramm:
Delphi-Quelltext
1: 2: 3: 4: 5:
| rect1.Left := 0; rect1.Top := 0; rect1.Right := 4800; rect1.Bottom := 2600; Chart1.PrintRect(rect1); |
Bronstein - Di 14.03.06 21:51
Hat niemand eine Ahnung wie das funtionieren könnte?
Habe noch eine andere Idee, da ich ja zwei Diagramme habe könnte ich auch beide auf eine Seite machen, aber wie bekomme ich zwei Diagramme auf eine Seite?
Bronstein - Mi 15.03.06 11:58
Habe jetzt was herrausgefunden, mit dem man das Diagramm im Querformat druckt, jedoch weiß ich jetzt nicht wie ich die Größe des Diagramms angeben kann das ausgedruckt werden soll.
Ich möchte ja, dass das Diagramm den kompletten Platz des Blattes ausfüllt.
Hier der Code zum Querformat drucken:
Delphi-Quelltext
1:
| Chart1.PrintLandscape; |
Bronstein - Fr 04.08.06 16:01
Ich wei jetzt zwar wie man in Querformat druckt, auswählen auf was er druckt, A3 oder A4.
Das drucken im Querformat geht ja folgendermaßen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var x,y:integer; begin printer.orientation:=polandscape; x:=printer.pagewidth-1; y:=printer.pageheight-1; printer.begindoc; chart1.printpartial(rect(0,0,x,y)); printer.enddoc; end; |
Wie kann ich hier jetzt angeben, dass er auf A3 drucken soll
alzaimar - Fr 04.08.06 17:20
Sollte das nicht alles über den Printmanager einzustellen sein? Du musst dem dem TChart doch nur den Druckbereich mitteilen, und dann das Teil ausdrucken, oder?
Bronstein - Fr 11.08.06 13:15
Habe jetzt folgende Lösung angewandt:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| var bmp , TargetBitmap: TBitmap; begin bmp := TBitmap.Create; BMP.Assign(frmPMJ.GetFormImage); TargetBitmap := TBitmap.Create; TargetBitmap.Height := frmPMJ.PageControl1.Height-41; TargetBitmap.Width := frmPMJ.PageControl1.Width-26; BitBlt(TargetBitmap.Canvas.Handle, 0, 0, frmPMJ.PageControl1.Width, frmPMJ.PageControl1.Height-20, bmp.Canvas.Handle,frmPMJ.PageControl1.Left+12, frmPMJ.PageControl1.Top+33, SRCCOPY); IF PrintDialog1.Execute THEN BEGIN printer.orientation:=polandscape; Printer.BeginDoc; Printer.Canvas.StretchDraw(RECT(0,0,Printer.PageWidth,Printer.PageHeight), TargetBitmap); Printer.EndDoc; end; |
mikhal - Fr 11.08.06 14:40
Folgendes Schnipsel aus einem meiner Projekte. Wochenreihe ist ein TChart.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| uses ..., Printers,... ... if Wochenreihe.Visible then begin Wochenreihe.Foot.Text.clear; Wochenreihe.Foot.Text.Add('Vertraulich! Nur für autorisiertes Personal!'); Printer.Orientation := poLandscape; Wochenreihe.PrintRect(Rect(0,0,Printer.PageWidth-1,Printer.PageHeight-1)); Wochenreihe.Foot.Text.clear; end... |
Funktioniert bei mir einwandfrei.
Mikhal
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!