![]() |
Zugriff auf beliebiges Element eines Forms
Hi DPler!
Ich habe ein Formular. Auf diesem Formular sitzt irgendwo ein Dockpanel. Auf diesem Dockpanel erzeuge ich zur Laufzeit eine Toolbar mit dem Namen "Toolbar1". Diese Toolbar kann nun vom Nutzer in andere Dockpanel verschoben oder gänzlich gelöst werden (als eigenständiges kleines Fenster, wie man es auch von Word kennt). Wie kann ich zur Laufzeit ermitteln, wo sich "Toolbar1" befindet? Wie bekomme ich außerdem Zugriff auf "Toolbar1", wenn ich nur den Namen (Komponentenname) zur Verfügung habe? LG, Xong |
Re: Zugriff auf beliebiges Element eines Forms
Hallo,
versuche es mal flach zu formulieren: Gehe durch die Komponenten der Applikation und für jede gefundene Komponente durch alle Komponenten dieser Komponente, bis du fündig geworden bist. Sowas in der Art:
Delphi-Quellcode:
Bei Formularen ggfls. auch mit form.ControlCount und form.Controls[i], eventuell auch mit Application.Components[i].FindComponent('Toolbar1')...
for i := 0 to Application.ComponentCount - 1 do begin
if Application.Components[i].ComponentCount > 0 then with Application.Components[i] do begin // das dann rekursiv weiter end; end; end; Zugriff per Typcast auf die gefunden Komponente:
Delphi-Quellcode:
If Components[i] is TToolbar then with Components[i] As TToolbar do begin...
|
Re: Zugriff auf beliebiges Element eines Forms
Herzlichen Dank für deine Antwort.
Ich vermutete, dass es schon eine fertige Funktion gibt. Meine Lösung:
Delphi-Quellcode:
{
Rekursive Suche nach einer Komponente anhand ihres Namens Parameter s: Name der gesuchten Komponente parent: Startkomponente, bei der mit der Suche begonnen werden soll. Rückgabewert Gibt bei Erfolg die gesuchte Komponente zurück, bei Misserfolg nil. } function FindComponentByName(s: TComponentName; parent: TComponent): TComponent; var i: Integer; begin if parent.Name = s then begin // Gefunden! Result := parent; end else begin if parent.ComponentCount > 0 then begin for i:=0 to parent.ComponentCount - 1 do begin Result := FindComponentByName(s,parent.Components[i]); if Result <> nil then break; end; end else begin Result := nil; end; end; end; |
Re: Zugriff auf beliebiges Element eines Forms
Wobei die Zeile
Zitat:
|
Re: Zugriff auf beliebiges Element eines Forms
Lieber eine Zuviel als eine zu wenig :zwinker:
|
Re: Zugriff auf beliebiges Element eines Forms
Zitat:
mfg DerDan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 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