Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi GanttSeries-Elemente einfärben (https://www.delphipraxis.net/129705-ganttseries-elemente-einfaerben.html)

luckystar85 24. Feb 2009 09:18


GanttSeries-Elemente einfärben
 
HI,

ich habe in meinem TChart eine TGanttSeries wo ich mehrere Aktion verbunden darstelle. Dazu gibt es daneben aber eine ComboxBox wo alle Aktionen auch noch enthalten sind. Jetzt möchte ich, dass wenn ich in der ComboBox eine Aktion auswähle der entsprechende Balken des GanttSeries farblich eingefärbt wird. Das gleiche habe ich schon im OnClick gemacht wo dann in der ComboBox entsprechenend die Aktion ausgewählt wird.

Delphi-Quellcode:
procedure TActionSchedule.Chart1ClickSeries(Sender: TCustomChart; Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Begin
  If ( Assigned(Series) ) Then
    TGanttSeries(Series).ValueColor[ValueIndex] := ( Not ColorToRGB(TGanttSeries(Series).ValueColor[ValueIndex]) ) And $00FFFFFF;
End;
Das funktoniert sowie auch richtig gut, nur habe ich jetzt das Problem wie kann ich im OnChange der ComboBox auf die einzelnen Elemente der GanttSeries zugreifen? Im OnClick auf das Chart bekomm ich das übergeben, aber von außen? Ich habe gesucht und auch die OH befragt, aber keine Lösung gefunden. Habt ihr eine Idee?

Tyrael Y. 24. Feb 2009 09:25

Re: GanttSeries-Elemente einfärben
 
Du hast doch die Antwort scho selbst mehr oder weniger geliefert. ;)

Hänge an jeden Combobox Eintrag die Referenz zu der dementsprechenden Series.
Wird eins ausgewählt dann ruf deine Methode zum einfärben mit der Referenz der Series als Parameter auf...fettisch.

luckystar85 24. Feb 2009 09:32

Re: GanttSeries-Elemente einfärben
 
Das hatte ich mir auch gedacht mit AddObject das zufüllen, aber leider habe ich keinen Zugriff auf die einzelnen Elemente. Beim Add bekomm ich auch nur den Index zurück, aber ich kann nicht auf die Liste zugreifen (jedenfalls habe keine Möglichkeit gefunden).

guinnes 24. Feb 2009 10:16

Re: GanttSeries-Elemente einfärben
 
Der Index reicht doch für den Zugriff, oder hast du mehrere Gantt-Serien ?

luckystar85 24. Feb 2009 12:39

Re: GanttSeries-Elemente einfärben
 
Nein ich habe nur eine GanttSeries, aber ich habe keinen Zugriff auf die Elemente der GanttSeries (jedenfalls habe ich die entsprechende Property nicht gefunden um darauf zuzugreifen). Wenn es dafür eine Eigenschaft gibt, ist das Problem schnell gelöst. Gibt es denn eine?

messie 24. Feb 2009 13:27

Re: GanttSeries-Elemente einfärben
 
Wenn ich dein Problem richtig verstanden habe, fehlt Dir der Zugriff auf die Series des Chart. Da kommst Du über TChart.Series[x] dran. Dann kannst Du Dir eine lokale Referenz basteln.
Delphi-Quellcode:
var gs : TGanttSeries;
gs := TGanttSeries(Chart1.Series[i]);
Ist jetzt ungetestet, kann auch sein, dass Du mit as TGanttSeries drankommst.

Grüße, Messie

mkinzler 24. Feb 2009 13:33

Re: GanttSeries-Elemente einfärben
 
Oder statt harten eine weichen Cast
Delphi-Quellcode:
gs := (Chart1.Series[i] as TGanttSeries);

guinnes 24. Feb 2009 13:56

Re: GanttSeries-Elemente einfärben
 
Du färbst in deinem Beispiel den Gantt mit ValueColor[ValueIndex] ein, warum machst du das nicht genau so mit dem Index, den du beim Add erhälts ? Also ValueColor[Integer(deine ComboBox.Items[DeineComboBoy.ItemIndex].Objects)] := WasAuchImmer;

luckystar85 24. Feb 2009 14:26

Re: GanttSeries-Elemente einfärben
 
Zitat:

Zitat von mkinzler
Oder statt harten eine weichen Cast
Delphi-Quellcode:
gs := (Chart1.Series[i] as TGanttSeries);

Die TGanttSeries-Referenz habe ich ja, aber dieser sind ja mehrere Gantts zugeordnet. Auf die möchte ich ja zugreifen. Die TGanttSeries habe ich im TChart angelegt und wird auch im OI angezeigt. Mir fehlt eine Eigenschaft um auf die einzelnen Bars zuzugreifen.

Zitat:

Zitat von guinnes
Du färbst in deinem Beispiel den Gantt mit ValueColor[ValueIndex] ein, warum machst du das nicht genau so mit dem Index, den du beim Add erhälts ? Also ValueColor[Integer(deine ComboBox.Items[DeineComboBoy.ItemIndex].Objects)] := WasAuchImmer;

Ich würde das ja gerne so machen, das wäre ja auch nicht das Problem, bloß womit soll ich denn die ComboxBox-Item-Objects füllen. Ich habe die Zeiger auf die Bars nicht. Auf die möchte ich ja gerne zugreifen. Wie kann ich das tun?

luckystar85 24. Feb 2009 14:32

Re: GanttSeries-Elemente einfärben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Im angehängtem Bild ist ein Beispiel für ein TChart mit Gantt. Der rote Rahmen ist die GanttSeries und der blaue Rahmen ist der Balken den ich einfärben möchte. Wie kann ich auf diesen von außeen zugreifen. Im OnClick kein Problem, aber sonst ???


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:34 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz