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 Komponenten einer Groupbox durchlaufen (https://www.delphipraxis.net/89074-komponenten-einer-groupbox-durchlaufen.html)

Cöster 25. Mär 2007 18:44


Komponenten einer Groupbox durchlaufen
 
Hi!

Wie kann man alle Komponenten einer Groupbox mit einer Schleife durchlaufen? Ich hab's über Components probiert, aber ComponentsCount ist komischerweise 0.

Ist das überhaupt möglich?

DGL-luke 25. Mär 2007 18:56

Re: Komponenten einer Groupbox durchlaufen
 
Alle Komponenten, deren Owner = deine groupbox ist, solltest du da erreichen können.

Schau mal in den Designer bzw. deine Struktur. Eventuell liegen die Konmponenten nur über der Groupbox auf der Form.

Cöster 25. Mär 2007 19:20

Re: Komponenten einer Groupbox durchlaufen
 
Hm, funzt irgendwie nicht. So sieht der Code aus:

Delphi-Quellcode:
for I := 0 to ComponentCount - 1 do
   if (Components[I].Owner = GroupBox1) then
      TControl(Components[I]).Enabled := True;
In der Struktur sind alle Komponenten übereinander angeordnet, dort kann ich also nicht sehen, ob die Groupbox der Owner ist. Ich kann die Komponenten zur Designzeit aber nicht aus der Groupbox rausschieben. Deswegen meine ich, dass die Groupbox der Owner sein müsste.

Wie geht's dann?

pszopp 25. Mär 2007 19:26

Re: Komponenten einer Groupbox durchlaufen
 
Hallo Cöster,

normalerweise ist der Owner einer Komponente immer das Formular, auf dem die Komponente im Designer gelegt wurde. Über den Owner einer Komponente kann man dann mit ComponentCount und Components[] die Komponenten abfragen.

Eine Lösung wäre also:
Delphi-Quellcode:
for ii := 0 to Pred(aForm.ComponentCount) do begin
  // do something
end; // for ii
Leider bekommt man dann alle Komponenten des Formulars und nicht nur jene, die in der GroupBox liegen.
Da die Komponenten in der GroupBox alle die GroupBox als Parent haben, kann man mit ControlCount und Controls[] arbeiten.

Das sieht dann so aus:
Delphi-Quellcode:
for ii := 0 to Pred(aGroupBox.ControlCount) do begin
  ShowMessage(aGroupBox.Controls[ii].Name);
end; // for ii
** ungetestet **

Viele Grüße,
pszopp

Cöster 25. Mär 2007 19:37

Re: Komponenten einer Groupbox durchlaufen
 
Zitat:

Zitat von pszopp
Delphi-Quellcode:
for ii := 0 to Pred(aGroupBox.ControlCount) do begin
  ShowMessage(aGroupBox.Controls[ii].Name);
end; // for lk

Das klappt, danke :thumb:


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