Hallo,
ich erstelle ein Chart zur Laufzeit. Jetzt habe ich ein Problem, dass ich die Linien nicht über die Balken bekomme.
Hat jemand eine Idee wie ich das machen könnte.
Hier mal meine bisherige Funktion:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50:
| procedure TfrmSettings.VorschauData(Chart:TChart; DiagrammID:ShortString); var Kreis: TPieSeries; Balken: TBarSeries; Linie: TLineSeries; LastTypID: Integer; begin LastTypID := 0; Chart.SeriesList.Clear; AdoQuery1.SQL.Clear; AdoQuery1.SQL.Add('SELECT Series.*, Data.* FROM Series INNER JOIN Data ON Series.SeriesID = Data.SeriesID WHERE ChartID=' + DiagrammID + ' ORDER BY Series.SeriesID'); AdoQuery1.Active := true; while not AdoQuery1.Eof do begin if LastTypID <> AdoQuery1.FieldByName('TypID').AsInteger then begin if AdoQuery1.FieldByName('TypID').AsInteger = 1 then begin Linie := TLineSeries.Create(self); Linie.ParentChart := Chart; Linie.SeriesColor := GetFarbe(AdoQuery1.FieldByName('Farbe').AsString); Linie.Title := AdoQuery1.FieldByName('Titel').AsString; end; if AdoQuery1.FieldByName('TypID').AsInteger = 2 then begin Balken := TBarSeries.Create(self); Balken.ParentChart := Chart; Balken.SeriesColor := GetFarbe(AdoQuery1.FieldByName('Farbe').AsString); Balken.Title := AdoQuery1.FieldByName('Titel').AsString; end; if AdoQuery1.FieldByName('TypID').AsInteger = 3 then begin Kreis := TPieSeries.Create(self); Kreis.ParentChart := Chart; Kreis.SeriesColor := GetFarbe(AdoQuery1.FieldByName('Farbe').AsString); Kreis.Title := AdoQuery1.FieldByName('Titel').AsString; end; end; if AdoQuery1.FieldByName('TypID').AsInteger = 1 then Linie.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString); if AdoQuery1.FieldByName('TypID').AsInteger = 2 then Balken.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString); if AdoQuery1.FieldByName('TypID').AsInteger = 3 then Kreis.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString); LastTypID := AdoQuery1.FieldByName('TypID').AsInteger; AdoQuery1.Next; end; end; |