MouseMoveを受け付けない

解決


たまにデル  2006-09-14 02:54:22  No: 23217

以前作ったDelphiソフトをちょっと改造しようと久しぶりにソースをいじりましたが思うように動かず苦戦しています。  

Procedure Tform1.BtnDispMouseMove(Sender:  TObject; Shift: TShiftState; X, Y: Integer);

Begin

Beep;
/// ここであるドキュメントを表示

End;

End;

というもので他のコントロールで問題なく動いているものですがここではBeepすら鳴りません。何故動かないのか宣言などを何度もチェックなどして対応しようとしましたが思わぬ反撃で半日いじっていたのですが解決しません。コンパイル時のエラーも出ません。チェックすべきヒントなど何かアドバイスいただきたく宜しくお願いします。


表裏 未里  URL  2006-09-14 20:48:13  No: 23218

思いっきりはずれていたらごめんなさい。

私の環境ではBeep音が鳴らないという現象が起きてます。
今はshowmessage('数字とかいれる')で処理が行われているかcheckしてます。

お役に立たなかったらごめんなさい。


deldel  2006-09-14 20:55:45  No: 23219

ブレークポイントをBeepの行に設定して、止まるかどうかチェックするとか、
Windows.Beep($FFF, 10) とかに変えるとか、
Beepの代わりに Caption := 'Move中'; に変えるとか、
かな?


たまにデル  2006-09-14 21:25:28  No: 23220

表裏  未里さま  アドバイスありがとうございました。
「Beep」の件は了解しました。当方の現象はMouseMoveしてもそのProcedureに行かないということです。ShowMessageを入れたりBeepを入れたりブレークポイントを入れたりしているのですがそこに行き着きません。
他のボタンは問題なく動いているのですが何故かこのボタンだけうMouseMoveを受け付けません。5分の作業と思っていたのがとうとう1日以上の問題になってしまいました。注意点などアドバイスをいただけたら幸甚であります。


orz  2006-09-14 22:03:14  No: 23221

BtnDisp のクラスは
TButton、TSpeedButton、TBitBtn のいずれかですか?
それとも、別のボタンですか?

> 他のコントロールで問題なく動いている
ということですが、すべて同じコンポーネントですか?

もちろん、ボタンのイベントに割り当てられていますよね?


表裏 未里  URL  2006-09-14 22:04:58  No: 23222

ボタンの上を通過したときに反応するメソッドということですね。
すると  そのボタンにwm_mousemoveが来ているかcheckしてみましたか?

Delphiだと、WinSightで可能ですね(^^)

>5分の作業が1時間。

私も良くありますこれ(はぅ)


表裏 未里  URL  2006-09-14 22:06:18  No: 23223

失礼1時間ではなく1日以上です(訂正)


表裏 未里  URL  2006-09-14 22:28:02  No: 23224

ちょっとプログラムの合間にプログラムを書いてみました(これは休憩というのか)
使えたら使ってください。

宣言部で

private
    { Private 宣言 }

    procedure AppMessage(var msg: TMsg; var Handled: boolean);

実行部で

procedure TForm1.AppMessage(var msg: TMsg; var Handled: boolean);
begin

 //BtnDispボタンの上にマウスが来たらcaptionを1にする
  if (msg.message=wm_mousemove) then
  if (msg.hwnd=BtnDisp.Handle) then
  begin
    //ボタンの上に来たら処理
    BtnDisp.Caption:='1';
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.onMessage := AppMessage;
end;


たまにデル  2006-09-14 22:36:36  No: 23225

表裏様、deldel様、orz様、皆様ありがとうございました。解決できました!  
何度も何度もチェックしてきたつもりでしたが頂きましたアドバイスを一つずつチェックしていったところObjectインスペクタでMouseMoveが入っていないことを発見しました。大変低レベルなことで質問させていただき申し訳ありませんでしたが一人では気付かずに悩んでいるところを的確なアドバイスをいただいたお陰で解決できました。大感謝です。Thanks again.

(表裏様でも1日になることがあるとお聞きして安心しました。今後また何かありましたらお助けください)


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

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






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