关于sender的使用(100分)

  • 主题发起人 主题发起人 yangzhou007
  • 开始时间 开始时间
Y

yangzhou007

Unregistered / Unconfirmed
GUEST, unregistred user!
记得在学习DELPHI是,做过WINDOWS下的计算器,
当时是用SPEEDBUTTON来实现数据的录入。
后来在一次面试考试中,对方的技术人员对我说,用SENDER可以省去很多语句。
利用继承父类可以实现对数据的录入,可惜当时我比较沮丧,没有记全他的语句。
只记得是SENDER····AS···TCONTRL····
希望各位能抽空告诉我这个菜鸟!
 
比如你做了几个菜单:File下的New,Open....
分别为New,Open的tag属性设置为1,2,那么,你在单击的事件中,可以:
case (Sender as TMenuItem).tag of
1 : ...
2 : ...
end;
 
呵呵,我给一个例子给你,一看就会明白的!
Sender就是现在所操作的对象,它是从TObject类继承而来,可以是任何类;
如:
if Sender=button1 then dosth else
if Sender=button2 then dosth else
if……
用这样的语句你可以给button1的OnClick事件写代码其它的button控件可以直接引用
Button1的Onclick事件;
if Sender is 某类 then (Sender as 某类).该类的任何属性和方法
希望我所说的对你有帮助!
 
“As”这个单词不仅仅在英语中用处极大,在Delphi中亦然!
当我们想为数个“同类”组件共享代码时,即可发挥她的巨大
作用:我们只需为其中一个组件编写代码即可。
举个例子:想让一组文本编辑框在得到输入焦点时背景颜色变为茶色,
失去焦点是恢复系统颜色
//得到输入焦点时
procedure TForm1.Edit1Enter(Sender: TObject);
begin
(Sender as TEdit).color:=ClTeal;
end;

//失去输入焦点时
procedure TForm1.Edit1Exit(Sender: TObject);
begin
(Sender as TEdit).color:=ClWindow;
end;

这时你的一组TEdit都可以使用这些代码?
不用写象
Edit1.color:=ClTeal;
Edit2.color:=ClTeal;
这样的代码。
 
多人接受答案了。
 
to yangzhou007:怎样用sender来简化代码,你现在想明白了吗,给我点提示,我想得很吃力啊
谢谢
 
后退
顶部