关于delphi中的事件中的参数(Sender: TObject)的问题(50分)

  • 主题发起人 主题发起人 DragonInCity
  • 开始时间 开始时间
D

DragonInCity

Unregistered / Unconfirmed
GUEST, unregistred user!
如何能通过参数Sender得到此过程所在的单元名称和触发此事件的控件名称?(注:Sender可以为窗体,按钮,输入框,菜单.....等)
 
if Sender is 对象 then
Sender as 对象:=xxx
 
To lmxcyx:
太多了,总不能都一一判断吧
 
if Sender is TComponent then begin
ShowMessage(TComponent(Sender).Name);
end;
 
也不行呀,不能全部都解决,当我使用TAction时就不行,因为这时的Sender是TPopupList类,而TPopupList是由TList-TObject类继承来的
 
好象不对呀,我现在要做的是通过TApplicationEvent组件的OnException事件截获程序的所有错误,为什么通过Action触发的错误到了OnException中后Sender参数变成了TPopupList类了,而不是TAction类?
 
有点晕,决定另开一贴:http://www.delphibbs.com/delphibbs/dispq.asp?lid=3493129,请大家积极参与
 
这个Sender只是VCL中定义的一个变量,它代表当前事件的发起者。只有方法中定义了这个变量才可以使用Sender.
 
To happycyp:
有点不太明白你说的意思呀,能不能说的具体点,谢谢!
 
就是说只有VCL的事件中的参数中有Sender这个参数时,才可以使用它。否则不能使用它。
它也只是一个对象变量而已,只是绝大多数VCL控件的事件中都定义了它。

但在你自己定义的方法中,如果没有定义这个变量 ,你就不能使用它。
 
我说说我的想法:我想通过ApplicationEvent控件的OnException事件来获取程序中出现的错误,然后将它们放到数据库中,这样我就不用每一个动作中都放一个try...except来获取错误信息了(麻烦),现在问题的关键是我如何能够在OnException事件中获取产生错误的单元名称和控件名称?(当然,控件可以是button、菜单、TAction等)
 
建议看看有关RTTI的内容,兴许有帮助。
 
后退
顶部