Autor Beitrag
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Sa 09.02.08 10:36 
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:
ausblenden volle Höhe Delphi-Quelltext
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
  //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;

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Mo 11.02.08 22:22 
Hat niemand eine Idee?

Ich habe auch noch eine weitere Frage, wie kann ich angeben, dass sich z.b. ein Balken nicht auf die linke sondern auf die rechte Achse bezieht?

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Sa 16.02.08 11:01 
Damit sich eine Linie auf die rechte Seite bezieht habe ich herrausbekommen:
ausblenden Delphi-Quelltext
1:
Linie.VertAxis := aRightAxis;					


Das Problem, dass die Linien unter den Balken sind habe ich aber immernoch

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 16.02.08 12:13 
Das ist doch einfach:
erst die Balken, dann die Linien zeichnen.
Bronstein Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Sa 16.02.08 21:20 
Ja, das würde funktionieren, kann ich das nicht zu einem späteren Zeitpunkt sagen, dass er die Linien über die Balken legen soll?

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 16.02.08 23:27 
user profile iconhathor hat folgendes geschrieben:
Das ist doch einfach:
erst die Balken, dann die Linien zeichnen.


einfacher: chart.axis.behind := false;

die frage ist nur, weshalb man so etwas wollen sollte... :gruebel: