Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: SDC-Code für TWebBrowser: Doppelte Rücktaste!

  Alt 15. Mär 2005, 11:10
Zitat von Lannes:
Hallo,
Das ist mit dem Demo Browser von Toms auf meinem Rechner auch so.
Folgenden Code nutze ich in meinen Programmen, damit klappt es.
// ShortCut (Ctrl-C, Ctrl-O, etc.) in webBrowser2 einbauen
Bein Code funktioniert auch nicht alles.
z.B bei VK_UP, VK_DOWN wird doppelt "gesprungen".

Hier meine verbesserte Variante:

Delphi-Quellcode:
procedure TfrmMyBrowser.MsgHandler(var Msg: TMsg; var Handled: Boolean);
const
  StdKeys = [VK_BACK, VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT];
var IOIPAO: IOleInPlaceActiveObject;
  Dispatch: IDispatch;
begin
  if WebBrowser1 = nil then
  begin
    Handled := False;
    Exit;
  end;
  Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = True);
  if (Handled) and (not WebBrowser1.Busy) then
  begin
    if FOleInPlaceActiveObject = nil then
    begin
      Dispatch := WebBrowser1.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 in StdKeys) then
           //nothing - do not pass on Backspace, Left, Right, Up, Down arrows
      else FOleInPlaceActiveObject.TranslateAccelerator(Msg);
  end;
end;
Thomas
  Mit Zitat antworten Zitat