Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Alle Child-Komponenten deaktivieren

  Alt 5. Jul 2004, 10:25
Hallo barnti,

bei der TGroupBox handelt es sich um einen Erben von TWinControl, der über die Eigenschaften Controls und ControlCount die ihm untergeordneten Elemente veröffentlicht.

Du könntest, um Dein Problem zu lösen, über alle untergeordneten Element iterieren und für diese jeweils die Eigenschaften setzen. Solltest Du jedoch mehrere solcher Boxen (zB auch Panels) inneinander verschachteln, könnte ein rekursiver Ansatz weiterhelfen.

Die folgende Prozedure demonstriert, was ich meine (und sollte ggf an Deine Bedürfnisse weiter angepasst werden):
Delphi-Quellcode:
procedure SetEnabledRecursivly(AControl: TControl; AEnabled: Boolean);
var
  iChild: Integer;
begin
  // set state of control
  AControl.Enabled := AEnabled;

  // if control contains further controls...
  if (AControl is TWinControl) then
    with TWinControl(AControl) do
    // ...set state for each child (recursive)
    for iChild := 0 to Pred(ControlCount) do
      SetEnabledRecursivly(Controls[iChild], AEnabled);
end;
mit einem Aufruf der Art:
SetEnabledRecursivly(GroupBox1, False); EDIT: Ups, etwas zu langsam
gruß, choose
  Mit Zitat antworten Zitat