マウス操作と同じイベントを発生するには?

解決


ahsan  2009-04-07 02:05:30  No: 33903

例えば、StringGridとBitBtnがあって、
StringGridにフォーカスが有る時に、BitBtnをクリックすると、
StringGridのExitイベントが発生します。
次に、StringGrid上のpopupでもBitBtnをクリックしたくて、
PopupMenuのOnClickにBitBtnのOnClickを代入し、
PopupMenuをクリックすると、BitBtnのクリックイベントは
実行されますが、StringGridのExitイベントは実行されません。
PopupMenuのOnClickにBitBtnのOnClickを代入せずに、
PopupMenuのClickイベントを作成し、その中で、
BitBtnにSetFocusしてから、BitBtnClick(Sender);のようにすると
StringGridのExitは発生するのですが、
こうするしかないのでしょうか?


Mr.XRAY  2009-04-07 03:59:57  No: 33904

Mr.XRAYです.

>こうするしかないのでしょうか?

私の個人的な考え方ですが,こうした方がいいと思っています.
というのは,StringGridだけでなく,コントロールからフォーカスを外す(?)
には,KillFocus(だっけ?)でもできます.しかし,どこにフォーカスが行くかを確定
させないと,そのアプリで思わぬ結果(実行)を起こす場合があります.

フォーカスコントロールに点線表示があるのは,「ここにフォーカスがあるぞ」
ということです.このユーザインターフェイスが意味を持たないことになります.
とにかく,ユーザは何をするか分かりません.

>PopupMenuのOnClickにBitBtnのOnClickを代入し、

この場合,BitBtnのOnClickは,イベントではなく,メソッドとして実行
されるので,当然フォーカスの移動はありません.
たまに,いや,よく使う手法です.少なくとも私は.


ahsan  2009-04-07 17:22:26  No: 33905

イベントとして実行されるとばかり思っていました。
当然フォーカスの移動は無いわけですね。
確かにEditやButton,BitBtn,StringGrid等の
入力コントロールがあるフォームで、フォーカスが
無いのは、無いですね。
Mr.XRAYさんありがとうございました。


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

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






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