Reputation: 3706
I have a TEdit
with PasswordChar
set to *
and I want the standard "Caps Lock is On" balloon to appear if the Caps Lock
mode is on. That standard balloon appearing only when the editor is getting focus or when Caps Lock
mode has been turned on, while the focus was in that editor.
My password editor is the first focused control of the application. So, when the application starts with Caps Lock
mode previously on, I cannot see any balloons until my password editor will lose focus and then will be focused again. The user has a chance to not see that balloon in half of the use cases!
Can I force this "Caps Lock is On" balloon at application startup without switching focus?
Upvotes: 4
Views: 1007
Reputation: 3706
The solution is to call WM_KILLFOCUS
and WM_SETFOCUS
, this will force the editor to show "Caps Lock is On" balloon:
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;
Upvotes: 4