构造一个类似于TdataSource的构件的两个问题(100分)

  • 主题发起人 主题发起人 sonicer
  • 开始时间 开始时间
S

sonicer

Unregistered / Unconfirmed
GUEST, unregistred user!
新构件要求:只有一个DataSet属性,类似于TDataSource构件
但有如下问题
1、如果从TDataSource继承,则TDataSource提供的AutoEdit、Enabled及OnDataChange、
OnStateChange、OnUpdateData属性是我所不需要的,请问能否屏蔽掉它们。
2、如果直接从TComponent继承,名为TMyDS,会出现这样一种情况:我在窗体上放上一个
TMyDS构件,再放上一个TTable或TQuery,再将TMyDS连到Table或Query上,这些都没问题,
但如果将Table or Query删除,将会出现各种错误,因为TMyDS的DataSet属性中设置的值现
在无效了。
请问应该如何解决,谢谢
不知道我说得是不是明白,如有不明之处,我会作进一步说明
 
1,如果你不需要那些属性,则你只能从TComponent继承构造新的控件。
2,当Table或Query删除时,可以重载TMyDS中的Notification方法处理。
 
谢谢stargazer,我对重载Notification方法比较模糊,能否更进一步地说一下?比如FreeNotification
RemoveFreeNotification分别的作用,我的英文很差,不好意思
 
这个方法的基方法在Tcomponent定义如下
Tcomponent.Notification(AComponent:Tcomponent;Operation:TOperation);virtual;
它是在指定的组件AComponent在发生Operation动作后自动调用。这里的Operation包括
插入和删除。具体讲,当Table或Query删除时,TMyds的该方法会被自动调用,你重载后
就可以做出相应的处理了,比如清空TMyDS的DataSet属性等等。
FreeNotification和RemoveFreeNotification我没用过,似乎前者是本组件释放时主动通知
参数所指的组件;后者是本组件释放时阻止通知参数所指代的组件。
 
后退
顶部