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 Alle Komponenten einer Form auf enabled := false setzen (https://www.delphipraxis.net/5972-alle-komponenten-einer-form-auf-enabled-%3D-false-setzen.html)

JoelH 25. Jun 2003 09:17


Alle Komponenten einer Form auf enabled := false setzen
 
gibt es eine Möglichkeit alle Komponenten (actionliste, buttons editfelder etc) auf einmal .enabled := false zu setzen für eine Form oder muss ich mir eine riesen Liste machen und dann jedes einzelne Element false setzen ?

MrSpock 25. Jun 2003 09:26

Hallo JoelH,

diese Liste gibt es schon, sie heißt Components, die Anzahl der Komponenten liefert die ComponentCount. Schau dir diese beiden Eigenschaften mal in der OH an.

darkstone 25. Jun 2003 09:26

Mit einer rekursiven procedure müsste das gehen - so in dieser Art:

Delphi-Quellcode:
procedure Ctrl_SetEnabledState( ACtrl: TWinControl; State: Boolean );
var
  ChildCtrl: TWinControl;
  i: Integer; // Laufvar.
begin
  // Alle Child-Controls disablen
  for i:=0 to ACtrl.ControlCount do begin
    ChildCtrl := ACtrl.Controls[i];
    if ChildCtrl is TWinControl then begin
      Ctrl_SetEnabledState( ChildCtrl, State ); // Rekursion!
    end;
  end;
  // Control disablen
  ACtrl.Enabled := State;
end;
Voraussetzung dafür ist natürlich, dass die property "Enabled" in TWinControl definiert ist - das weiss ich jetzt nicht auswendig. Aber so - oder so ähnlich - müsste es gehen.

Jens Schumann 25. Jun 2003 10:34

Hallo,
es sollte so
Delphi-Quellcode:
procedure TForm1.Ctrl_SetEnabledState(aForm, ACtrl: TWinControl; State: Boolean );
var
  ChildCtrl: TWinControl;
  i: Integer; // Laufvar.
begin
  // Alle Child-Controls disablen
  for i:=0 to ACtrl.ControlCount-1 do begin
    ChildCtrl := TWinControl(ACtrl.Controls[i]);
    if ChildCtrl is TWinControl then begin
      begin
      If ChildCtrl<>aForm then // Dadurch wird das Form nicht berücksichtigt
        ChildCtrl.Enabled := State;
      Ctrl_SetEnabledState(aForm,ChildCtrl, State ); // Rekursion!
      end;
    end;
  end;
end;
lauten

Dieser Aufruf setzt Enabled alle Controls auf False jedoch nicht das Formular
Code:
Ctrl_SetEnabledState(Form1,Form1,False);

JoelH 25. Jun 2003 12:56

hmm,
 
Danke :)


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