帮我解释一下这条语句:type .........of object?(100分)

  • 主题发起人 主题发起人 greenbamboo
  • 开始时间 开始时间
G

greenbamboo

Unregistered / Unconfirmed
GUEST, unregistred user!
type TTVAdvancedCustomDrawItemEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode; State:
TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean) of object;

假如我现在这样定义个对象:
FAdvancedCustomDrawItem:TTVAdvancedCustomDrawItemEvent ;
在执行这条语句 FAdvancedCustomDrawItem(sender,Node,State,Stage,true,true)时
它是怎么走(调用)的?
 
你必须定义一个类过程,参数与(Sender: TCustomTreeView; Node: TTreeNode; State:
TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean)
一样,如Txxx.AAA(...)。
然后
FAdvancedCustomDrawItem := AAA;
FAdvancedCustomDrawItem(sender,Node,State,Stage,true,true);即等于AAA(sender,Node,State,Stage,true,true);



 
of object就是表示这是一个对象的方法, 这种声明一般都用在定义类的事件的时候.
也就是这种类型的变量必须放在类中进行声明.
其实说白了 他比普通的函数或过程多了一个隐含参数 Self:TObject,换言之差不多
就是
procedure(Self:TObject;....);
 
请问:hanyongjian

如果这个类有好几个过程,参数与他都一样,应该执行那个过程?
 
hanyongjian的话是对的
 

Similar threads

后退
顶部