Wie bekomme ich den Namen eines Buttons nach dem Click ?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
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 ?

Beitrag von malabarista »

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" ? ).

wp_xyz
Beiträge: 5410
Registriert: Fr 8. Apr 2011, 09:01

Re: Wie bekomme ich den Namen eines Buttons nach dem Click ?

Beitrag von wp_xyz »

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;

Benutzeravatar
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 ?

Beitrag von photor »

... 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

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 ?

Beitrag von malabarista »

Klasse, - genau so etwas wie den "Tag" habe ich gesucht.
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 ?

Beitrag von delphifreak »

Hallo,

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 ?

Beitrag von malabarista »

Das ist auch gut zu wissen.
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 ?

Beitrag von pluto »

procedure TForm1.GemeinsamesBtnClick(Sender: TObject);
var
_name:string;
begin
_name:=TButton(Sender).Name;
end;
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).

Eine Überprüfung würde so aussehen:
if sender is TButton then ....
MFG
Michael Springwald

Antworten