我总是不明白
sender
还有类型转换as的作用!!什么时候用!!很长时间都不太明白!只知道SENDER常用来判断 点了那个按钮这一种用法。请大虾指点、 能解释一下最好

解决方案 »

  1.   

    先说as 。从字面上很容易理解as的意思。 X as TX等价于TX(X)。就是说,把X这个对象,强制转换为TX类的对象。如果理解了is,就很容易理解as了。if X is TEdit then X as TEdit ....
    等价于
    if X is TEdit then TEdit(X) ....
    意思就是:如果X是TEdit类的(TEdit类的或TEdit的子类的)就把假设X是TEdit类的对象去做一些事情....
      

  2.   

    谢谢!还有呢??sender
    怎么给分呀??
      

  3.   

    Sender是Delphi很独到的一个地方。Sender就是事件的触发者。可以不必深入理解,只要知道“Sender就是事件的触发者”就行了。通常,Sender被声明为TObject类的。TObject类是所有类的祖先类。在使用时,Sender尽管是某一个实际的对象,但,既然被声明为TObject类的(TObject类只有少数的属性和方法),所以,我们一般要强制转换为可能的具体子类,才能使用。如:procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(TButton(Sender).Caption);
    end;
      

  4.   

    怎么给分:点击本页上方的“管理”,然后在密码框里输入你的密码,在我的某条回复下,打上分数,然后点击“给分”Sender一般用于代码重用。网上有许多相关介绍。举一例:可以让Button1、Button2、Button3....的OnClick事件都指向上面说的那个 TForm1.Button1Click过程,就不必重写代码了。哪个按钮点击了,就ShowMessage哪个按钮的Caption
      

  5.   

    那么使用sender时 就不能指定一个具体的对象了??对么??只是对类操作么?
    如例子不能写成:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(Button1(Sender).Caption);
    end;
      

  6.   

    Button1(Sender)这样是不对的,前面说过了:Sender as TX 等价于 TX(Sender)  而TX(Sender) 是一个强制类型转换。请参考一下教科书,TX一定要是一个“类型”,而非实例