有关我们的组件前缀专家
嗬嗬,不管谁看到,考虑一下我的这个建议吧。
我们的这个专家是使用FormNotifier截获这个新创建的控件的新名字。然后加入到生成的控件的
列表中。之后用ApplicationEvents来修改。
我的意见大概有如下几点:
一、对于控件,我们没有必要用FormNotifier来接获这个控件生成。
Delphi为我们提供了CM_CONTROLCHANGE这个消息,通过这个消息可以给刚插入控件修改。但是,
这个消息是TWinControl发出的,但是是应用在TControl的,也就是说,不可视化控件TComponent
建立的是无能为力的。可以有这么一个类方法,Message.Control就是插入的控件:
procedure CMControlChange(var Message:TCMControlChange); message CM_CONTROLCHANGE;
CM_CONTROLCHANGE 这个消息是从这里
procedure TWinControl.InsertControl(AControl: TControl);
procedure TWinControl.RemoveControl(AControl: TControl);
发出的。
我找了,其他地方没有。
我提出的原因是,用AppEvent会不停的修改,这个专家主要的用途就是在控件建立的时候规范
化的命名,我后面作出了修改,就说明我不需要前缀专家的照顾了。我每次对控件做出新的修改,尽管
不用前缀,那是有我的理由的,但是框框又出来了。我感到无奈。如果用ApplicationEvents,我建议
把OnIdle事件适时地置为空。
我昨天大概写到这里,突然想到TComponent是否可以,竟然不可以,所以就没有发,在做实验试
试看,我想个别的办法,能不用Notifier尽量不用,这个太不方便了。或者不用ApplicationEvents,
这个事我最无奈的……
二,对于前缀的判断,是否应该加入大小写不敏感,这点我感到无奈是因为,我的同事喜欢把前缀
命名为大写,比如一个TLookUp控件,他命名为,LKContractID,但是到我这里之后,就给命名为
lkLKContractID1,其他类似。同样无奈产生在我们做的批量生成控件的工具上,生成一批控件,就因
前缀是LBL不是lbl,是LK不是lk,就弹出十几个框框……
|