![]() |
Button herausfinden
Ich bins mal wieder und mein nächstes Problem ist da.
Zum Problem: Durch mehere Buttons wird ein und die selbe Form gezeigt. Wie finde ich nun herauswelcher Button geklickt wurde? |
Re: Button herausfinden
Hallo Phantom,
durch sender: TObject im OnClick Event des Buttons, also z. B.
Delphi-Quellcode:
Anstatt Caption kann natürlich auch Name (Name des Buttons) verwenden.
with sender as TButton do
begin ShowMessage(Caption); end; TButton wäre der Standard Button von Delphi, z. B. der BitBtn dann ist es TBitBtn. Gruß Jörg |
Re: Button herausfinden
Zitat:
Delphi-Quellcode:
EDIT: zu spät :drunken: procedure TForm1.FormShow(Sender: TObject); begin if (Sender is TButton) then showmessage((Sender as TButton).Name); end; lg. Astat |
Re: Button herausfinden
Danke euch beiden ...
Klappt wunderbar :spin2: |
Re: Button herausfinden
Wenn du je nach Button noch unterschiedliche Aktionen durchführen möchtest, kannst du auch die Tag-Eigenschaft der Buttons nutzen. Du gibst jedem Button in der Eigenschaft Tag eine andere Zahl (die kann man nämlich einfach per case unterscheiden). Das erste Assert stellt sicher, dass man nichs vergißt, wenn man einen Button nachträglich hinzufügt. Das zweite Assert ist Geschmackssache ob man es braucht, aber es hilft beim Entwickeln schon (jedenfalls mir :mrgreen: )
Delphi-Quellcode:
if (Sender is TButton) then
case (Sender as TButton).Tag of 1: ShowMessage('Button 1 wurde geklickt'); 2:; 3: Beep; 4: Application.Terminate; else Assert(False,'Unbekannter Tag. Evtl. eine Änderung vergessen?'); end else Assert(False,'Sender ist kein Button!'); |
Re: Button herausfinden
Zitat:
Delphi-Quellcode:
if Sender is TButton then
ShowMessage(TButton(Sender).Name); |
Re: Button herausfinden
Zitat:
|
Re: Button herausfinden
Kleine Frage:
Delphi-Quellcode:
oder besser
case (Sender as TButton).Tag of
Delphi-Quellcode:
:roll: :?:
case TButton(Sender).Tag of
|
Re: Button herausfinden
IS ist 'ne Funktion, welche den Typ prüft und gibt einen Boolean mit dem Ergebnis zurück.
AS ist 'ne Prozedur, welche ebenfalls prüft, aber diese lößt bei Nichtübereinstimmung eine Exception aus. Also AS nach erfolgreichem IS ist eine unnötige Prüfung. |
Re: Button herausfinden
Zitat:
Delphi-Quellcode:
entspricht etwa
s := (Sender as TButton).Name;
Delphi-Quellcode:
- siehe _AsClass in Unit System. D.h. für "as" muss tatsächlich zur Laufzeit Code ausgeführt werden, während der "harte" Cast nur zur Beruhigung des Compilers dient, aber zur Laufzeit keine Auswirkungen mehr hat.
if Sender is TButton then
s := TButton(Sender).Name else raise EInvalidCast.Create; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz