先说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类的对象去做一些事情....
谢谢!还有呢??sender 怎么给分呀??
Sender是Delphi很独到的一个地方。Sender就是事件的触发者。可以不必深入理解,只要知道“Sender就是事件的触发者”就行了。通常,Sender被声明为TObject类的。TObject类是所有类的祖先类。在使用时,Sender尽管是某一个实际的对象,但,既然被声明为TObject类的(TObject类只有少数的属性和方法),所以,我们一般要强制转换为可能的具体子类,才能使用。如:procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(TButton(Sender).Caption); end;
等价于
if X is TEdit then TEdit(X) ....
意思就是:如果X是TEdit类的(TEdit类的或TEdit的子类的)就把假设X是TEdit类的对象去做一些事情....
怎么给分呀??
begin
ShowMessage(TButton(Sender).Caption);
end;
如例子不能写成:
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Button1(Sender).Caption);
end;