Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi SDC-Code für TWebBrowser: Doppelte Rücktaste! (https://www.delphipraxis.net/42138-sdc-code-fuer-twebbrowser-doppelte-ruecktaste.html)

mr47 14. Mär 2005 15:12


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

Ich verwende diesen Code ( http://www.swissdelphicenter.ch/de/showcode.php?id=1055 ) um die Enter Taste in meinem TWebBrowser benutzen zu können. Dieser Code macht aber Probleme

:arrow: Rücktaste wird immer 2 mal betätigt, wenn man sie nur einmal drückt
:arrow: Entfernen geht net trotzdem net...

Wie kann ich das nervige Ding mit der Rücktaste beheben? Und wieso geht entfernen nicht? Ich versteh den Code halt net 100 % :oops:

thx for help

mfg mr47

Luckie 14. Mär 2005 15:16

Re: SDC-Code für TWebBrowser: Funktioniert nicht 100 %ig
 
toms hat gerade hier im Forum eine Demo für einen Brwoser mit der TWebBrowser-Komponente vorgestellt. Guck doch mal darein.

mr47 14. Mär 2005 16:56

Re: SDC-Code für TWebBrowser: Funktioniert nicht 100 %ig
 
Bei dem ist es genauso! Liegt das an meinem Rechner oder ist das bei euch auch so, dass immer zwei Zeichen bei Rücktaste verschwinden???


mfg

Lannes 14. Mär 2005 22:47

Re: SDC-Code für TWebBrowser: Doppelte Rücktaste!
 
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
Delphi-Quellcode:
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 WebBrowser2 = nil then
  begin
    Handled := False;
    Exit;
  end;

  Handled:=(IsDialogMessage(WebBrowser2.Handle, Msg) = True);

  if (Handled) and (not WebBrowser2.Busy) then
  begin

    if FOleInPlaceActiveObject = nil then
    begin
      Dispatch := WebBrowser2.Application;
      if Dispatch <> nil then
      begin
        Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
        if iOIPAO <> nil then
          FOleInPlaceActiveObject := iOIPAO;
      end;
    end;

    if FOleInPlaceActiveObject <> nil then
      begin
      if (Msg.message = WM_KEYDOWN) and (Msg.wParam = vk_Escape) then
        BuPanelMinClick(self);
      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;
end;
Ich hoffe es hilft. :)

MfG Lannes

toms 15. Mär 2005 11:10

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

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;

Lannes 15. Mär 2005 11:48

Re: SDC-Code für TWebBrowser: Doppelte Rücktaste!
 
Hallo,
wird sofort eingebaut. :coder:
Hier auch:www.swissdelphicenter.ch :)
MfG Lannes

mr47 15. Mär 2005 16:22

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

Ich hab einfach ma den Code von Toms genommen! Er funktioniert einwandfrei (hab bis jetzt noch keine Fehler festellen können!) Vielen Dank!!! :)


mfg :coder: :spin2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz