▼ takaさん,どうもです.
taka さんの
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := True;
if Assigned(AcroPDF1) then
try
FreeAndNil(AcroPDF1);
except
AcroPDF1 := nil;
end;
end;
のコードがなかったら気が付かなかったでしょうね.
やはりプログラムというのはコードを書いて,それが実行されるわけですから,
具体的なコードがあるというのは強力です.
コードがなければ抽象的な話になってしまいますから.
> 修正コードみました。
> Delphiのインポートツールのバグなんですね。
ある意味ではやむを得ないということもあるかも知れません.
操作対象の COM オブジェクトはパーションによって機能が変わってきますから.
で,修正コードについて書いていませんでした.AcroPDFLib_TLB.pas にある
TAcroPDF = class(TOleControl)
private
FIntf: IAcroAXDocShim;
function GetControlInterface: IAcroAXDocShim;
の FIntf が TAcroPDF のコンテナの実体ですので,destructor を override
して以下のように強制的に nil にしました.
この nil も AcroPDF1 := nil; がヒントです (^^;
destructor TAcroPDF.Destroy;
begin
FIntf := nil;
inherited;
end;
|