Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zur Laufzeit erzeugte Komponenten finden (https://www.delphipraxis.net/63411-zur-laufzeit-erzeugte-komponenten-finden.html)

IB-Software 18. Feb 2006 13:02


Zur Laufzeit erzeugte Komponenten finden
 
Hallo,

ich erzeuge zur Laufzeit ein Richedit folgendermaßen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var RE:TRichEdit;
begin
   RE := TRichEdit.Create(nil);
   RE.Parent := form1;
   RE.Name := 'test';
end;
um auf einzelne zur Laufzeit erzeugte Komponenten zugreifen zu können versuche ich mit folgendem Code diese zu finden:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var    i:integer;
      Component: TComponent;
begin
   for i := 0 to form1.ComponentCount - 1 do
   begin
    Component := form1.Components[i];
    If( form1.Components[i] is TRichEdit ) Then
        showmessage(Component.Name);
   end;
end;
Doch damit werden mir nur die bereits in der IDE erstellten Komponenten angezeigt, nicht die zur Laufzeit erzeugten.
Wo ist mein Denkfehler.

Danke im voraus.

Ingo

Meflin 18. Feb 2006 13:04

Re: Zur Laufzeit erzeugte Komponenten finden
 
Moin!

abgesehen von deinem Code dürfte dir Delphi-Referenz durchsuchenFindComponent weiterhelfen - wohl die elegantere Lösung :)


Khabarakh 18. Feb 2006 13:48

Re: Zur Laufzeit erzeugte Komponenten finden
 
@IB-Software: Warum erstellst du ein Control und wirfst dann dessen Pointer fort, nur um ihn nachher wieder suchen zu müssen? Das ist doch ziemlich unlogisch. Speicher die Referenz, bei mehreren in einer Liste.

Wenn du trotzdem solche Abscheulichkeiten wie FindComponent benutzen willst, solltest du als Owner der Komponenten deine Form angeben.

DevilsCamp 18. Feb 2006 13:55

Re: Zur Laufzeit erzeugte Komponenten finden
 
Zitat:

Zitat von IB-Software
Hallo,

ich erzeuge zur Laufzeit ein Richedit folgendermaßen:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var RE:TRichEdit;
begin
   RE := TRichEdit.Create(nil);
   RE.Parent := form1;
   RE.Name := 'test';
end;

Erstelle deine Komponente zur Laufzeit so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var RE:TRichEdit;
begin
   RE := TRichEdit.Create(Form1);
   RE.Parent := form1;
   RE.Name := 'test';
end;
Dann klappt es auch FindComponent :P

IB-Software 19. Feb 2006 10:02

Re: Zur Laufzeit erzeugte Komponenten finden
 
Danke an alle.
Jetzt klappts auch bei mir.

Ingo


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.

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