Wie bekomme ich den Namen eines Buttons nach dem Click ?
-
malabarista
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Wie bekomme ich den Namen eines Buttons nach dem Click ?
ich habe ein Form mit 40 Buttons. Da es nun keinen Sinn macht für jeden Button eine eigene OnClick-Routine zu schreiben (weil die alle bis auf einen numerischen Parameter gleich sind),
wollte ich diesen einen Parameter in den Namen des Button hineinstecken.
Beispiel: butt01 für den Button mit dem Parameter 1, butt02 für den Button mit dem Parameter 2, usw.
Ich habe allerdings keine Ahnung, wie ich in der OnClick-Routine den Namen des Buttons bestimmen kann (irgendwie über den "Sender" ? ).
wollte ich diesen einen Parameter in den Namen des Button hineinstecken.
Beispiel: butt01 für den Button mit dem Parameter 1, butt02 für den Button mit dem Parameter 2, usw.
Ich habe allerdings keine Ahnung, wie ich in der OnClick-Routine den Namen des Buttons bestimmen kann (irgendwie über den "Sender" ? ).
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
Für solche Zwecke gibt es die Eigenschaft "Tag" (sowas wie "Aufkleber"), Sie wird sonst nicht verwendet, und man kann hier einen beliebigen Integer-Wert reinschreiben, ohne etwas kaputt zu machen. Das kann man zur Designzeit im Object-Inspector erledigen, oder aber natürlich auch zur Laufzeit, z.B. im FormCreate. Den Wert kannst du dann in der gemeinsamen OnClick-Routine in einer case-Anweisung abfragen:
Code: Alles auswählen
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Tag := 1;
Button2.Tag := 5;
// usw
end;
procedure TForm1.GemeinsamesBtnClick(Sender: TObject);
var
btn: TButton;
begin
btn := Sender as TButton;
case btn.Tag of
1: Mache_das_fuer_den_Button_mit_Tag_1;
5: Mache_das_fuer_den_Button_mit_Tag_5;
// etc.
end;- photor
- Beiträge: 536
- Registriert: Mo 24. Jan 2011, 21:38
- OS, Lazarus, FPC: Arch Linux: L 3.2 (Gtk2) FPC 3.2.2
- CPU-Target: 64Bit
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
... oder schau mal hier: http://www.lazarusforum.de/viewtopic.php?f=10&t=9777. Ich hatte ein ähnliches Problem. Am Ende erwähnte Lösung klappt hervorragend.
Ciao,
Photor
Ciao,
Photor
-
malabarista
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
Klasse, - genau so etwas wie den "Tag" habe ich gesucht.
Dankeschön.
Dankeschön.
-
delphifreak
- Beiträge: 31
- Registriert: Di 10. Mär 2015, 19:08
- OS, Lazarus, FPC: Mint 21.3 Lazrus 3 Win10/Win11 Delphi 12.x Athens
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
Hallo,
den Namen des Buttons (oder alle anderen Properties)
bekommst du so:
den Namen des Buttons (oder alle anderen Properties)
bekommst du so:
Code: Alles auswählen
procedure TForm1.GemeinsamesBtnClick(Sender: TObject);
var
_name:string;
begin
_name:=TButton(Sender).Name;
end;
-
malabarista
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
Das ist auch gut zu wissen.
Falls ich mal einen String übergeben möchte ("Tag" ist ja nur integer).
Falls ich mal einen String übergeben möchte ("Tag" ist ja nur integer).
-
pluto
- Lazarusforum e. V.
- Beiträge: 7199
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?
Ich würde hier noch eine Überprüfung einbauen, ob der Sender wirklich ein TButton ist. Oder einfach von TComponent ausgehen(Wenn ich mich nicht täusche).procedure TForm1.GemeinsamesBtnClick(Sender: TObject);
var
_name:string;
begin
_name:=TButton(Sender).Name;
end;
Eine Überprüfung würde so aussehen:
if sender is TButton then ....
MFG
Michael Springwald
Michael Springwald