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"

Reply via email to