TUIWebBrowserでOnMouseMoveイベント

解決


権の助  URL  2004-12-20 06:35:46  No: 12395

TUIWebBrowserでOnMouseMoveイベントを使いたいのですが、イベント自体がないので、publishedで再宣言させ、コンポーネントを貼り付けてテストしてみたのですが、反応してくれませんでした。
TShapeで同じことをしてみましたが、TShapeの場合はうまくいきました。

published
  property OnMouseMove;

TWebBrowserでもうまくいかなかったので、Browserのなにかが悪いと思うのですが、原因がわかりません。
すいませんが、教えてください。よろしくお願いします。


権の助  URL  2004-12-20 09:03:42  No: 12396

https://www.petitmonte.com/bbs/answers?question_id=381
ここのページのおかげで解決しそうだったんですが。。。

とりあえず上記コンポーネント内の宣言を消して、
アプリに下記コードを追加してみたのですが。。。

private
  OldWndProc: TWndMethod;
  procedure ActiveBrowserWindowMessage(var Msg: TMessage);

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWndProc := UIWebBrowser.WindowProc;
  UIWebBrowser.WindowProc := ActiveBrowserWindowMessage;
end;

procedure TForm1.ActiveBrowserWindowMessage(var Msg: TMessage);
begin
  if Msg.WParam = WM_RBUTTONDOWN then
  begin
    URLEdit.Text := 'マウスダウン!';
  end
  else
  begin
    if Msg.WParam = WM_MOUSEMOVE then
    begin
      URLEdit.Text := 'マウスムーブ!';
    end
    else
    begin
      if Msg.WParam = WM_RBUTTONUP then
      begin
        URLEdit.Text := 'マウスアップ!';
      end
      else
        OldWndProc(Msg); { デフォルトの処理 }
    end;
  end;
end;

これだと、マウスダウン! はURLEdit.Textに表示されるのですが、
その後マウスアップ!が表示してくれません。
マウスムーブ!も表示されません。
メッセージの取得がうまくないと思うのですが、どう記述していいかわかりません。
すいませんが、よろしくお願いします。


大豆Z  2004-12-20 09:53:15  No: 12397

ActiveX コントロールは・・・


権の助  URL  2004-12-20 22:20:50  No: 12398

追加しました!が挙動かわらず…
uses節に追加ですよね?

開発環境 WinXP Delphi2005 Pro なんですが、コンパイルしたモノをWin2000に持っていくと、マウスダウンも効いてくれないです。。。

混乱してきました。。。


(>_<)  2004-12-21 11:55:39  No: 12399

procedure TForm1.ActiveBrowserWindowMessage(var Msg: TMessage);
 var s : string;
begin
  s :=
    format('Msg.Msg[%d] WParam[%d/%d] LParam[%d/%d]',
           [Msg.Msg,
            Msg.WParamHi,Msg.WParamLo,
            Msg.LParamHi,Msg.LParamLo]);

  case  Msg.Msg of
    WM_LBUTTONDOWN : caption := '左マウスダウン!' + s;
    WM_MOUSEMOVE   : caption := 'マウスムーブ!' + s;
    WM_LBUTTONUP   : caption := '左マウスアップ!' + s;
    WM_KEYDOWN     : caption := 'Key  クリック'            + s;
    WM_RBUTTONDOWN : caption := '右マウスダウン!' + s;
    WM_RBUTTONUP   : caption := '右マウスアップ!' + s;
    WM_MBUTTONDOWN : caption := '中央マウスダウン!' + s;
    else  OldWndProc(Msg); { デフォルトの処理 }
  end;
end;

のぞきましたが
Web表示すると反応しなくなるので
なぞですね。  別次元で動いているのかも
Web表示しているときは、別の値になっています。
規則性はあるみたいですけど・・・
TMessageの数字と
Messages.pasの中の数字から探して、APIレファレンスとニラメッコ  でしょうか?

それか
IE捕まえてメッセージ奪うしかないとか・・・
わかんなーいぃ


権の助  2004-12-22 21:08:18  No: 12400

TUIWebBrowserにはTDomEventコンポーネントがついていて、それを使用すればいい事がわかりました!

みなさんありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加