有关DHTMLEdit的问题(100分)

  • 主题发起人 主题发起人 NightFire
  • 开始时间 开始时间
N

NightFire

Unregistered / Unconfirmed
GUEST, unregistred user!
程序中ChildForm中带有DHTMLEdit控件,在MainForm中调用ChildForm中DHTMLEdit的
SaveDocument(),程序可正常运行,但在关闭ChildForm时就会报出EAccessViolation
错误,关闭MainForm也会报错,请问这是为什么?
 
程序中加入下试试?
...
initialization
Oleinitialize(nil);
finalization
OleUninitialize;
end.
 
应该是 COM 的初始化问题,按上述方法试试。
 
解决控件本身的问题:在子窗口中退出时会报错:

打开delphi生成的DHTMLEDLib_TLB.pas文件,把:
procedure TDHTMLEdit.CreateControl;

procedure DoCreate;
begin
FIntf := IUnknown(OleObject) as IDHTMLEdit;
end;

begin
if FIntf = nil then DoCreate;
end;

改为

procedure TDHTMLEdit.CreateControl;

procedure DoCreate;
begin
FIntf := IUnknown(OleObject) as IDHTMLEdit;
FIntf._AddRef
<--------------增加此行
end;

begin
if FIntf = nil then DoCreate;
end;

应该可以。
 
Delphi_1.0很高明!
 
后退
顶部