然后限定自己写的组件只能摆一个?
如题 问题点数:100、回复次数:10Top
1 楼gpg(snake)回复于 2003-12-01 13:41:14 得分 0
写错了,是如何限定自己写的组件只能摆一个?Top
2 楼penu(懒猫·子在川上之再上征程·杀人无心之寓怒于静)回复于 2003-12-01 13:50:03 得分 10
一个最简单的办法:
将Name属性的值在设计时定义好,并将Name属性设为只读属性,这样如果在窗体中放多个组件的话会出现重名冲突,无法放置。Top
3 楼lilachue(静水思雅)回复于 2003-12-01 14:49:16 得分 8
对头!
同意,支持,赞助,理解,表扬!Top
4 楼TangSe(void_onering)回复于 2003-12-01 15:55:00 得分 50
不对头不同意不支持不赞助不理解不表扬!呵呵:)))
如果多个窗体呢?不就可以放多个了?
是否可以用引用计数?
static int CompCount;
TMyComp::CompCount=0;
__fastcall TMyComp::TMyComp()
{
if(CompCount>1)
{
throw(死机);
}
delete this;
}
Top
5 楼ljianq(泉深水清)回复于 2003-12-01 16:08:55 得分 8
楼上的可以,最好采用静态成员变量;
Top
6 楼pp616(坏蛋)回复于 2003-12-01 21:31:37 得分 8
用CreateMutex。Top
7 楼gpg(snake)回复于 2003-12-02 12:30:04 得分 0
昨天发了这个问题后,觉得有些不妥,因为这个问题没什么大的意义。
因为对于低手来说,组件的维护远比代码的维护困难的多。但对于高手来说,对组件维护比对代码维护要简单有效的多(它们不是一个量级的概念)。但我们(至少是我)对组件的兼容性的理解欠缺,因为大多数的聪明人喜欢精益求精(包括我这个不聪明的),于是乎对老的组件大动手脚,使之看来近乎完美,殊不知,以前的程序再也不能用它了。(CB6与以前版本好象就是这样)。那么,我们重新做个组件?
我现在很困惑,组件有什么好处,有很多好处。我可能一直困惑下去,也许有一天,会豁然开朗。
Top
8 楼hswu(hswu)回复于 2003-12-02 12:56:23 得分 8
组件有什么好处,有很多好处。我可能一直困惑下去,也许有一天,会豁然开朗
:)
说得好.......Top
9 楼jhwh(弹剑长歌(搬个凳子来灌水))回复于 2003-12-02 13:50:06 得分 8
呵呵,楼主很幽默哦。组件的好处就是OO的好处啊^_^Top
10 楼gpg(snake)回复于 2004-02-13 15:36:56 得分 0
当时未解决就结贴了。
一段时间以后,回头再看这个问题,终于解决。现给出答案,算是给搜索此贴的朋友一个交代。
答案如下。
构造中
FindAtom,
非NULL,就删除自己,并友好提示。(当然Free不能在Create中进行,new个Timer可解决)
NULL,就AddAtom
析构中
作过AddAtom,就DeleteAtom
当然会存在更好的解决办法,Borland自己的某些组件就有此功能,但我没有深究其代码。Top




