例えば、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です.
>こうするしかないのでしょうか?
私の個人的な考え方ですが,こうした方がいいと思っています.
というのは,StringGridだけでなく,コントロールからフォーカスを外す(?)
には,KillFocus(だっけ?)でもできます.しかし,どこにフォーカスが行くかを確定
させないと,そのアプリで思わぬ結果(実行)を起こす場合があります.
フォーカスコントロールに点線表示があるのは,「ここにフォーカスがあるぞ」
ということです.このユーザインターフェイスが意味を持たないことになります.
とにかく,ユーザは何をするか分かりません.
>PopupMenuのOnClickにBitBtnのOnClickを代入し、
この場合,BitBtnのOnClickは,イベントではなく,メソッドとして実行
されるので,当然フォーカスの移動はありません.
たまに,いや,よく使う手法です.少なくとも私は.
イベントとして実行されるとばかり思っていました。
当然フォーカスの移動は無いわけですね。
確かにEditやButton,BitBtn,StringGrid等の
入力コントロールがあるフォームで、フォーカスが
無いのは、無いですね。
Mr.XRAYさんありがとうございました。
ツイート | ![]() |