Ohne class var funktioniert es nicht.
Aber das ist alles irgendwie noch komisch. Ich erzeuge 3 Series mit 3 unterschiedlichenj SeriesGroup-Typen.
Wenn ich den ordinalen Wert von SeriesGroup der Series abfrage, kommt immer 3 raus (das Enum ist 3 groß)
ShowMessage(Ord(TCustomSeries(Chart1.Series[0]).SeriesGroup).ToString);
Egal ob Series 0, 1 oder 2. Ord(SeriesGroup) ist immer 3, obwohl ich jeder Series ein anderes Enum zuweise.
Delphi-Quellcode:
procedure CreateSeries(const SeriesType: TCustomSeries; const SeriesGroup: TSeriesGroup; const Name: string; const Color: Integer);
var
CustomSeries: TCustomSeries;
begin
if Assigned(FormMain.Chart1.FindComponent(Name)) then
Exit;
if SeriesType = TCustomSeries(TAreaSeries) then
CustomSeries := TCustomSeries(TAreaSeries.Create(FormMain.Chart1))
else if SeriesType = TCustomSeries(TLineSeries) then
CustomSeries := TCustomSeries(TLineSeries.Create(FormMain.Chart1))
else if SeriesType = TCustomSeries(TBarSeries) then
CustomSeries := TCustomSeries(TBarSeries.Create(FormMain.Chart1))
else
CustomSeries := nil;
if CustomSeries = nil then
Exit;
CustomSeries.Name := Name;
CustomSeries.SeriesGroup := SeriesGroup;
.....
Hier habe ich es mal mit einer ziemlich bösen Lösung versucht. Ausnutzung des Tag-Properties
Delphi-Quellcode:
TCustomSeriesClass = class helper for TCustomSeries
public
function GetSeriesGroup: TSeriesGroup;
procedure SetSeriesGroup(const SeriesGroup: TSeriesGroup);
end;
implementation
{TCustomSeriesClass}
function TCustomSeriesClass.GetSeriesGroup: TSeriesGroup;
begin
Result := TSeriesGroup(Self.Tag);
end;
procedure TCustomSeriesClass.SetSeriesGroup(const SeriesGroup: TSeriesGroup);
begin
Self.Tag := Ord(SeriesGroup);
end;
// Setzen
CustomSeries.SetSeriesGroup(SeriesGroup);
// Holen
SeriesGroup := TCustomSeries(Chart1.Series[0]).GetSeriesGroup);