捕捉特殊事件(200分)

  • 主题发起人 pengjinlongex
  • 开始时间
P

pengjinlongex

Unregistered / Unconfirmed
GUEST, unregistred user!
我在开发一个控件,就是将tstringgrid与theadercontrol配合起来用,本人碰到一个难题,
我想在theadercontrol的sections的section在增加或减少,既sections.add之类时,
我需要处理一个事情,我该整样做;
我的类从twincontrol继承,与tstringgrid和theadercontrol是依赖关系,
tstringgrid和theadercontrol是我的类的成员类
 
用属性保护私有域的方法:
private
fsections :TSections;
fOnSectionChanged:TNOtifyEvent;
procedure SetSectons(value:Tsections);
public
Property sections :TSections read fsections write SetSections;
Property OnSectionChanged: TNotifyEvent read fOnSectionChanged write SetOnSectionChanged;
....
TTheadercontrol.SetSectons(value:Tsections);
begin
fsections := value;
if assigned(fOnSectionChanged) then
fOnSectionChanged(self);
end;

大概就这么个意思.

 
各位高手,急用!急用!
分不够再加,另开贴加500分
 
to xeen
TTheadercontrol.SetSectons(value:Tsections);
begin
fsections := value;
proc;//某过程
end;
proc 根本不执行,所以我才问各位,希望能解决,谢谢
 
为什么不执行,单步调试?
在public和published声明的大都是属性,它通过
一对方法(通常为getxxxvalue和setxxxvalue)和一个private域相连。
当对属性赋值时,实际上就是调用setxxxvalue改变pivate域的值。
在此过程中就可以根据条件调用事件处理函数。
 
在proc 前后及 proc 中放个 showmessage ,跟踪一下。
 
根本不执行
 
如果你的proc中没有任何有意义的代码,delphi的编译优化就会把它
去掉,不会执行任何代码.
你应该定义一个事件属性,实际上是一个过程指针,而不是仅仅定义一个
procedure.
 
假如属性是基本数据类型,setXXX可以执行,假如属性为类类型,则根本不执行SETXXX,
我理解: 类数据类型在read时,并不是赋了一个相同的数据,仅仅是赋了一个该数据的
地址,所以对属性的赋值就直接是对该类数据的写操作,所以根本不会执行setXXX了,
而我的问题是要在写操作时,做一个事情,请各位大虾指点
 
我还是不太明白你到底在做什么、想如何实现! 能不能说得在具体点
可能也是我太笨 :(
 
在THeaderControl中增加section后它肯定要触发OnDrawSection事件,你可以在此事件中判断
是否增加或减少了section,并相应调用你自己的处理过程.
在private增加一个变量如sn记录section的当前个数,然后在OnDrawSection中判断section的个数
是否与变量sn相同,不同肯定是增加或减少了最后相应处理.
 
OnDrawSection在section增加后根本不执行,随便用一个showmessage去跟踪,
在增加section后没反应(在headercontrol控件中没反应)
 
多人接受答案了。
 
顶部