4

我有一个TEdit设置PasswordChar为,如果模式*打开,我希望标准的“Caps Lock is On”气球出现。Caps Lock该标准气球仅在编辑器获得焦点或Caps Lock打开模式时出现,而焦点位于该编辑器中。

我的密码编辑器是应用程序的第一个集中控件。因此,当应用程序以先前Caps Lock打开的模式启动时,我看不到任何气球,直到我的密码编辑器失去焦点然后再次聚焦。用户有机会在一半的用例中看不到那个气球!

我可以在应用程序启动时强制这个“Caps Lock is On”气球而不切换焦点吗?

4

1 回答 1

4

解决方案是调用WM_KILLFOCUSand 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;
于 2012-11-19T16:30:20.613 回答