[英]Custom component Convertion from delphi 5 to delphi 7
最近,我有机会将delphi-5
代码转换为delphi-7
。 首先,我开始将Custom组件转换为delphi-7
。 在delphi-7
系统中编译delphi-5
组件时抛出错误说明
“未声明的标识符:IFormDesigner”。
谷歌搜索之后,我知道应该将IFormDesigner
替换为IDesigner
。 因此,在用IDesigner
替换IFormDesigner
并将设计代码与运行时代码分离之后,大多数组件IFormDesigner
编译。 在下面的代码段进行编译时,它已成功编译。 但是当我将组件放在表单系统上时,会在以下位置抛出访问冲突错误
路径:= IDesigner(TForm(FFormOwner).Designer).GetPrivateDirectory in delphi7。
下面是我的组件代码。
constructor TsampleComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FFormOwner:=TForm(Owner);
if not (Owner is TForm) then
repeat
FFormOwner:=TForm(FFormOwner.Owner);
until (FFormOwner is TForm) or (FFormOwner.Owner=nil);
if (csDesigning in ComponentState) then
//Path:=IFormDesigner(TForm(FFormOwner).Designer).GetPrivateDirectory-- delphi 5 code
Path:=IDesigner(TForm(FFormOwner).Designer).GetPrivateDirectory
else
Path:=ExtractFilePath(Application.EXEName);
.
.
end;
Designer
属性的类型为IDesignerHook
,不能强制转换为IDesigner
。 要获得成功的希望,您需要以下形式的代码:
(FFormOwner as TForm).Designer as IDesigner
这将对IDesignerHook
接口Designer
进行运行时查询,如果确实支持该接口,则返回IDesigner
接口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.