この回答に基づいて、Delphi 7OnShowWindow
のメソッドをオーバーライドしようとしています。TOleContainer
unit MyOleContainer;
interface
uses
Windows, OleCtnrs;
type
TOleContainer = class(OleCtnrs.TOleContainer)
private
function OnShowWindow(fShow: BOOL): HResult; stdcall; override;
end;
implementation
function TOleContainer.OnShowWindow(fShow: BOOL): HResult;
begin
Result := S_OK;
end;
end.
しかし、これはコンパイルされず、次のエラーが発生します:[Error] MyOleContainer.pas(11): Field definition not allowed after methods or properties
なぜですか?
編集:
「IOleClientSite の実装を宣言し、TOleContainer から継承し、メソッド OnShowWindow を非表示にする [...] TOleContainer を IOleClientSite として使用する」方法を説明してください。
編集2:
これはあなたが意味したものですか?
TMyContainer = class(TOleContainer, IOleClientSite)
private
FIOleClientSite: IOleClientSite;
function SaveObject: HResult; stdcall;
...
constructor TMyContainer.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Self.OleObjectInterface.GetClientSite(FIOleClientSite);
end;
function TMyContainer.SaveObject: HResult;
begin
Result := FIOleClientSite.SaveObject;
end;
...