【发布时间】:2020-07-20 07:13:16
【问题描述】:
我在 Delphi VCL 表单应用程序中有一个 TEdit(如果重要,包含在 TFrame 实例中)。在用户指示他们完成编辑后,通过单击表单上的其他位置,插入符号和焦点保持在该控件上,直到我单击另一个控件,然后该控件获得焦点。但是,我希望 TEdit 无论用户单击何处都可以放松焦点。我希望我可以使用ActiveControl := nil 来结束对所选控件的关注,但我不确定在哪里调用它。
我想要的是焦点离开选定的控件而不必将其转移到另一个控件。我可以在表单的OnClick 事件中结束焦点,但是如果用户在我的表单上选择任何其他控件(也包含在框架中),这将不起作用,因为不会触发表单的OnClick 事件。为表单上的每个附加项目提供单独的 OnClick 事件似乎既不优雅又乏味。
实现这种行为的全局解决方案是什么?
【问题讨论】:
-
你为什么要这个?它只会让用户体验变得更糟,因为它是非标准的。
-
@DavidHeffernan 该程序提供了一个游戏板,并且编辑器主要由用户在初始设置期间使用。一旦游戏开始,用户就会给出输入,包括键盘以及由独立于这些编辑器的程序管理和显示的输入。在用户看来,焦点只是简单地转移到了其他组件,这些组件由包含图像的框架和 tlabel 文本显示组成。
标签: forms delphi onclick components frames