Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnClick-Prozedurname in String umwandeln (https://www.delphipraxis.net/70112-onclick-prozedurname-string-umwandeln.html)

faux 25. Mai 2006 10:35


OnClick-Prozedurname in String umwandeln
 
Hallo!

Ich erzeuge auf meiner Form massenhaft Buttons und da wollte ich mir aus Debuggründen im Hint jeden Buttons den Namen der OnClick-Prozedur anzeigen lassn. Wie mache ich das am Besten? Hint := String(OnClick); geht ja mal nicht.

Grüße
Faux

turboPASCAL 25. Mai 2006 10:56

Re: OnClick-Prozedurname in String umwandeln
 
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
begin
  showmessage((Sender as TButton).Name);
end;
An sonsten würde ich einfach die OnClick überschreiben und dann dort den Hint ausgeben wenn du die Buttons dyn. erstellen willst.

jbg 25. Mai 2006 10:56

Re: OnClick-Prozedurname in String umwandeln
 
Das kann man so lösen (pseudo-code)#
Delphi-Quellcode:
var
  m: TMethod;
begin
  m := TMethod(Form1.OnClick);
  ShowMessage( TObject(m.Data).MethodName(m.Data) );
end;
Das funktioniert aber nur, wenn die Methode published ist, also auch mittels des ObjectInspectors zugewiesen werden kann.

faux 25. Mai 2006 11:06

Re: OnClick-Prozedurname in String umwandeln
 
Zitat:

Zitat von jbg
Das funktioniert aber nur, wenn die Methode published ist, also auch mittels des ObjectInspectors zugewiesen werden kann.

Hab sie jetzt mal nach published gesetzt (in der Form). Weiß nicht ob man das darf oder nicht? Jedoch wird mit ein Leerer String zurückgegeben. :S

Delphi-Quellcode:
OnClick := PressActionKey;
{$IF Defined(DEBUG)}
ShowHint := True;
Hint := IntToStr(Tag) + ' - ' + TObject(TMethod(OnClick).Data).MethodName(TMethod(OnClick).Data);
{$IFEND}
Grüße
Faux

Lannes 25. Mai 2006 17:49

Re: OnClick-Prozedurname in String umwandeln
 
Hallo,

ersetz mal die Zeile:
Delphi-Quellcode:
Hint := IntToStr(Tag) + ' - ' + TObject(TMethod(OnClick).Data).MethodName(TMethod(OnClick).Data);
durch:
Delphi-Quellcode:
Hint := IntToStr(Tag) + ' - ' + TObject(TMethod(OnClick).Data).MethodName(TMethod(OnClick).Code);
dann sollte es funktionieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 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