Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi langsames Tchart (https://www.delphipraxis.net/152823-langsames-tchart.html)

PhilmacFLy 8. Jul 2010 10:22

Delphi-Version: 2005

langsames Tchart
 
Hey DP'ler

ich hab folgendes Problem:
Ich lese au einer Firebird Datenbank, Datensätze aus und schreibe diese dann auf eine TChart.
Nun dauert aber das zeichnen des Graphen sehr lange (es sind 12000 Datensätze mit je 2 Werten).
Liegt das an der TChart allgemein oder an meinem Coder? Hier der Code:

Delphi-Quellcode:
public
  arrml, arrmr: Array of Integer;

...

procedure TFRM_Messung.anzeigen;
var
zt: Integer;
begin
zt := 0;
while zt <= mx+1 do
begin
frm_messung.Ch_Messung.Series[0].AddY(arrml[zt]);
frm_messung.Ch_Messung.Series[1].AddY(arrmr[zt]);
zt := zt +1;
end;
end;
Das befüllen der beiden Arrays mach ich in einem Thread in dem ich auch die Datensätze auslese.

mquadrat 8. Jul 2010 10:26

AW: langsames Tchart
 
Schau mal ob es eine BeginUpdate und EndUpdate Methode für den Chart gibt. Da bin ich mir jetzt gerade nicht sicher. Wenn ja, BeginUpdate vor das Hinzufügen und EndUpdate dahinter. Sollte das Neuzeichnen des Charts während dem Einfügen verhindern.

mkinzler 8. Jul 2010 10:28

AW: langsames Tchart
 
Befülle mal den Chart parallel zu den Arrays. Benötigst du die Arrays überhaupt?

blackfin 8. Jul 2010 10:30

AW: langsames Tchart
 
BeginUpdate und EndUpdate gibt es für ein TChart nicht, aber du kannst mal versuchen, vor dem Zecihnen des Charts die Property
AutoRepaint
auf false zu setzen und nach dem zeichnen wieder auf true;

ULIK 8. Jul 2010 10:53

AW: langsames Tchart
 
Zitat:

Zitat von blackfin (Beitrag 1034220)
BeginUpdate und EndUpdate gibt es für ein TChart nicht, aber du kannst mal versuchen, vor dem Zecihnen des Charts die Property
AutoRepaint
auf false zu setzen und nach dem zeichnen wieder auf true;

Für das Chart nicht, aber für die Reihen (Series) schon. :-D

Grüße, Uli

PhilmacFLy 8. Jul 2010 11:01

AW: langsames Tchart
 
Zitat:

Zitat von mkinzler (Beitrag 1034217)
Befülle mal den Chart parallel zu den Arrays. Benötigst du die Arrays überhaupt?

Das hab ich probiert, das lief genau so langasam. Die Array hab ich eingefügt das es zwischen dem Thread und der Anwendung keine verschränkung gibt.

Zitat:

Zitat von blackfin (Beitrag 1034220)
BeginUpdate und EndUpdate gibt es für ein TChart nicht, aber du kannst mal versuchen, vor dem Zecihnen des Charts die Property
AutoRepaint
auf false zu setzen und nach dem zeichnen wieder auf true;

Das hat mir schon viel geholfen vielen Dank.
Zitat:

Zitat von ULIK (Beitrag 1034226)
Zitat:

Zitat von blackfin (Beitrag 1034220)
BeginUpdate und EndUpdate gibt es für ein TChart nicht, aber du kannst mal versuchen, vor dem Zecihnen des Charts die Property
AutoRepaint
auf false zu setzen und nach dem zeichnen wieder auf true;

Für das Chart nicht, aber für die Reihen (Series) schon. :-D

Grüße, Uli

Das probier ich auch noch aus vllt gehts noch schneller.

PhilmacFLy 8. Jul 2010 11:14

AW: langsames Tchart
 
ich find auch bei der series, keine BeginUpdate.

Chemiker 8. Jul 2010 19:03

AW: langsames Tchart
 
Hallo PhilmacFly,

warum benutzt Du nicht DBChart wenn die Daten von FB zur Verfügung gestellt werden.

Bis bald Chemiker

ULIK 9. Jul 2010 08:50

AW: langsames Tchart
 
Zitat:

Zitat von PhilmacFLy (Beitrag 1034231)
ich find auch bei der series, keine BeginUpdate.

Hm, also ich hab es grad mal eben mit dem TChart getested, das mit Delphi 2007 ausgeliefert wird: TeeChart 7.10.

Delphi-Quellcode:
  Series1.BeginUpdate;
  try
    Series1.Clear;
    for i := 1 to 12000 do
    begin
      Series1.AddY(Random(20));
    end;
  finally
     Series1.EndUpdate;
  end;
Aber egal, ob ich Begin/End Update verwende: bei mir geht das Zeichnen sehr schnell (Lineseries, nur Defaultwerte). Ich denke, Du hast woanders ein Problem. Hast du denn schon mal mit einem Profiler geschaut, wo die Zeit verbraten wird?


Grüße,
Uli

PhilmacFLy 9. Jul 2010 10:42

AW: langsames Tchart
 
Also ich hab extra nochmal geschaut hier in 2k5 gibts kein BeginUpdate.

Ich hab grad mal das mit dem Random werten getestet und das ging eigentlich relativ fix.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Seite 1 von 2  1 2      

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