Forum: PC-Programmierung Delphi Button[i].click


von vom_Fremd-PC_als_Gast (Gast)


Lesenswert?

Hi

Ich weiss es im Moment nicht, wie es geht, daher hab da mal eine Frage:

Ich habe

Button1
Button2
Button3
Button4
Button5
Button6
Button7

Wie kann ich einen Button auswählen in dem ich die letzte Nummer mit 
einem Aufruf übergebe?

Z.B.

Button[i].click;

geht ja leider nicht, da kein Array für die Button angelegt ist.
Ich denke dass man zuerst ein Array von Buttons anlegen muss und dann 
eben über das Array den Button auswählt, wie aber diesen Button dann ( 
Name ) in der Form beschreiben?

Ich hoffe ich habe es verständlich formuliert.

Vielen Dank!

von Rene H. (Gast)


Lesenswert?

Ich weiss nicht ob ich Deine Frage Richtig verstanden habe, aber ich 
denke Du suchst das:

http://stackoverflow.com/questions/1231669/get-an-instance-of-a-persistent-object-given-the-identifier-in-string

Grüsse,
René

von hagi (Gast)


Lesenswert?

In Tag wird der Index des Buttons abgelegt.

Button1.Tag := 1;
Button2.Tag := 2;
Button3.Tag := 3;
Button4.Tag := 4;
Button5.Tag := 5;
Button6.Tag := 6;
Button7.Tag := 7;

Allen Buttons wird dieselbe OnClick-Procedure zugewiesen.

Button1.OnClick := MyButton1Click;
Button2.OnClick := MyButton1Click;
Button3.OnClick := MyButton1Click;
Button4.OnClick := MyButton1Click;
Button5.OnClick := MyButton1Click;
Button6.OnClick := MyButton1Click;
Button7.OnClick := MyButton1Click;

In der OnClick-Procedure wird über Tag der Auslöserbutton ermittelt.

procedure TForm1.MyButton1Click(Sender: TObject);
begin
  ShowMessage(IntToStr(TButton(Sender).Tag));
end;

von vom_Fremd-PC_als_Gast (Gast)


Lesenswert?

hagi schrieb:
> In Tag wird der Index des Buttons abgelegt.

Hagen ;-)

danke!
genau das wars ;-) ...

das andere geht ja so oder:

VAR
  Buttons : ARRAY [0..10] OF TButton;
{...}
FOR n:=Low(Buttons) TO High(Buttons) DO
BEGIN
  Buttons[n] := TButton.Create(Self);
  {...}
END;

Vielen Dank! ;-)

von vom_Fremd-PC_als_Gast (Gast)


Lesenswert?


von Purzel H. (hacky)


Lesenswert?

Man kann immer auf normale objekte von einem Array her zugreifen.
Solange man die objekte vom array her nicht instanziert.

Var u:array[1..10]of tbutton;

u[1]:=button1; ...

u[1].click()

von Robert L. (lrlr)


Lesenswert?

und noch viel sinnvoller ist, die buttons erste zur laufzeit zu 
erzeugen..

von npn (Gast)


Lesenswert?

Robert L. schrieb:
> und noch viel sinnvoller ist, die buttons erste zur laufzeit zu
> erzeugen..

Warum ist das sinnvoller?
Es ist eine Möglichkeit, okay. Aber wofür existiert dann der 
Formulardesigner?

von Purzel H. (hacky)


Lesenswert?

Den Formulardesigner benutzt man fuer statische Objekte, die dynamische 
Generierung fuer dynamische Objekte. Wenn man den Button eh braucht, 
wuerde ich ihn auch mit dem Designer platzieren. Und nacher mit einem 
Array ansprechen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.