在使用Frame作为基类实现继承时,发现窗口出现“Property OldCreateOrder does not exist ”的错误,在网上找了一大圈也没有。后来在Borland网站上找到了一些线索http://qc.borland.com/wc/qcmain.aspx?d=9481 和 http://qc.borland.com/wc/qcmain.aspx?d=5866 ,看一下我的代码:

  TDMIBFrameHandle = class(TFrame)
  protected
    FOPETreeView: TMIBTreeView;
    
function CheckEditers: Boolean; virtual; abstract;
    
procedure ClearAddEditCheck; virtual; abstract;
    
procedure ClearEditer; virtual; abstract;
    
procedure DisableEditers; virtual; abstract;
    
procedure DisableGrid; virtual; abstract;
    
procedure EnabledEditers; virtual; abstract;
    
procedure EnableGrid; virtual; abstract;
    
function GetColumnValue(const aFieldName: string): Variant; virtual;
        abstract;
    
procedure GetEditerValues; virtual; abstract;
    
procedure InitializeEditer; virtual; abstract;
    
procedure InitializeToolBar; virtual; abstract;
    
procedure StartSelect; virtual; abstract;
  public
    
procedure Close; virtual;
    
procedure StartSurf; virtual;
  
end;

  TDMIBFrame 
= class(TDMIBFrameHandle)
  
end;

    光看这代码我想应该没有什么问题,但问题就出在这代码上。因为这个代码是建立纯PAS文件,也就是说不带窗口的PAS。因为OldCreateOrder 是Form才有属性,那么如果以这个类来继承它会自动加上Form中的属性(因为基类没有窗口,而继承类中有窗口,Delphi自动加上了Form的属性)。那么解决方法很简单,创建一个带窗口的Frame基类,再从这个基类继承即可。不知道是不是单间D7的问题(感觉是个BUG),2007不知道有没有这个问题。

版权声明:本文为sonicit原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sonicit/articles/1129586.html