关于继承于TCheckListBox的子类对 Items属性的修改
2007-04-12 17:20
239 查看
在子类中重写了父类的属性
__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
);
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
__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
);
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
相关文章推荐
- 关于子类继承父类属性的问题讨论(希望得到大神指点)
- 关于Scala子类继承父类属性的问题释疑---子类构造器参数不要与父类属性同名
- Hibernate继承(2)子类属性生成在自己的一张表中,父类的属性一张表
- 关于给javascript对象添加、删除、修改对象的属性
- 关于子类继承父类,父类调用被子类重载的方法是输出什么
- 关于Dialer在win7/vista下上网卡在不同USB口来顺插拔导致的dial-up属性意外修改的问题的解决
- 子类继承父类private属性问题
- 关于类继承中子类方法比父类方法丰富,一个引用值传递的小问题
- 必须得说一下,子类关于从父类继承过来的private成员这点事儿
- java中子类是否继承父类私有属性的问题
- js中的子类继承父类的方法和属性
- C++继承中关于子类构造函数的写法
- 关于子类继承父类的那些讨论(不断更新中......)
- 关于Javascript中通过实例对象修改原型对象属性值的问题
- 窗体继承时对象属性的修改问题
- 关于Highcharts图表组件动态修改属性的方法(API)总结之Series
- 【转】visio中关于shape属性的修改和读取
- Java中子类能够继承父类的private属性或方法吗?
- visio中关于shape属性的修改和读取
- java 子类有没有继承父类的私有属性和私有方法呢_