一个类间继承的总是,缘自InplaceEdit

qiubolecn 2002-08-27 07:47:11
有类A, B 为父类, C为A的子类,D为B的子类, C与D的代码一样,请问怎样组合它们之间的关系最好?

小弟写了一个InplaceEdit,是用来编辑金额的,因为没有考虑到非金额时的情况,所以在编辑非金额时异常麻烦,所以想调用系统中原有的InplaceEdit。

在DBGridEh中它们的结构如下

TCustomMaskEdit------我把这个改成了TCustomInEdit;
|
TInplaceEditEh,
|
TDBInplaceEditEh,
|
被DBGridEh调用

我想总不致于我再声明 TInplaceEditMoneyEh及TDBInplaceEditMoneyEh, 它们和TInplaceEditEh及TDBInplaceEditEh的代码是一样的,只是基类不同, 我想应该有更简单的办法吧?
...全文
31 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiubolecn 2002-08-28
  • 打赏
  • 举报
回复
昨天弄一个Ehlib2.2,发现它的DBInplaceEditMoneyEh本身就是由TInplaceEDit及几个接口组成的。待我好好看看是否能使用WuHeHai兄的建议。
但根本的问题还是存在。

我想,最好还是直接在基类上改,将基类实现重载两个类,否则子类如果一多,那改起来就异常麻烦
WuHeHai 2002-08-27
  • 打赏
  • 举报
回复
我是这么理解你的问题的
在TInplaceEditMoneyEh及TDBInplaceEditMoneyEh都实现Money的编辑,都不想在两个类中写关于Money编辑的类似代码。
我觉地可以这么处理:
1.申明一个接口IMoneyEdit。这个接口是显示对Money的编辑。
2.有一个类TImplMoneyEdit完成对IMoneyEdit的实现
3.在TInplaceEditMoneyEh及TDBInplaceEditMoneyEh中都有一个成员变量IMoneyEdit。把所有的Money编辑的功能都转给IMoneyEdit来完成。这样在TInplaceEditMoneyEh及TDBInplaceEditMoneyEh就很少有对Money编辑的处理代码,全部有IMoneyEdit来完成了。
4.这样就把Money编辑的实现(如:TImplMoneyEdit)和具体表现(如:TInplaceEditMoneyEh及TDBInplaceEditMoneyEh)很好地分离出来了。你以后可以有一个新的实现类TExImplMoneyEdit,来完成对IMoneyEdit的实现。而在TInplaceEditMoneyEh及TDBInplaceEditMoneyEh可以几乎不用更改任何代码。
tigerchina 2002-08-27
  • 打赏
  • 举报
回复
你可以改一下DBGridEh,注册TInplaceEditEh及TDBInplaceEditEh。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