Delphi-PRAXiS

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 Problem mit FindComponent (https://www.delphipraxis.net/31923-problem-mit-findcomponent.html)

JohannesK 15. Okt 2004 17:44


Problem mit FindComponent
 
Hallo

zu diesem Thema gibt es bereits einige Threads, leider bin ich mit den Tips nicht zu einem Ergebnis gekommen.

:wall:

Mein Problem: einige Labels und Edits werden dynamisch erstellt und gefüllt, klappt alles wie vorgesehen.
Die Anzeige soll dann mit anderen Parametern neu aufbegaut werden.

Erstellen der Kompos

Delphi-Quellcode:
        Sorte := TLabel.Create(F_Lagerplatz);
        Sorte.parent := self;
        Sorte.name := 'Sorte'+inttostr(Lauf); // Lauf : integer;
Für das Löschen hab ich folgendes probiert:
Variante 1 findet nichts
Delphi-Quellcode:
 for i := 0 to maxitems do
    begin
      TS := 'Sorte'+inttostr(i);
      TLabel(FindComponent(TS)).free;
    end;
Variante 2 gibt Zugriffsverletzung
Delphi-Quellcode:
 for i := 0 to maxitems do
    begin
      TS := 'Sorte'+inttostr(i);
      TLabel(F_Lagerplatz.FindComponent(TS)).free;
    end;
Sieht irgendjemand meinen Fehler ?

Jens Schumann 15. Okt 2004 17:52

Re: Problem mit FindComponent
 
Hallo,
ich hoffe doch, dass F_Lagerplatz das Formular ist. Sonst müsste es nämlich
F_Lagerplatz.FindComponent lauten.

Nightshade 15. Okt 2004 17:55

Re: Problem mit FindComponent
 
Ich würds über ne ObjectList machen :


Delphi-Quellcode:
uses Contnrs; // <<--  nicht vergessen !!!

var
  Form1: TForm1;
  liste : TObjectList;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  MyLabel : TLabel;
  t : integer;
begin
  liste := TObjectList.Create;
  Liste.OwnsObjects := true;
  for t := 0 to 50 do begin
    Mylabel := TLabel.Create(form1);
    MyLabel.Top := t * 16;
    MyLabel.Name := 'Label' + inttostr(t);
    MyLabel.Parent := Form1;
    Liste.Add(MyLabel);
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  Liste.Clear; // <<-- hier löscht die Liste alle Labels und gibt sie frei.
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Liste.free;
end;

Jens Schumann 15. Okt 2004 18:00

Re: Problem mit FindComponent
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hier ein kleines Beispiel zu meiner obigen Antwort.

JohannesK 15. Okt 2004 18:08

Re: Problem mit FindComponent
 
@Jens : F_Lagerplatz ist die Form, Dein Beispiel werde ich runterladen und testen.

@nightshade : Dein Tip klappt !

Danke für die schnelle Hilfe

:hello:


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