Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Auslöser? (https://www.delphipraxis.net/64661-ausloeser.html)

fLaSh11 6. Mär 2006 18:20


Auslöser?
 
Hallo allerseits,

mal wieder ne Frage:
Ich habe sagen wir 10 Buttons auf einer Form. Allen ist bei OnClick das Ereignis "Button1OnClick" zugewiesen. Wie kann ich im nachhinein (wenn z.B. Btn7 gedrückt wurde) herausfinden, wer der Auslöser was??? ( also Btn7) :gruebel:

Ich denke, das wisst ihr ausm Stehgreif :mrgreen: ... thx

arbu man 6. Mär 2006 18:21

Re: Auslöser?
 
Delphi-Quellcode:
sender.name
da ist der name des buttons drin

Ultimator 6. Mär 2006 18:22

Re: Auslöser?
 
Im OnClick:
Delphi-Quellcode:
ShowMessage((Sender as TButton).Name);

Thorben77 6. Mär 2006 18:59

Re: Auslöser?
 
Zitat:

Zitat von arbu man
Delphi-Quellcode:
sender.name
da ist der name des buttons drin

Nope, "Sender" ist nur ein "normales" Objekt und das hat keine Eigenschaft "Name". Die Eigenschaft gibt es erst ab TComponent. Also entweder 'ne Typumwandlung zum TButton oder auch nur TComponent:
Delphi-Quellcode:
procedure TFormXYZ.ButtonXYZClick(Sender: TObject);
begin
  // nicht empfehlenswert, mit "harter" Typumwandlung; da kann sonstwas passieren:
  ShowMessage(TButton(Sender).Name);
  ShowMessage(TComponent(Sender).Name);

  // die etwas "sicherere" Variante; wenn der Sender mal kein Button bzw. keine Komponente ist, gibt's 'n EInvalidCast-Fehler
  ShowMessage((Sender as TButton).Name);
  ShowMessage((Sender as TComponent).Name);

  // mit "dynamischer Typüberprüfung"; wenn der Sender nicht den richtigen Typ hat, passiert nix:
  if Sender is TButton then
    ShowMessage((Sender as TButton).Name);
  if Sender is TComponent then
    ShowMessage((Sender as TComponent).Name);

  // oder auch noch:
  if Sender is TButton then // oder TComponent
    ShowMessage(TButton(Sender).Name);
end;
Das man da soviel zu schreiben kann :mrgreen: .

MfG

thkerkmann 6. Mär 2006 19:15

Re: Auslöser?
 
Hi,

und wie wär es ganz einfach mit
Delphi-Quellcode:
  if Sender = btn7 then
Dann braucht es keinen Stringvergleich, keine Typumwandlung....

Sharky 6. Mär 2006 19:20

Re: Auslöser?
 
Hai fLaSh11,

"Auslöser" ist ein ziemlich nichtssagender Titel für einen Thread.
Damit andere User, welche womöglich die selbe Frage haben eine Antwort über die Suchfunktion finden würde ich dich doch bitten deinem Thread einen etwas aussagefähigeren Titel zu geben.

Danke. :-D

fLaSh11 8. Mär 2006 14:40

Re: Auslöser?
 
also
1. danke, klappt
2.
Zitat:

Zitat von Sharky
..bitten deinem Thread einen etwas aussagefähigeren Titel zu geben

ich hab keinen parat... schlag doch mal einen vor.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz