Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TCharts in der Druckvorschau (https://www.delphipraxis.net/166001-tcharts-der-druckvorschau.html)

delphinewbie 25. Jan 2012 14:05

TCharts in der Druckvorschau
 
Hallo,
ich habe bspw. in Form1 mehrere Charts, die ich in unterschiedlichen Layouts (1, 2, 3 oder 4 Charts auf einer Seite, dazu noch Hoch- oder Querformat) ausdrucken möchte. Dazu soll vorher eine Druckvorschau möglich sein.
Ich habe es bisher so gelöst, dass ich in einem neuen Form ein Shape platziert habe und darin im Prinzip alles entweder auf dem Shape oder auf dem Drucker (drucker.canvas) nochmal neu zeichne, sowohl den Text, als auch die Charts. Langsam wächst mir der Aufwand aber über den Kopf, die eigentlich fertigen Charts aus Form1 nochmal Strich für Strich in einer ansprechenden Form zu zeichnen.
Gibt es eine Möglichkeit, so ein Chart in das Shape gezielt (gemäß notwendiger Koordinaten) zu kopieren und anschließend auszudrucken ?
Ich habe auch schon versucht, im Shape ein TChart zu setzen und in dieses die Daten aus Form1 nochmal reinzuschreiben (series1.addxy(...).
Doch dann liegt das Chart immer hinter dem Shape.
Ich hoffe, es gibt da eine elegante Lösung und ich muss nicht tatsächlich nochmal alles selbst zeichnen.

Vielen Dank im Voraus

mkinzler 25. Jan 2012 14:08

AW: TCharts in der Druckvorschau
 
Verwendest du ein Reportsystem ( RAVE, QR, FR, ...)?

delphinewbie 25. Jan 2012 14:15

AW: TCharts in der Druckvorschau
 
Nein, die Daten werden alle aus einer Datei eingelesen und entsprechend eines Berechnungsalgorithmus verarbeitet und die Ergebnisse in Charts dargestellt. Ich weis nicht, ob sich dafür ein Reportsystem anbieten würde ?

MfG

Darlo 25. Jan 2012 14:30

AW: TCharts in der Druckvorschau
 
Hi,

ich benutze TChart und Quickreport zusammen. Im Ordner vom TChart ist eine QRChart-Komponente. Funktioniert super.
Mehrere Seiten kann man mit einen Compositereport zusammenfassen.

delphinewbie 25. Jan 2012 17:08

AW: TCharts in der Druckvorschau
 
@Darlo,
Danke, werde ich mal probieren. Habe aber meine Bedenken, ob ich da meine verschiedenen Layouts gestalten kann und vor allem, ob man so ein TChart auch um 90 bzw. 270° drehen kann, wenn man eine Ausgabe im Querformat benötigt. Aber Versuch macht klug...

MfG

Darlo 26. Jan 2012 11:11

AW: TCharts in der Druckvorschau
 
Quickreport unterstützt Hoch- und Querformat. Alternative kannst Du ja die TCharts als Bild exportieren, drehen und einfügen.

delphinewbie 26. Jan 2012 11:18

AW: TCharts in der Druckvorschau
 
Hi,
ich bin schon fleißig am Experimentieren. Aber schon sind erste Fehler da:
Ich bekomme beim Erstellen der Series im QRChart mit z.B:
Code:
for z:=1 to 50 do begin
   qrchart1.Chart.Series[1].addxy(z,z*z,'',clBlack);
  end;
eine Fehlermeldung: 'Listenindex überschreitet das Maximum (1)'.
Keine Ahnung, was da gemeint ist. Bezieht sich das auf die series ?
Muß ich da noch was voreinstellen ?

MfG

Zusätzlich habe ich auch das OnNeedData-Ereignis wie folgt gesetzt:
Code:
procedure TForm13.QuickRep1NeedData(Sender: TObject;
var MoreData: Boolean);
begin
MoreData:=(z < 50);
inc(z);
end;
MfG

Darlo 26. Jan 2012 11:24

AW: TCharts in der Druckvorschau
 
Vielleicht Series[0] statt Series[1]?
Code:
qrchart1.Chart.Series[0].addxy(z,z*z,'',clBlack);

delphinewbie 26. Jan 2012 11:27

AW: TCharts in der Druckvorschau
 
Nee,
mit series[0] macht er den Report garnicht mehr auf...

Nun sehe ich, dass im OI die Eigenschaft QRChart1.Chart auf (TQRDBChart) gesetzt ist.
Könnte es daran liegen, dass irgendwie immer Werte aus einer Datenbank erwartet werden ?
Wie kann ich das änder?

delphinewbie 26. Jan 2012 14:04

AW: TCharts in der Druckvorschau
 
Erstmal gelöst:
Habe das OnNeedData-Ereignis wieder rausgenommen und das Füllen des Charts in das Ereignis QuickRep1.BeforePrint
gesetzt:
Code:
procedure TForm13.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
var
i: integer;
begin
for i:=1 to anz_mw do
qrchart1.Chart.Series[1].AddXY(i,messwerte[messkanal-1,i],'',clBlack);
end;
Vllt. geht es auch noch eleganter. Aber ich bin erstmal zufrieden...

Danke an alle


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.
Seite 1 von 3  1 23      

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