事件的对象(60分)

  • 主题发起人 主题发起人 mywuti
  • 开始时间 开始时间
M

mywuti

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获知事件的对象?如Button1,我知道可以用Sender as tbutton,但至少应知道是个TButton,
我如何在未知情况下获知对象?最终引用该对象的属性及方法。
 
什么意思
 
如创建一个过程,Procedure AAA(Sender:TObject);
其中引用 (Sender as TButton).属性 在过程中处理,那么这个过程AAA必须放在TButton
事件中调用,放在如TSpeedButton等事件调用AAA是不行的。
所以有如题的想法,也就是事件调用处的对象。要用什么方法呢?
 
你看这个行不行!

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
SpeedButton1: TSpeedButton;
procedure Button1Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
private
procedure DoClick(Sender : TObject);
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
DoClick(Sender);
end;

procedure TForm1.DoClick(Sender: TObject);
begin
if Sender is TControl then
ShowMessage(Sender.ClassName);
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
DoClick(Sender);
end;

end.
 
To taozhiyu
不行啊,只返回对象的类名称,我无法访问对象的属性,如属性Cancel。
访问到窗体的属性又该怎么办,谢谢!
 
Sender是指触发此事件的Object。
如果按你说的,完全可是避开这个问题,找别的方法实现!
 
虽然不是很满意,也谢谢taozhiyu
 
后退
顶部