![]() |
TDBChart Möglichkeiten
Hallo zusammen,
ich versuche mittels der in Delphi 2007 integrierten TeeChart Komponente (TDBChart) 2 Diagramme darzustellen. Das erste soll ein einfaches Liniendiagramm sein, bei dem auf der x-Achse Datumswerte und auf der y-Achse zugehörige Werte dargestellt werden sollen. Was ich nicht schaffe ist, auf der y-Achse Dezimalwerte mit 2 Nachkommastellen darzustellen, obwohl es sich um decimal Werte handelt. Auf der x-Achse sollten die Datumswerte so dargestellt werden können, dass z.B. nur Nov. 2005, Dez. 2005, Jan. 2006 usw. da steht, aber es sollte dennoch jeder Wert dargestellt werden. Es sollen bis zu 4 Felder aus der Tabelle auf der y-Achse abgebildet werden können. Falls aber eine Spalte keinen Inhalt hat, sollte auch die Legende für diese Serie nicht dargestellt werden. Bei einem 2. Diagramm, ein einfaches 2D Balkenchart, sollte es möglich sein, negative Werte mit einem Balken unterhalb der x-Achse darstellen zu können. Nichts von alldem hab ich bisher hinbekommen. :wall: Kann hier jemand weiterhelfen? |
Re: TDBChart Möglichkeiten
OK, das meiste hat sich inzwischen erledigt.
Bleibt nur noch die Frage, wie ich eine Serie, wenn sie keine Werte enthält zur Laufzeit ausblenden kann, damit keine Linie auf der x-Achse verläuft und die Legende weg ist? |
Re: TDBChart Möglichkeiten
OK, habe inzwischen gesehen, dass es für die Series eine eigene Komponente gibt, mittels der man genaueren Einfluss auf die Serien nehmen kann. Sehr mühsam dies alles ohne eine Hilfe oder Doku rauszufinden!
Bleibt noch meine letzte Frage. Wie kann ich Datumswerte auf der x-Achse so zusammenfassen, das dort nur noch Monate oder Quartale stehen, wobei aber jeder einzelne Wert (also jeder Tag) dargestellt werden muss? Es soll keine Zusammenfassung für ein ganzes Quartal sein. |
Re: TDBChart Möglichkeiten
Hallo,
wenn du Zeitreihen darstellen möchtest, dann sind ![]() Wenn du deine Anforderung aufrecht erhältst, dann wirst du ein wenig tricksen müssen. Minor Ticks kannst du gleich abschalten, es gibt nur noch Major Ticks = Tage. Die Achsenbeschrifzung musst du auf Text umschalten und beim Ereignis OnGetAxisLabel auf den gewünschten Monatsersten testen. Gehört zu deinem Delphi Lieferumfang nicht die Datei $(DELPHI)\Help\TeeChart.hlp oder etwas ähnliches? Grüße vom marabu |
Re: TDBChart Möglichkeiten
Wann wird das Ereignis denn aufgerufen, einmal pro Darstellung oder jedesmal wenn ein Wert auf irgendeiner Achse dargestellt werden soll?
Könntest du mir eine Behandlung dieses Events vielleicht mal anhand eines kurzen Quelltextes demonstrieren? (Am besten wäre natürlich ein Beispiel für meine Belange, Monate hinschreiben). |
Re: TDBChart Möglichkeiten
Kann mir denn hier wirklich niemand weiterhelfen? Zu diesem Teil hab ich keine Hilfe und ansonsten ist es nur rumraterei...
|
Re: TDBChart Möglichkeiten
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
warum hast du keine Online Hilfe? Die angehängte Demo produziert die Anzeige von Quartalen auf der X-Achse. Sie verwendet die Tabelle DBDEMOS:ORDERS. Der von mir angewandte Kniff ist die Wahl einer Tagesskalierung (BottomAxis.Increment := dtOneDay). Im Einstellungsdialog der Komponente findest du die Einstellung auf der Seite Skalierung der Achse als Steigung. Freundliche Grüße |
Re: TDBChart Möglichkeiten
Nee, weder bei Developer Studio 2006 noch bei Delphi 2007 ist bei mir eine Hilfe zu DBChart dabei.
Bei deiner Anwendung fehlt noch die Überprüfung auf ValueIndex <> -1, sonst kriegt man gleich am Anfang ne Exception um die Ohren. Vielen Dank, das bringt mich weiter. Wenn ich das richtig sehe, stellst du alle Werte dar, fasst sie aber in Quartalen zusammen und schreibst das jeweilige Quartal auch nur einmal hin, oder? Genau das würde ich auch benötigen, nur nicht nach Quartalen sondern nach Monaten. Kannst du mir sagen wie der Algorithmus dann aussehen würde (sorry, kenne Delphi nicht so gut)? |
Re: TDBChart Möglichkeiten
Hi,
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Du musst also nur den kommentierten Code aktivieren und den Rest weglassen:
begin
// ... DecodeDate(dt, y, m, d); //LabelText := Format('%s%.2d', [ShortMonthNames[m], y mod 100]); q := Succ(Pred(m) div 3); // ... end;
Delphi-Quellcode:
Freundliche Grüße
begin
if (Sender = DBChart.BottomAxis) then begin dt := StrToDate(LabelText); DecodeDate(dt, y, m, d); if d = 1 then LabelText := Format('%s%.2d', [ShortMonthNames[m], y mod 100]) else LabelText := ''; end; end; |
Re: TDBChart Möglichkeiten
Vielen Dank!!
Nee, tatsächlich ist bei meinem Delphi 2006 (Architect Version) keine Hilfedatei dabei, weder die von dir benannte externe noch in Delphi direkt eingebunden. Wenn ich bei dir die Überprüfung mit ValueIndex <> -1 weglasse kommt die Exception das ... kein gültiges Datum darstellt. Keine Ahnung warum. Der einzige Haken ist jetzt noch, das er jeden einzelnen Wert hinschreibt und nicht zusammenfasst, es steht also z.B. 10mal Nov05 da, das ist etwas unschön. Geht das auch zusammengefasst? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz