【发布时间】:2016-03-09 16:47:00
【问题描述】:
我有一个显示不同 MDI 表单的应用程序。表单包含大量的可视化组件,在表单显示后不知何故失去了焦点。我需要在接受键盘输入(带有文本字段,例如 TEdit、TMemo 等)的表单上找到第一个控件(设置最低的 TabOrder),这样我就可以将active control 设置为它。
LE:所有控件都是在运行时创建的,根据业务逻辑不同,创建的顺序也不同。
【问题讨论】:
-
也许遍历所有控件并检查 CanFocus?
-
好的,说清楚了,“第一”是什么意思?最左上角?关于表单的客户区?最低
TabOrder?还有什么? -
然后在控件中循环查找 TabOrder = 0 的控件。(或者只是在 FormCreate 事件或设计时在 IDE 中的代码中按名称设置 ActiveControl。)
-
如果您在设计时设置
ActiveControl,当显示表单时,VCL 会将该控件设置为焦点。您不必在运行时寻找要手动分配给ActiveControl的控件。 -
@RemyLebeau & all - 我忘了提一些重要的事情,所有的控件都是在运行时创建的,所以我需要去寻找......
标签: delphi delphi-xe2 mdichild