AGB  ·  Datenschutz  ·  Impressum  







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

TChart, TLineSeries erzeugen

Ein Thema von Thanatos81 · begonnen am 11. Okt 2005 · letzter Beitrag vom 18. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Thanatos81
(Gast)

n/a Beiträge
 
#1

TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 18:19
Hi DP!

Folgender Code spuckt bei mir ne "Ungültige Zeigeroperation" aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var temp : TLineSeries;
begin
  Chart1.SeriesList.Clear;
  temp := TLineSeries.Create(Chart1);
  while not(zqDaten.EoF) do
    begin
      temp.AddXY(zqDaten.Fields.Fields[0].asFloat,zqDaten.Fields.Fields[1].asFloat);
      zqDaten.Next;
    end;
  Chart1.AddSeries(temp);
  zqDaten.First;
  zqDaten.EnableControls;
end;
Allerdings nicht beim temp := TLineSeries.Create(Chart1) oder beim Chart1.AddSeries(temp) wie ich vermutet hatte, sondern erst nach Beendigung der Prozedur

Jemand eine Idee?

Schönen Gruß,
  Mit Zitat antworten Zitat
supermuckl

Registriert seit: 1. Feb 2003
1.340 Beiträge
 
FreePascal / Lazarus
 
#2

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 18:27
temp.AddXY(zqDaten.Fields[0].asFloat,zqDaten.Fields[1].asFloat); <- so evtl ?
Das echte Leben ist was für Leute...
... die im Internet keine Freunde finden!
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#3

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 18:59
Nee, das wars leider auch nicht.

Aber ich hab nen Lösungsversuch: Ich könnte auch TDBChart nehmen, das funktioniert nämlich wie gewünscht. Allerdings steht in der Hilfe etwas davon, dss die TDBChart die BDE braucht, welche ich aber nicht nutzen möchte. Ist das ein Fehler in der Hilfe, oder stimmt die Information?

//Edit

Habe gerade festgestellt, dass noch ein seltsames Phänomen auftritt:

Wenn ich die Reihe zur Designzeit anlege und diese dann fülle bekomme ich beim Verlassen der Prozedur eine Allgemeine Schutzverletzung. Mache ich aus der Lineseries allerdings Series2 und packe eine BarSeries als Series1 dazu funktioniert alles, vorrausgesetzt ich benutze die BarSeries mit. Schmeieß ich die LineSeries (oder auch FastLine) raus, funktioniert es auch nur mit der BarSeries...

Es funktioniert auch, wenn ich die BarSeries zur Laufzeit mit dem selben Code wie oben erzeuge...

Ein ähnliches Phänomen habe ich beim TDBChart, konfiguriere ich dort meine TLineSeries in der IDE, schließt sich die IDE ohne eine Fehlermeldung. Das ganze passiert auch in nem neuen, ansonsten leerem Projekt
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 20:04
Hallo, ich habe von Datenbanken so ziemlich 0-Ahnung, aber mußt du nicht erst first aufrufen und dann dich mit next durchsteppen?

Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#5

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 20:06
Jain: wenn man von Anfang an durchsteppen will, ja. Aber man könnte auch erst zu einer Stelle springen und von da an durchsteppen.

Aber die Prozedur hatte ich nur zur besseren Übersichtlichkeit ausgelagert. Im Orignialkontext ist ein First vorhanden
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 20:09
Was machst du denn noch in deinem "Originalkontext" ? Weil so wie der code jetzt dasteht, sehe ich keinen Fehler.

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: TChart, TLineSeries erzeugen

  Alt 11. Okt 2005, 20:35
Ich erzeuge mir die Series zur Designzeit (bei TChart) und fülle sie einfach. Das klappt immer. TDBCharts kannst Du auch mit ADO oder sonstigen TDatasets benutzen. Leider ist TDBChart nicht wirklich 'datensensitiv', d.h. wenn die Tabelle per Refresh/Open neu geladen wird, musst Du die Series mit 'RefreshData' oder sowas neu zeichnen. Funktioniert dann aber auch.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#8

