Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Вам нужно добавить следующие строки в начало unit:
initializationOleInitialize(nil
); finalization
OleUninitialize;
Это не ошибка. Информацию по данному вопросу можно найти на сайте Microsoft KnowledgeBase статья Q168777. Приведённый ниже код, устраняет данную проблему:
... varForm1: TForm1; FOleInPlaceActiveObject: IOleInPlaceActiveObject; SaveMessageHandler: TMessageEvent; ... implementation
... procedure
TForm1.FormActivate(Sender: TObject); begin
SaveMessageHandler := Application.OnMessage; Application.OnMessage := MyMessageHandler; end
; procedure
TForm1.FormDeactivate(Sender: TObject); begin
Application.OnMessage := SaveMessageHandler; end
; procedure
TForm1.FormClose(Sender: TObject; var
Action: TCloseAction); begin
Application.OnMessage := SaveMessageHandler; FOleInPlaceActiveObject := nil
; end
; procedure
TForm1.MyMessageHandler(var
Msg: TMsg; var
Handled: Boolean); var
iOIPAO: IOleInPlaceActiveObject; Dispatch: IDispatch; begin
{ exit if we don't get back a webbrowser object } if
WebBrowser = nil
then
begin
Handled := False
; Exit; end
; Handled:=(IsDialogMessage(WebBrowser.Handle, Msg) = True
); if
(Handled) and
(not
WebBrowser.Busy) then
begin
if
FOleInPlaceActiveObject = nil
then
begin
Dispatch := WebBrowser.Application; if
Dispatch <> nil
then
begin
Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO); if
iOIPAO <> nil
then
FOleInPlaceActiveObject := iOIPAO; end
; end
; if
FOleInPlaceActiveObject <> nil
then
if
((Msg.message
= WM_KEYDOWN) or
(Msg.message
= WM_KEYUP)) and
((Msg.wParam = VK_BACK) or
(Msg.wParam = VK_LEFT) or
(Msg.wParam = VK_RIGHT)) then
//nothing - do not pass on Backspace, Left or Right arrows else
FOleInPlaceActiveObject.TranslateAccelerator(Msg); end
; end
;