我有一个TEDit,PasswordChar设置为*,如果Caps Lock模式打开,我想要标准的“Caps Lock is On”气球出现.该标准气球仅在编辑器获得焦点或已启用Caps Lock模式时出现,而焦点位于该编辑器中. 我的密码
我的密码编辑器是应用程序的第一个集中控件.所以,当应用程序以前的Caps Lock模式启动时,在我的密码编辑器失去焦点然后再次聚焦之前,我看不到任何气球.用户有机会在一半的用例中看不到气球!
我可以在应用程序启动时强制执行“Caps Lock is On”气球而无需切换焦点吗?
解决方案是调用WM_KILLFOCUS和WM_SETFOCUS,这将强制编辑器显示“Caps Lock is On”气球:if GetKeyState(VK_CAPITAL) and 1 <> 0 then begin if edtPassword.Focused then begin PostMessage(edtPassword.Handle, WM_KILLFOCUS, 0, 0); PostMessage(edtPassword.Handle, WM_SETFOCUS, 0, 0); end; end;