关于继承于TCheckListBox的子类对 Items属性的修改

 在子类中重写了父类的属性

__property TStringList* Items = {write = witem, read = ritem};

void __fastcall witem(TStringList* s);

TStringList* __fastcall ritem();

在这个属性的读写函数中,可以对Items指针的地址进行操作和修改,得到完整的数据并加入自己的代码。

然而,当修改或者调用Items中的属性和方法的时候。就不能即时的对数据变化做出同步反应,执行加入的代码。

XX->Items->Add("Test"); // 执行顺序: TStringList* l =XX->Items::ritem(); l->Add(); 无法了解到加入的数据。并对其执行操作。

 对于这种情况可以做一种折中的方法,不过会对代码的效率有一定影响。

[ 在调用属性Items的时候,对需要的数据进行读取并做出判断。如:写一个专用函数当读取属性时执行,对需要同步反应的数据做出调整。

XX->Items->Add("Test");    //XX->Items[3] = "Test";

//如果Items->Count 发生变化,则需要对对象Other做修改,Other->Count = Items->Count;

bool __fastcall rechangeother()

{

if(Other->Count==XX->Items->Count ) return false;

Other->Clear();

for(int n = 0; n <XX-> Items->Count; n++)Other->Add(XX->Items->Strings[n]);

return true;

}

在执行代码中:

{

rechangeother();

XXX = Other->Items->Strings[XX->Items->Count];

}

此种方法会对程序的编写思路产生影响,在有大量的代码时会产生问题。使情况变复杂。

这时可以使用这种方法,不过同样会对代码效率产生影响。还有可能比第一种效率差,可它的安全性较高。

修改自定义的属性方法ritems,且仍需一个辅助函数。同上面的rechangeother,对数据变化做响应。

TStringList* __fastcall ritems()
{

rechangeother();

return Parent::Items;

}

这样每次调用属性Items的时候都会修正数据的准确性。

而无须在做判断。不过可惜了效率。

                                                <小艺>哪位高人有好方法请给本人信息,谢谢。

                                                  email: programuser@citiz.net    qq: 694796939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值