Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi Chart Serie Freigeben, gibt nicht frei! (https://www.delphipraxis.net/181049-chart-serie-freigeben-gibt-nicht-frei.html)

Koloss 10. Jul 2014 15:38

Chart Serie Freigeben, gibt nicht frei!
 
Ich rufe diese Funktion 2 mal auf.
Beim 2ten mal: Ich komme in Series.Free rein bekomme, Series wird auch nil aber danach beim Namen zuweisen bekomme ich die Fehlermeldung "Die Komponente mit der Bezeichnung 'S1' existiert bereits" FindSeries funktioniert auch richtig.
Code:
   
procedure TfrmTestProperties.cbGroupChange(Sender: TObject);
var Series : TLineSeries; idx : Integer;
begin
  Series := FindSeries('S1', idx);
  if Series <> nil then
  begin
    //       Chart.SeriesList.Delete(idx); auch diese zeile bringt nix
    Series.Free;
  end;
  Series := TLineSeries.Create(Chart);
  Series.Name := 'S1';
  Chart.AddSeries(Series);
end;

function TfrmTestProperties.FindSeries(Name: string; var idx: Integer) : TLineSeries;
var i: Integer;
begin
  result := nil;
  idx := -1;
  for i := 0 to Chart.SeriesCount - 1 do
    if Chart.Series[i].Name = Name then
    begin
      result := TLineSeries(Chart.Series[i]);
      idx := i;
      break;
    end;
end;

Dejan Vu 10. Jul 2014 15:53

AW: Chart Serie Freigeben, gibt nicht frei!
 
Die Series ist vielleicht noch in Form1.Controls enthalten?

Koloss 10. Jul 2014 15:59

AW: Chart Serie Freigeben, gibt nicht frei!
 
Mit neuen Projekt getestet.
Unter Firemonkey Desktop funktioniert es und unter Firemonkey Mobile nicht!

Koloss 11. Jul 2014 08:58

AW: Chart Serie Freigeben, gibt nicht frei!
 
Es wird verrückt einfaches Beispiel selbe Problem
Code:
  Button := TButton(FindComponent('Button2'));
  if Button <> nil then
    Button.Free;

  Button := TButton.Create(Self);
  Button.Parent := self;
  Button.Name := 'Button2';
Kann mir wer dieses Beispiel testen?

Koloss 11. Jul 2014 09:57

AW: Chart Serie Freigeben, gibt nicht frei!
 
Problem mit der Series gelöst!

Statt Series := TLineSeries.Create(Chart);
Kommt Series := TLineSeries.Create(nil);

Da finde ich die series übers Chart!

Beim Button funktioniert:
Statt Button.Free;
Kommt RemoveComponent(Button);
Wenn Button := TButton.Create(Self) ist.

Das selbe bei der Series funktionert aber nicht, nur wenn TLineSeries.Create(nil) dann funktioniert das Free.

Code:
    Series := FindSeries('S1', idx);
    if Series <> nil then
    begin
      Chart.SeriesList.Delete(idx);
      RemoveComponent(Series); //oder Series.Free;
    end;
    Series := TLineSeries.Create(nil); // funktioniert nicht TLineSeries.Create(Chart);
    Series.Name := 'S1';
    Series.XValues.DateTime := True;
    Chart.AddSeries(Series);


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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