How to force the "Caps Lock is On" balloon for password editor?
balloon, delphi, delphi-xe, editor, passwords
Solution
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;
Problem
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?