This is because of the way Delphi handles in place OLE activation. I saw
this workaround for D4, but haven't tried it for D5. (Assuming WebBrowserIE
is the TWebBrowser component).
Regards,
Dennis.
---------------------------- code begins -------------------------------
declare the following form variables:
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
SaveMessageHandler: TMessageEvent;
procedure TfrmBrowser.FormCreate(Sender: TObject);
begin
FOleInPlaceActiveObject := Nil;
SaveMessageHandler := Nil;
end;
procedure TfrmBrowser.FormActivate(Sender: TObject);
begin
SaveMessageHandler := Application.OnMessage;
Application.OnMessage := MessageHandler;
end;
procedure TfrmBrowser.FormDeactivate(Sender: TObject);
begin
Application.OnMessage := SaveMessageHandler;
end;
procedure TfrmBrowser.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Application.OnMessage := SaveMessageHandler;
FOleInPlaceActiveObject := Nil;
end;
procedure TfrmBrowser.MessageHandler (var Msg: TMsg; var Handled: Boolean);
var
iOIPAO: IOleInPlaceActiveObject;
Dispatch: IDispatch;
begin
// Sanity check
if WebBrowserIE = Nil then begin
Handled := False;
Exit;
end; // if
Handled := IsDialogMessage (WebBrowserIE.Handle, Msg);
if Handled and not WebBrowserIE.Busy then begin
if FOleInPlaceActiveObject = Nil then begin
Dispatch := WebBrowserIE.Application;
if Dispatch <> Nil then begin
Dispatch.QueryInterface (IOleInPlaceActiveObject, iOIPAO);
if iOIPAO <> Nil then FOleInPlaceActiveObject := iOIPAO;
end; // if
end; // if
if FOleInPlaceActiveObject <> Nil then begin
with Msg do
if ((message = WM_KEYDOWN) or (message = WM_KEYUP)) and
(wParam in [VK_BACK, VK_LEFT, VK_RIGHT]) then
else
FOleInPlaceActiveObject.TranslateAccelerator (Msg);
end; // if
end; // if
end;
initialization
OleInitialize (Nil);
finalization
OleUninitialize;
end.
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: Friday, 6 July 2001 16:44
> To: Multiple recipients of list delphi
> Subject: [DUG]: TWebBrowser and Enter key
>
>
> When using TWebBrowser and filling some web page form, pressing Enter key
> does not submit data entry.
>
> Say I go to www.anzwers.com.au and using IE type 'Delphi' and then press
> enter. It'll go to search for Delphi.
>
> If I do exactly the same thing using the simplest possible Delphi
> application with TWebBrowser in it, pressing enter key does
> nothing, I have
> to click the search (or submit) button with the mouse.
>
> All I have in my application is a basic form with TWebBrowser in
> it and this
> code under "Go" button (not "default").
>
> Flags := 0;
> WebBrowser1.Navigate(WideString('www.whatever.com'), Flags, Flags, Flags,
> Flags);
>
> Is there something I am missing ?
>
> Regards
> Alex
>
>
>
>
> ------------------------------------------------------------------
> ---------
> New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
> Website: http://www.delphi.org.nz
> To UnSub, send email to: [EMAIL PROTECTED]
> with body of "unsubscribe delphi"
>
---------------------------------------------------------------------------
New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
Website: http://www.delphi.org.nz
To UnSub, send email to: [EMAIL PROTECTED]
with body of "unsubscribe delphi"