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 BitBtn auf einem TTabSheet enabled = FALSE setzen (https://www.delphipraxis.net/109782-alle-bitbtn-auf-einem-ttabsheet-enabled-%3D-false-setzen.html)

HolgerCW 7. Mär 2008 14:01


Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Hallo zusammen,

wie kann ich alle BitBtn auf einem TTabSheet auf enabled := FALSE setzen ?

Gruss

Holger

DeddyH 7. Mär 2008 14:07

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Versuch es mal so:
Delphi-Quellcode:
var i: integer;
begin
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TBitBtn) and (TBitBtn(Components[i]).Parent = TabSheet1) then
      TBitBtn(Components[i]).Enabled := false;
end;

HolgerCW 7. Mär 2008 14:12

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Das sieht schon ganz gut aus. Nur ist das Problem, das auf dem TabSheet mehrere GroupBoxen sind und in diesen GroupBoxen dann die BitBtns.

Wie bekomme ich es nun hin, das alle BitBtns in den GroupBoxen enabled = TRUE werden ?

Gruss

Holger

dominikkv 7. Mär 2008 14:16

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Zitat:

Zitat von HolgerCW
Das sieht schon ganz gut aus. Nur ist das Problem, das auf dem TabSheet mehrere GroupBoxen sind und in diesen GroupBoxen dann die BitBtns.

Wie bekomme ich es nun hin, das alle BitBtns in den GroupBoxen enabled = TRUE werden ?

Gruss

Holger

Das wird kompliziert^^
Nimm dir doch nen Array und speicher bei Programmanfang alle Referenzen von den BitBtns in dem Array... dann brauchst du nur noch das Array duchzugehen

edit: oder so: :mrgreen:
Delphi-Quellcode:
var i: integer;
begin
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TBitBtn) and (TBitBtn(Components[i]).Parent.Parent = TabSheet1) then
      TBitBtn(Components[i]).Enabled := false;
end;

DeddyH 7. Mär 2008 14:17

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Versteh ich nicht. Bist Du sicher, dass die BitBtns in den GroupBoxen liegen und nicht davor?

HolgerCW 7. Mär 2008 14:25

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Ja,

wenn ich die Struktur in Delphi oben links mir anschaue, sind die BitnBtns in der GroupBox. So habe ich das auch gewollt.

So funktionierts:

Delphi-Quellcode:
MeineGroupBox := TGroupBox(FindComponent('GB1'));

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

 if (Components[i] is TBitBtn) and (TBitBtn(Components[i]).Parent = MeineGroupBox) then
 begin

  TBitBtn(Components[i]).Enabled := TRUE;

 end;

end;
Nur wollte ich das TabSheet angeben, nicht die einzelnen GruopBoxen auf dem TabSheet.

Was ich bräuchte ist:

1. TabSheetname ist als String bekannt.
2. Auslesen der GroupBoxen durch Parent
3. Auslesen der BitBtns in den GroupBoxen durch Parent
4. Alle ausgelesenen BitBtns auf enabled = TRUE setzen

Ist das möglich ?

DeddyH 7. Mär 2008 14:31

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Nächster Versuch:
Delphi-Quellcode:
var i: integer;
begin
  for i := 0 to ComponentCount - 1 do
    if (Components[i] is TBitBtn) and (TBitBtn(Components[i]).Parent is TGroupBox) and
       Assigned(TBitBtn(Components[i]).Parent.Parent) and
       (TBitBtn(Components[i]).Parent.Parent = TabSheet1) then
      TBitBtn(Components[i]).Enabled := true;
end;

Apollonius 7. Mär 2008 14:33

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Zitat:

Assigned(TBitBtn(Components[i]).Parent.Parent) and
(TBitBtn(Components[i]).Parent.Parent = TabSheet1)
Die zweite Abfrage reicht, denn Assigned prüft ja nur auf <> nil.

HolgerCW 7. Mär 2008 14:42

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Hallo,

ich hätte mit einer Lösung ja nicht mehr gerechnet, aber das klappt nun einwandfrei.

Vielen dank für eure mühen.

Gruss und ein schönes Wochenende

Holger

backdraft 7. Mär 2008 23:07

Re: Alle BitBtn auf einem TTabSheet enabled = FALSE setzen
 
Du kannst auch einfach recursiv suchen.
Ein TabSheet oder eine Groupbox basieren auf TWinControl. Alle Objekte die auf TWinControl basieren können Controls aufnehmen.
Der Aufsetzpunkt ist das Tabsheet. Immer wenn du ein Control findest was auf TWinControl basiert, startest du deine Funktion mit dem neuen Aufsetzpunkt.

Alternativ könntest du auch für alle Buttons Actions vergeben mit einer Kategorie, und diese dann einfach deaktivieren.


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