Delphi Button Anzeigen

Hallo,

ich habe mehrer Buttons, die ich Anzeige und verberge.

So mache ich es:
Button1.visible := true;
.
.
Button10.visible := true;

Geht dies nicht irgendwie so?:
for i := 1 to 10 do begin
Button(i).visible := true;
end;

Danke im Voraus!

Na ja, so natĂĽrlich nicht, weil die Buttons nicht als Array vorliegen.

Ich sehe zwei Ansätze:

  • Du speicherst die Referenzen zu allen Buttons auf dem Form in einer Liste on Objekten (TObjectList), und die kannst Du dann mit einer Schleife abklappern. Nachteilig ist, dass Du die Liste im Quellcode aufbauen mĂĽsstest, wenn Du also auf dem Form einen Button dazu oder weg machst musst Du den Quellcode nachziehen

var ButtonList : TObjectList
aButton : TButton

…
ButtonList := TButtonList.create(true);

ButtonList.Add(Button1)
ButtonList.Add(Button2)
…
ButtonList.Add(Button10)

…

for i = 0 to ButtonList.Count -1

aButton := ButtonList[i];
aButton.visible := false;

eventuell klappt auch ButtonList[i].visible : true oder TButton(ButtonList[i]).visible := true.

ButtonList.free nicht vergessen.

(Quellcode aus dem Gedächtnis getippt und nicht getestet, sorry, hab grad kein Delphi zur Hand).

… oder (was ich machen würde), Du enumerierst die Controls auf dem Form (erkennst die Buttons (z.B. durch Vergleich des Klassennamens mit TButton, oder durch Auswertung der Caption, was auch immer passend ist). Da gibt es ein fast perfekt passendes Code-Beispiel:

http://stackoverflow.com/questions/539227/deleting-a…

… oder Du kombinierst beide und verwendest die eumeration der Controls um die Buttonliste automatisch zu betanken.

Das Kunststück der automatischen Methoden ist in jedem Fall, nicht alle Controls / alle Buttons zu beeinflussen, sondern - was in der Praxis meistens der Fall sein dürfte - je nach Rahmenbedingungen nur manche. Bei der selbst evrwalteten Objektliste aus Vorschlag 1 ist das per Design sowoeso gegeben. Die Automatik hats da schwerer - Du musst den Buttons, die zusammengehören, ein verwertbares Merkmal mitgeben, damit Du sie erkennen kannst. Da gibt es allerdings ganz viele Möglichkeiten dafür, frag einfach nochmal wenn Du da Hinweise brauchst, und beschreibe etwas genauer wie Deine Applikation die Buttons schalten soll.

Armin.