![]() |
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 ?
|
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. |
Mit einer rekursiven procedure müsste das gehen - so in dieser Art:
Delphi-Quellcode:
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.
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; |
Hallo,
es sollte so
Delphi-Quellcode:
lauten
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; Dieser Aufruf setzt Enabled alle Controls auf False jedoch nicht das Formular
Code:
Ctrl_SetEnabledState(Form1,Form1,False);
|
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