Re: TChart, TLineSeries erzeugen

  Alt 12. Okt 2005, 09:49
Zitat von Keldorn:
Was machst du denn noch in deinem "Originalkontext" ? Weil so wie der code jetzt dasteht, sehe ich keinen Fehler.
Da passiert das hier:
Delphi-Quellcode:
procedure TForm1.getUserData(ID : String);
begin
  zqDaten.SQL.Clear;
  zqDaten.SQL.Add('SELECT Zeitpunkt, Punkte FROM Daten WHERE userID = '+ID+' ORDER BY Zeitpunkt');
  zqDaten.Open;
end;

procedure TForm1.JvDBMaskEdit1Change(Sender: TObject);
begin
  getUserData(TjvDBMaskEdit(Sender).Text);
  zqDaten.First;
  zqDaten.DisableControls;
  Series1.Clear;
  Series2.Clear;
  while not(zqDaten.EoF) do
    begin
      Series1.AddXY(zqDaten.Fields.Fields[0].asFloat,zqDaten.Fields.Fields[1].asFloat);
      Series2.AddXY(zqDaten.Fields.Fields[0].asFloat,zqDaten.Fields.Fields[1].asFloat);
      zqDaten.Next;
    end;
  zqDaten.First;
  zqDaten.EnableControls;
end;
Das ist die Variante wie es funktioniert, da hab ich dann allerdings die BarSeries, die ich nicht möchte. Folgendes funktioniert nicht:
Delphi-Quellcode:
procedure TForm1.JvDBMaskEdit1Change(Sender: TObject);
begin
  getUserData(TjvDBMaskEdit(Sender).Text);
  zqDaten.First;
  zqDaten.DisableControls;
  Series1.Clear;
  while not(zqDaten.EoF) do
    begin
      Series1.AddXY(zqDaten.Fields.Fields[0].asFloat,zqDaten.Fields.Fields[1].asFloat);
      zqDaten.Next;
    end;
  zqDaten.First;
  zqDaten.EnableControls;
end;
Das wäre dann mit Series1 als TLineSeries.

Aber auch wenn ich das ganze in ein neues Projekt schiebe und nur oben beschriebenen Code nutze hauts nicht hin. Bei meinen anderen alten Projekten mit Paradox über BDE klappts auch mit dynamisch erzeugten Serien, da hab ich den Code ja rausgenommen.

@alzaimar
Danke für den Hinweies bezüglich des TDBCharts. Damit funktioniert es halbwegs, nur nach mehrmaligen wechselnd des Datensatzes bekomme ich auch da eine Schutzverletzung, es sei denn, na wer errät es?, ich benutze eine TBarSeries

Werde jetzt wohl das TJvChart aus der JVCL nutzen, da ich eh nicht viel brauche...
  Mit Zitat antworten Zitat
Marphy

Registriert seit: 24. Feb 2005
162 Beiträge
 
Delphi 7 Professional
 
#9

Re: TChart, TLineSeries erzeugen

  Alt 12. Okt 2005, 17:17
Hallo Thomas,
du hast vergessen, die Parent-Property der Series zu setzen...

BTW: Wenn du eh nicht viele Features brauchst, nutze am Besten die TFastLineSeries. Diese ist schneller (ach nee), bietet aber weniger Features als die TLineSeries. Näheres dazu in der Online Hilfe.

Grüße, Marco
Marco
Wo ein Wille ist, ist auch ein Weg. Aber wo ein Weg ist, ist nicht unbedingt auch ein Wille...
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#10

Re: TChart, TLineSeries erzeugen

  Alt 12. Okt 2005, 17:23
Danke für den Hinweis auf die FastLineSeries, Marco.

Aber wenn ich wie im letzt Codebeispiel die Series bereits in der IDE anlege, sollte die PArent doch gesetzt sein, oder? Werde es aber nachher mal testen, Danke!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:54 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