Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#11

AW: Komponente zur Laufzeit um Eigenschaft erweitern, Fehler bei Programmende

  Alt 4. Okt 2019, 13:04
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);

Geändert von DieDolly ( 4. Okt 2019 um 13:17 Uhr)
  Mit Zitat antworten Zitat