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 Button.Enabled := True (Sehr oft...) (https://www.delphipraxis.net/101969-button-enabled-%3D-true-sehr-oft.html)

Tommy1988 21. Okt 2007 15:17


Button.Enabled := True (Sehr oft...)
 
Hallo,
ich habe folgenden Beispielcode:
Delphi-Quellcode:
TBXButton1.Enabled := True;
TBXButton3.Enabled := True;
TBXButton2.Enabled := True;
TBXButton9.Enabled := True;
TBXButton4.Enabled := True;
TBXButton5.Enabled := True;
TBXButton6.Enabled := True;
Gibt es die Möglichkeit, DIESE Buttons in EINER Anweisung zu "Enablen"?

Matze 21. Okt 2007 15:18

Re: Button.Enabled := True (Sehr oft...)
 
Hallo,

suche mal nach Delphi-Referenz durchsuchenFindComponent.

mkinzler 21. Okt 2007 15:19

Re: Button.Enabled := True (Sehr oft...)
 
In einer nicht aber du kannst eine Schleife nehmen und dann mit .FindComponent per Namen suchen und Eigenschaft setzen.

hoika 21. Okt 2007 15:19

Re: Button.Enabled := True (Sehr oft...)
 
Hallo,

Delphi-Quellcode:
Btn: TButton;
i : Integer;

for i:= 1 to Viele do
begin
  Btn:= TButton(FindComponent('TBXButton'+IntToStr(i)));
  if Btn<>NIL then Btn.Enabled:= True;
end;

Heiko

mirage228 21. Okt 2007 15:24

Re: Button.Enabled := True (Sehr oft...)
 
Wenn Du diese Prozedur öfters ausführst, wäre es sinnvoller die Buttons einmal mit FindComponent zu suchen und dann einer TObjectList oder einem Array hinzuzufügen und bei weiteren durchläufen letztere(s) zu benutzen. Bei vielen Aufrufen wird das um einiges schneller sein, als jedes mal FindComponent aufzurufen.

mfG
mirage228

DeddyH 21. Okt 2007 16:03

Re: Button.Enabled := True (Sehr oft...)
 
Genau, oder das Components-Array einmalig durchlaufen und prüfen, ob es sich um eine der zu ändernden Komponenten handelt.

hathor 21. Okt 2007 19:42

Re: Button.Enabled := True (Sehr oft...)
 
Delphi-Quellcode:
var
 a: array [1,2,3,4,5,6,9] of Integer;
 i: Integer;

for I:=0 to ControlCount-1 do
  if Controls[I] is TButton and i is in a then // nicht getestet !
  TButton(Controls[I]).Enabled:=true;

SirTwist 21. Okt 2007 21:25

Re: Button.Enabled := True (Sehr oft...)
 
Zitat:

Zitat von Tommy1988
Gibt es die Möglichkeit, DIESE Buttons in EINER Anweisung zu "Enablen"?

Es gibt eine Freeware-Komponente EnableGroupbox. Wenn man bei dieser Komponente das Enable-Flag setzt/löscht überträgt sich das auf alle enthaltene Komponenten. Die Orginalkomponente ist von einer Groupbox abgeleitet, aber das kann man sich relativ leicht auf ein Panel umstricken.

Vielleicht hilft Dir das ja weiter.

Gruß,
SirTwist

hathor 21. Okt 2007 21:32

Re: Button.Enabled := True (Sehr oft...)
 
Delphi-Quellcode:
procedure TForm1.EnableGroupBox(AGroupBox: TGroupBox;
                                                     Enable: Boolean);
var
  i: Integer;
begin
  with AGroupBox do
  begin
    Enabled := Enable;
    For i := 0 to ControlCount - 1 do
      Controls[i].Enabled := Enable;
  end;
end;

sirius 22. Okt 2007 08:44

Re: Button.Enabled := True (Sehr oft...)
 
Zitat:

Zitat von SirTwist
Es gibt eine Freeware-Komponente EnableGroupbox. Wenn man bei dieser Komponente das Enable-Flag setzt/löscht überträgt sich das auf alle enthaltene Komponenten.

Man kann auch gleich das Panel aus der VCL nehmen.

WIng2005 11. Apr 2008 06:11

Re: Button.Enabled := True (Sehr oft...)
 
Hallo Gemeinde,

was müßte man anpassen, wenn die Buttons alle auf einem Notebook liegen und nur die, der aktiven Seite verändert werden sollen?
Im meinem Fall sind es Edits, die in Abhängigkeit einer Combobox enable:=true bzw. eben false zugewiesen bekommen sollen.
Dabei soll jedoch nur die aktive Seite betrachtet werden.

MFG
Steffen

mkinzler 11. Apr 2008 06:39

Re: Button.Enabled := True (Sehr oft...)
 
Ich würde dann eher ein PageControl einsetzen

WIng2005 11. Apr 2008 06:49

Re: Button.Enabled := True (Sehr oft...)
 
Mmmh, das ist ein wenig spät...
MFG
Steffen

RavenIV 11. Apr 2008 07:59

Re: Button.Enabled := True (Sehr oft...)
 
Du könntest auch mal einen anderen Weg gehen.
Falls alle Buttons immer gleichzeitig enabled / disabled werden sollen, dann:
- eine TAction definieren
- allen Buttons diese TAction zuweisen
- nur immer diese Action enablen / disabeln
- dann werden automatisch alle Buttons angepasst.

WIng2005 11. Apr 2008 08:49

Re: Button.Enabled := True (Sehr oft...)
 
Hört sich zumindest schonmal gut an. Bisher habe ich noch nicht mit TAction gearbeitet...schaue es mir mal
an. Vielen Dank...

MFG
Steffen

WIng2005 11. Apr 2008 10:59

Re: Button.Enabled := True (Sehr oft...)
 
OK...geht so nicht. Die Buttons erwähnte ich nur, um mich in den Thread "einzugliedern".
Tatsächlich handelt es sich (wie oben geschrieben) um Edits, welchen ich kein TAction zuweisen kann.

MFG
Steffen

RavenIV 11. Apr 2008 11:05

Re: Button.Enabled := True (Sehr oft...)
 
Zitat:

Zitat von WIng2005
OK...geht so nicht. Die Buttons erwähnte ich nur, um mich in den Thread "einzugliedern".
Tatsächlich handelt es sich (wie oben geschrieben) um Edits, welchen ich kein TAction zuweisen kann.

Hab ich ja auch nicht behauptet, dass es bei TEdit geht.

Meine Antwort war für das "Hauptthema" des Threads gedacht.
Dass DU es zweckentfremden willst, bzw uns falsche Infos gibst, ist DEIN Problem.

WIng2005 11. Apr 2008 11:34

Re: Button.Enabled := True (Sehr oft...)
 
Sollte kein Vorwurf sein...
Ich wußte nur vorher nicht, dass bei der Lösungssuche der Unterschied zw. Buttons und Edits
zum Problem wird. Wollte deshalb nun nicht extra nen neuen Thread aufmachen...

MFG
Steffen


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

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