我有一个TEdit
,PasswordChar
设置为*
,如果Caps Lock
模式启用,我希望标准的“Caps Lock is On”气球出现。该标准气球仅在编辑器获得焦点或已启用Caps Lock
模式时出现,而焦点位于该编辑器中。
我的密码编辑器是应用程序的第一个集中控件。因此,当应用程序以Caps Lock
模式以前开启时,我看不到任何气球,直到我的密码编辑器失去焦点然后再次聚焦。在一半的用例中,用户有机会看不到该气球!
我可以在应用程序启动时强制执行“Caps Lock is On”气球而不切换焦点吗?
答案 0 :(得分:4)
解决方案是调用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;