我需要将焦点设置在一个 TEdit
控件上。通常,我会在检查控件是否可以聚焦后使用 TWinControl.SetFocus
。最近,我注意到 TCustomForm
类提供了 SetFocusedControl
函数。
在哪些情况下使用 TCustomForm.SetFocusedControl
比使用 TWinControl.SetFocus
更好,以设置焦点?
我需要将焦点设置在一个 TEdit
控件上。通常,我会在检查控件是否可以聚焦后使用 TWinControl.SetFocus
。最近,我注意到 TCustomForm
类提供了 SetFocusedControl
函数。
在哪些情况下使用 TCustomForm.SetFocusedControl
比使用 TWinControl.SetFocus
更好,以设置焦点?
SetFocusedControl
在VCL框架中用于响应与焦点变化相关的窗口消息。例如,如果您在控件上调用SetFocus
,则会调用SetFocusedControl
以更新内部状态。
虽然SetFocusedControl
是一个公共方法,但它实际上是一个框架方法,只应从实现VCL控件的代码中调用。最好将其视为私有方法。它不调用Windows的SetFocus
函数(因此不会改变焦点),仅更新内部状态以跟踪焦点控件。
在您的情况下,您有使用VCL的应用程序代码。您没有编写VCL控件。您应继续调用SetFocus
以实现焦点变更。当您这样做时,VCL将根据其需要内部调用SetFocusedControl
。
在哪些情况下更好使用
TCustomForm.SetFocusedControl
而不是TWinControl.SetFocus
来设置焦点?
没有。