TUIWebBrowserでOnMouseMoveイベントを使いたいのですが、イベント自体がないので、publishedで再宣言させ、コンポーネントを貼り付けてテストしてみたのですが、反応してくれませんでした。
TShapeで同じことをしてみましたが、TShapeの場合はうまくいきました。
published
property OnMouseMove;
TWebBrowserでもうまくいかなかったので、Browserのなにかが悪いと思うのですが、原因がわかりません。
すいませんが、教えてください。よろしくお願いします。
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に表示されるのですが、
その後マウスアップ!が表示してくれません。
マウスムーブ!も表示されません。
メッセージの取得がうまくないと思うのですが、どう記述していいかわかりません。
すいませんが、よろしくお願いします。
ActiveX コントロールは・・・
追加しました!が挙動かわらず…
uses節に追加ですよね?
開発環境 WinXP Delphi2005 Pro なんですが、コンパイルしたモノをWin2000に持っていくと、マウスダウンも効いてくれないです。。。
混乱してきました。。。
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捕まえてメッセージ奪うしかないとか・・・
わかんなーいぃ
TUIWebBrowserにはTDomEventコンポーネントがついていて、それを使用すればいい事がわかりました!
みなさんありがとうございました!
ツイート | ![]() |