AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Chart zur Laufzeit erstellen, Formatierungs Probleme
Thema durchsuchen
Ansicht
Themen-Optionen

Chart zur Laufzeit erstellen, Formatierungs Probleme

Ein Thema von bronstein · begonnen am 14. Feb 2008 · letzter Beitrag vom 16. Feb 2008
Antwort Antwort
bronstein

Registriert seit: 3. Feb 2004
28 Beiträge
 
Delphi XE2 Professional
 
#1

Chart zur Laufzeit erstellen, Formatierungs Probleme

  Alt 14. Feb 2008, 20:39
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
  Mit Zitat antworten Zitat
bronstein

Registriert seit: 3. Feb 2004
28 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Chart zur Laufzeit erstellen, Formatierungs Probleme

  Alt 16. Feb 2008, 09:13
Hat denn niemand eine Idee wie ich meine Probleme lösen könnte?
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: Chart zur Laufzeit erstellen, Formatierungs Probleme

  Alt 16. Feb 2008, 11:00
Hallo,

eine zweite Achse kannst du mittels der Series-Eigenschaft VertAxis festlegen.

Die Achsen und sonstigen Hilfslinien werden immer zuerst gezeichnet. Willst du die Hilfslinien vor deinem Graphen sehen, dann hilft nur Tricksen: Alle Hilfslinien abschalten und durch entsprechende Liniengrafik (LineSeries) ersetzen.

Noch etwas: Warum nimmst du nicht TDBChart, wenn du deine Daten per ADOQuery beisteuerst?

Und zuletzt: Du solltest Nutzdaten und Konfigurationsdaten nicht zusammen speichern. Versuche solche Daten aus unterschiedlichen Quellen zu beziehen. Die Trennung von Daten und Darstellung ist ein Erfolgskonzept in der Programmierung.

Grüße vom marabu
  Mit Zitat antworten Zitat
bronstein

Registriert seit: 3. Feb 2004
28 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Chart zur Laufzeit erstellen, Formatierungs Probleme

  Alt 16. Feb 2008, 20:19
Wieso ist das ein Erfolgskonzept.
Natürlich könnte ich die Daten für die Darstellung auch in einer anderem Medium speichern (z.B. INI-Datei), ich sehe da aber nur ein Nachteil. Ich muss gleich zwei Quellen mit dem Programm verwalten.
Wenn du Argumente dafür hast, zähl sie mir bitte auf.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Chart zur Laufzeit erstellen, Formatierungs Probleme

  Alt 16. Feb 2008, 21:17
Du gewinnst Freiheitsgrade, wenn du deine Daten von ihrer Darstellung entkoppelst. Seit sich grafische Benutzerschnittstellen durchgesetzt haben, zeichnen sich Programme u.a. durch ihren Grad der Konfigurierbarkeit durch den Benutzer aus. Alle Aspekte der Darstellung sind Top-Kandidaten für die Konfiguration durch den Benutzer. Gründe dafür sind beispielsweise eine verbesserte Wartbarkeit, die Barrierefreiheit und auch einfach die Erwartungshaltung der Benutzer von heute. Welche Rolle diese Merkmale für dein Programm spielen, kannst momentan nur du beurteilen.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:24 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