ACTION问题,希望各位好手,多多出手,重整当年BBS的风采,谢谢? ( 积分: 50 )

  • 主题发起人 主题发起人 LongHai
  • 开始时间 开始时间
L

LongHai

Unregistered / Unconfirmed
GUEST, unregistred user!
大哥:
 你好!希望各位好手,多多出手,重整当年BBS的风采,谢谢?
一个BUTTON设置了关联的ACTION1,当然我在BUTTON单击了按钮,执行了ACTION1如下事件,我在ACTION1里能知道目前这事件的触发者吗,也就是BUTTON1?
procedure TForm1.Action1Execute(Sender: TObject);
begin
Showmessage('A');
end;
 
大哥:
 你好!希望各位好手,多多出手,重整当年BBS的风采,谢谢?
一个BUTTON设置了关联的ACTION1,当然我在BUTTON单击了按钮,执行了ACTION1如下事件,我在ACTION1里能知道目前这事件的触发者吗,也就是BUTTON1?
procedure TForm1.Action1Execute(Sender: TObject);
begin
Showmessage('A');
end;
 
if Sender = button1 then
ShowMessage('按钮1触发的Action');
 
procedure TForm1.Action1Execute(Sender: TObject);
begin
if (Sender is TButton) and ((Sender as TButton)=Button1) then
Showmessage('Button1 is Pressed');
Showmessage('A');
end;
 
经过测试
procedure TForm1.Action1Execute(Sender: TObject);
begin
Showmessage(Sender.ClassName);
end;
Showmessage显示出来的内容是TAction,有没有更好的方法?
 
稍等,我去测试下。
 
ShowMessage((Sender as TAction).ActionComponent.Name);
这样就可以了。
 
楼上的为正解
ShowMessage(TAction(Sender).ActionComponent.Name);
 
不好意思,我去调试了一下,Delphi5里面会提示找不到ActionComponent该变量!
 
不是吧,是D5?可惜我机器现在没装d5,我是在d7下测试的,通过没问题。要不你看看d5的帮助,注意看Action对象的属性,肯定有属性能告诉你是哪个对象触发了Execute事件的。
 
那就用这个先代替用吧.
if ActiveControl is TButton then
ShowMessage(TButton(ActiveControl).ClassName);
 
to czcn
这样没用的,对button有效,如果点击的是speedbutton或者是菜单项呢?
 
感谢大家的发言:
 目前是这样的在BUTTON属性那边不要设置Action的属性值,而直接设置Button的OnClick为Action1Execute就可以,不过效果差了很多,希望大家多多发言!
 
后退
顶部