Delphi-PRAXiS
Seite 1 von 3  1 23      

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 FindComponent findet Label nicht (https://www.delphipraxis.net/76118-findcomponent-findet-label-nicht.html)

day 30. Aug 2006 08:30


FindComponent findet Label nicht
 
Hallo,
Ich habe ein panel auf dem sich Labels befinden. ich erzeuge dynamisch noch zusätzlich labels. Jetzt möchte aber vorher überprüfen ob das label das ich erzeuge nicht bereits mit dem gleichen namen existiert. dazu verwende ich die funktion
Delphi-Quellcode:
     lExistendLabel := Component.FindComponent(LabelName);
Component ist vom Type TComponent. Leider findet diese funktionein bereits existierendes label nicht.
Diese Funktion findet nur labels die ich dynamisch (create) angelegt habe. Labels die ich während der Entwicklung auf dem Panel platziert habe findet es nicht! Woran liegt das?????

Muetze1 30. Aug 2006 08:33

Re: FindComponent findet Label nicht
 
FindComponent() findet nur Elemente die der Komponente untergeordnet sind. Wenn du also als Parent Component angibst, dann werden die Komponenten beim Aufruf von FindComponent() bei Component gefunden. Die zur Designzeit platzierten Labels liegen aber anscheinend in einem anderen Container. Die Frage ist hier: wo sind die Labels zur Designzeit abgelegt worden und was ist Component für eine Komponente?

mkinzler 30. Aug 2006 08:34

Re: FindComponent findet Label nicht
 
Wende das .FindComponent mal auf die Form an. Möglicherweise ist das ja der Owner des Labels.

Schaedel 30. Aug 2006 08:35

Re: FindComponent findet Label nicht
 
Hallo,
Delphi-Quellcode:
var
c : TLabel;
begin
c := (FindComponent('A' + IntToStr(i)) as Tlabel
   if C <> NIL then
....
Also bei mir funktioniert das so ...

Muetze1 30. Aug 2006 08:40

Re: FindComponent findet Label nicht
 
Jo, du schreibst dein Code in der Methode der Form und somit rufst du auch FindComponent() der Form auf. Und die Form ist Owner der Elemente...

naja, wurde alles schon gesagt...

day 30. Aug 2006 08:43

Re: FindComponent findet Label nicht
 
hallo,
Also Component ist ein Panel auf welchem sich einpaar labels befinden. Das Panel liegt auf einer Form. Wie finde ich den heraus was der Parent ist bei den Platzierten labels. Habe bei den eingenschaften nichts gefunden und kann man den Parent ändern? Den so wie es ausschaut ist ja der Parent des Labels nicht das Panel.

Schaedel 30. Aug 2006 08:45

Re: FindComponent findet Label nicht
 
Also du Createst ja so ...
Delphi-Quellcode:
 Mylabel.Create(Panel);
In der Klammer steht der Parent... da kannst du den setzen ...

Muetze1 30. Aug 2006 08:47

Re: FindComponent findet Label nicht
 
Die Frage ist: sind die Labels ordentlich auf dem Panel platziert? D.h. wenn du das Panel verschiebst, werden alle Label mit verschoben (zur Designzeit)? Wenn nein, dann stimmt dies nicht.

Den Parent änderst du, in dem du die Elemente woanders zur Designzeit einfügst. Es ist wichtig wo sie eingefügt werden, weil bestimmte Container Elemente (z.B. TPanel), welche weitere Elemente aufnehmen können, eine Gruppe für sich sind. Dadurch würde ein FindComponent() von dem TPanel nur die Elemente finden, welche auch wirklich in dem TPanel liegen oder in einem Element auf dem TPanel.

day 30. Aug 2006 08:48

Re: FindComponent findet Label nicht
 
hallo,
Bei den Labels die ich zur laufzeit erzeuge funktioniert es ja auch. Ich habe aber noch labels die ich bereits vorher platziert habe. Jetzt möchte ich eben herausfinden ob das label welches ich zur laufzeit erzeuge bereits auf dem Panel existiert.

day 30. Aug 2006 08:50

Re: FindComponent findet Label nicht
 
wenn ich das Panel zur designzeit verschiebe dan verschieben sich alle labels auch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:48 Uhr.
Seite 1 von 3  1 23      

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