具体例子procedure ToggleCheck(Sender:TObject); var item:TMenuItem; begin item := sender as TMenuItem;//这句什么意思? item.Checked := not item.Checked; end;这段代码什么意思啊?
a is tb 判断a是不是类tb的实例 a as tb 将a转化为类tb的实例
谢谢回复 我总结下:sender参数返回 调用本过程的那个对象的引用,但是在过程体中不能直接应用sender, 因为编译通不过(系统必须明确知道sender是什么类的对象的引用). 所以,sender as TMenuItem这个语句就是告诉编译器sender是个TmenuItem类的一个对象的引用. 不知对不对啊
procedure TForm1.Button1Click(Sender: TObject); begin if Sender is TButton then (Sender as TButton).Caption:='我是一个按钮'; end;
我想应该是转换的意思吧,比如在SQL里select find1 as f_1,find2 as f_2 from table 假如原来就没有as转换的话得到到的结果: find1 find2 --------------- xxx ccc x1x2 c1c2而使用as转换后得到的结果是: f_1 f_2 ------------ xxx ccc x1x2 c1c2
var
item:TMenuItem;
begin
item := sender as TMenuItem;//这句什么意思?
item.Checked := not item.Checked;
end;这段代码什么意思啊?
判断a是不是类tb的实例
a as tb
将a转化为类tb的实例
我总结下:sender参数返回 调用本过程的那个对象的引用,但是在过程体中不能直接应用sender,
因为编译通不过(系统必须明确知道sender是什么类的对象的引用).
所以,sender as TMenuItem这个语句就是告诉编译器sender是个TmenuItem类的一个对象的引用.
不知对不对啊
begin
if Sender is TButton then
(Sender as TButton).Caption:='我是一个按钮';
end;
find1 find2
---------------
xxx ccc
x1x2 c1c2而使用as转换后得到的结果是:
f_1 f_2
------------
xxx ccc
x1x2 c1c2
AS 类型转换