2009年4月17日 星期五

老問題:用滑鼠點擊 Button 與按快速鍵行為不一致的解決方法

我們常常會將 Button.Caption 設定為像「&F. 檔案」這樣的內容,以便於將 Alt-F 快速鍵與 Button 連在一起
也常常會將一些輸入 Edit 的檢查,寫在 Edit.OnExit 事件處理函式中
假如這兩個碰在一起,就會發生用滑鼠點擊 Button 與按下快速鍵行為不一致的問題
因為按下快速鍵時,並不會轉移 Focus,會直接觸發事件處理函式,使得 Edit.OnExit 事件無法被觸發

解決方法如下:
於 Button.OnClick 事件處理函式的開頭加入以下兩行:

if (Sender as TWinControl).CanFocus then
  (Sender as TWinControl).SetFocus;

這樣強迫轉移 Focus,就可以解決這個問題了

沒有留言: