Delphi中继承自TFrame或TForm的类,DFM文件修改
在Delphi中,我们如果新的类继承自TFrame的子类,那么在设计模式下,IDE会把新的类当作Form进行编辑,导致运行时
出现类似这样的错误:"OldCreateOrder is not a property of TFrame" of course it is not!!“
解决次问题,只需要打开DFM文件,或在Form Designer中"View as Text",编辑首行,将"Object”,改为"inherited"
例如:
TFrame子类,新的基类:
type
TFrameConfigBase = class(TFrame)
private
{ Private declarations }
protected
FConf:IConfiguration;
procedure SetConfiguration(Conf:IConfiguration);virtual;
procedure WMActivate(var Message : TMessage);message WM_ACTIVATE;
public
{ Public declarations }
procedure DoFormCreate(); virtual;
procedure DoFormShow(); virtual;
property Configuration:IConfiguration read FConf write SetConfiguration;
end;
新建的Frame,继承自TFrameConfigBase
type
TFrameConfigEllipsoide = class(TFrameConfigBase)
Label1: TLabel;
private
{ Private declarations }
procedure SetConfiguration(Conf:IConfiguration);override;
public
{ Public declarations }
procedure DoFormCreate(); override;
procedure DoFormShow(); override;
end;
打开DFM:
编辑首行,将"Object”,改为"inherited",例如:
inherited FrameConfigEllipsoide: TFrameConfigEllipsoide
object Label1: TLabel
Left = 232
Top = 176
Width = 31
Height = 13
Caption = 'Label1'
end
end
在Delphi中,继承自TFrame的类在设计模式下会被错误地当作Form处理,导致运行时错误。解决方法是打开DFM文件,将首行的'Object'更改为'inherited',确保正确继承。示例中展示了如何更改DFM文件内容以避免'OldCreateOrder is not a property of TFrame'错误。

4317

被折叠的 条评论
为什么被折叠?



