Hallo,
ich erstelle ein Chart zur Laufzeit. Jetzt habe ich noch mehrere Probleme
1.) Ich möchte, dass die Linien über die Balken gehen, da man sonst die Linien so schlecht erkennt. Sprich die Linien in den Vordergrund setzen
2.) Wie kann ich angeben, dass sich z.b. ein Balken nicht auf die linke sondern auf die rechte Achse bezieht
Hat jemand eine Idee wie ich das machen könnte.
Hier mal meine bisherige Funktion:
Delphi-Quellcode:
procedure TfrmSettings.VorschauData(Chart:TChart; DiagrammID:ShortString);
var
Kreis: TPieSeries;
Balken: TBarSeries;
Linie: TLineSeries;
LastTypID: Integer;
begin
//Series zeichnen und mit Werten belegen
LastTypID := 0;
Chart.SeriesList.Clear; //alle Series aus dem Diagramm löschen
AdoQuery1.SQL.Clear;
//AdoQuery1.SQL.Add('Select * FROM Series WHERE ChartID=' + pString(Combobox2.Items.Objects[ComboBox2.ItemIndex])^);
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 //Linie
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 //Balken
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 //Kreis
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
Linie.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString);
if AdoQuery1.FieldByName('TypID').AsInteger = 2 then //Balken
Balken.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString);
if AdoQuery1.FieldByName('TypID').AsInteger = 3 then //Kreis
Kreis.Add(AdoQuery1.FieldByName('Wert').AsFloat, AdoQuery1.FieldByName('Beschriftung').AsString);
LastTypID := AdoQuery1.FieldByName('TypID').AsInteger;
AdoQuery1.Next;
end;
end