Code: Select all
.....
type
TCanvasDrawing = class(TCustomChromiumWindow)
protected
procedure DoClose;override;
end;
procedure TCanvasDrawing.DoClose;
begin
Self.DestroyChildWindow; //falls into access violation after this method call. not this method! it returns True
end;
....
type
TCustomChromiumWindow = class(TCEFWinControl)
protected
procedure WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
procedure DoClose;virtual;abstract;
end;
procedure TCustomChromiumWindow.WebBrowser_OnClose(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
begin
aAction := cbaClose;
DoClose;
end;
There is no error when the program ends. But when I call the CloseBrowser (True) method while the program is running, Access Violation occurs.
I don't want to use Windows messages. Like below;
Code: Select all
procedure OnCloseMsg(var aMessage : TMessage); message CEF_DOONCLOSE;
However, calling the DestroyChildWindow method from the same Thread as the WebBrowser_OnClose method causes problems.
How can I fix this?