Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Alle Buttons auf Form -> Enabled := FALSE ? (https://www.delphipraxis.net/109770-alle-buttons-auf-form-enabled-%3D-false.html)

HolgerCW 7. Mär 2008 11:02


Alle Buttons auf Form -> Enabled := FALSE ?
 
Hallo zusammen,

wie kann ich alle Buttons auf einer Form -> Enabled := FALSE machen ?

Hierbei:

Delphi-Quellcode:
var
 TBit: TBitBtn;
...
//Alle Buttons enabled = FALSE
For I := 0 to FormTerMaS.ComponentCount - 1 do
begin

 if AnsiLowerCase(FormTerMaS.Components[I].ClassName) = AnsiLowerCase('TBitBtn') then
 begin

  TBit := TBitBtn(FindComponent(FormTerMaS.Components[I].Name));
  TBit.enabled := FALSE;

 end;

end;
... macht er bei "TBit.enabled := FALSE;" einen Fehler mit Zugriffsverletzung ...

Was muss ich tuen ?

Gruss

Holger

mkinzler 7. Mär 2008 11:08

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Delphi-Quellcode:
 if FindComponent(FormTerMaS.Components[I].Name) is TBitButton then
   (FindComponent(FormTerMaS.Components[I].Name) as TBitButton).Enabled := False;

inherited 7. Mär 2008 11:16

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Müsste auch ohne Name und FindComponent gehen.
Delphi-Quellcode:
for i := 0 to MyForm.ComponentCount-1 do
  if MyForm.Components[i] is TBitBtn then
    (MyForm.Components[i] as TBitBtn).Enabled:=false;

HolgerCW 7. Mär 2008 11:21

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Vielen dank an euch beide.

Der obere Code funktioniert nicht (auch bei Austausch von BitButton gegen BitBtn).

Der untere klappt super.

Gruss

Holger

HolgerCW 7. Mär 2008 11:34

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Jetzt bräuchte ich aber doch die funktion des ersten Codes. Habe nun den Namen des Objectes und möchte nur dieses Enabled := TRUE setzen.

Nur funktioniert das ja oben nicht ?

Gruss

holger

inherited 7. Mär 2008 11:38

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Dafür sollte eigentlich FindComponent genau das richtige tun
Delphi-Quellcode:
FindComponent('irgendein string, zB Edit1')
liefert dir ein TObject, heißt dein Button also zB BitBtn1, müsste
Delphi-Quellcode:
(FindComponent('BitBtn1') as TBitBtn).Enabled:=false;
funktionieren.

Wenn du viele BitBtn hast, wäre es aber vielleicht besser die in einem Array zu verwalten oder gleich eine Containerklasse zu schreiben, die dir das Verwaltet, denn FindComponent ist ineffektiv.

HolgerCW 7. Mär 2008 11:58

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Vielen dank,

jetzt noch das letzte:

Ich möchte auf einer Form ein TabSheet finden und auf diesem TabSheet alle BitnBtn enabled := TRUE setzen ?

Gruss

Holger

DeddyH 7. Mär 2008 12:00

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Nimm den Source von inherited (#3) und ersetze MyForm durch den Namen des Tabsheets.

HolgerCW 7. Mär 2008 12:09

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Dann habe ich aber wieder das anfangsproblem:

Delphi-Quellcode:
var
 TSheet: TTabSheet;

...

TSheet := (FindComponent('TabSheet1') as TTabSheet);

for I := 0 to TSheet.ComponentCount - 1 do
begin

 if TSheet.Components[I] is TBitBtn then
   (TSheet.Components[I] as TBitBtn).Enabled := TRUE;

end;
... Zugriffsverletzung kommt dann bei for ...

Gruss

Holger

SirThornberry 7. Mär 2008 12:28

Re: Alle Buttons auf Form -> Enabled := FALSE ?
 
Zitat:

Zitat von inherited
Müsste auch ohne Name und FindComponent gehen.
Delphi-Quellcode:
for i := 0 to MyForm.ComponentCount-1 do
  if MyForm.Components[i] is TBitBtn then
    (MyForm.Components[i] as TBitBtn).Enabled:=false;

ein kleiner "Schönheitsfehler". Durch den Cast mit "as" wird intern nochmal geprüft ob der Typ richtig ist. Da mit "is" das aber schon geprüft wurde kann ein harter Cast verwendet werden:
Delphi-Quellcode:
for i := 0 to MyForm.ComponentCount-1 do
  if MyForm.Components[i] is TBitBtn then
    TBitBtn(MyForm.Components[i]).Enabled:=false;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 Uhr.
Seite 1 von 2  1 2      

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