delphi - Property OldCreateOrder does not exist

原文见“http://www.cnblogs.com/sonicit/archive/2008/03/30/1129586.html

 

说明:看了上面那位兄台的解法后,还是有些不明所以,不明白他说的最后一句话——”那么解决方法很简单,创建一个带窗口的Frame基类,再从这个基类继承即可“究竟是什么,纠结了很久,

 

后来在 majingli 的帮助下,才明白,在Delphi 7 下的 TFrame 的继承不像我们在 MFC 中的操作一样直接改代码就可以了,而是要通过 IDE 来进行操作

 

 

具体问题描述

      由于需求总在变化,加上不断的会进行重构,所以我们有可能在 一个 TFrame3=class(TFrame)已经写到比较完善时,突然想把其基类从 TFrame 转成 TFrame2;按我们的在 MFC 中的习惯做法,我们会先创建一个 TFrame2,然后手动编辑 TFrame3 的 pas 文件,使其变为  TFrame3=class(TFrame2);然后运行程序,OK,一切正常。

 

      可是当我们关闭工程,再打开时,会弹对话框,显示 “ TabOrder does not exit“,此时,无论我们选择什么,再次运行时都会弹出”Property OldCreateOrder does not exist错误。

 

14164237_DClS.jpg

 


解决的办法

删除 TFrame3, 再重新由 IDE 生成 TFrame3,在创建时选择由 ”Frame2“ 派生, 然后再把原 TFrame3 的 pas 文件复制过来即可.可以看到,两者的 pas 文件是完全一模一样的, 光从代码根本看不出任何问题. 这应该算是 delphi7 的bug了。

14164237_SPbO.jpg

 

 

补充

     有的时候,我们已经创建了太多的 TFrame3, 这样一个一个重新派生,再改其 pas 文件,实在是一项非常浩大的工程,这会对重构造成极大的负担,那么有没有更好的办法呢?

     因为 pas 文件是完全一致的,所以我们只能把目标放在 dfm 文件上,打开 TFrame3 的 dfm 文件,其第一行写的是 “object Frame3: TFrame3”;再打开一个由IDE创建的,派生自 TFrame2 的 TFrame4 的 dfm 文件,其第一行写的是“inherited Frame4: TFrame4”,那么这是不是就是问题所以呢?我们试着把“object Frame3: TFrame3”,改成“inherited Frame3: TFrame3”, 再次运行,一切 OK。


转载于:https://my.oschina.net/u/566587/blog/301226

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值