可能理解你的意思有误。
你的TBillObj及其派生出来的类好象都是在客户端
。
为什么不把这些处理业务规则的对象放在中间层,客户端通过对其实例化而进行使用?
如果是我,我想我的作法是:
基类:TBillObj内容包括初使化处理、数据定义(如主从次从表及关联表的定义,如MasterTable,LookupTable1等),
数据操作(如:主从表新增、删除、修改)以及事件(如主从表BeforeEdit,BeforePost等)、
(BeforePost分离出CheckData()函数,派生类重载该函数检测数据的正确性)
数据处理(单据审核等),释放等。
从TBillObj派生的类如:TPOBillObj等主要是数据合法性检测不同以及其它特殊处理。
以上处理可放在中间层及其它应用程序的客户端。
客户端:
实例化对象:
var billdata:TBillObj
billdata.mastertable:=cdsMasterTable;
......
btnInsert
try billdata.InsertData except on E:Exceptiondo
ShowMessage(E.message);
POOrder:
billdata:=TPOBillObj.Create;
等
我现在的做的系统是便是这样的。