当前位置 : 主页 > 编程语言 > delphi >

delphi – 如何强制密码编辑器的“Caps Lock is On”气球?

来源:互联网 收集:自由互联 发布时间:2021-06-23
我有一个TEDit,PasswordChar设置为*,如果Caps Lock模式打开,我想要标准的“Caps Lock is On”气球出现.该标准气球仅在编辑器获得焦点或已启用Caps Lock模式时出现,而焦点位于该编辑器中. 我的密码
我有一个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;
网友评论