我需要将注意力集中在TEdit
控件上。通常,我会在检查控件是否可以聚焦后使用TWinControl.SetFocus
。最近,我注意到TCustomForm
类提供了SetFocusedControl
函数。
在哪种情况下最好使用TCustomForm.SetFocusedControl
代替TWinControl.SetFocus
来设置焦点?
答案 0 :(得分:6)
SetFocusedControl
来响应与焦点变化相关的Windows消息。例如,如果您在控件上调用SetFocus
,则会调用SetFocusedControl
来更新内部状态。
虽然SetFocusedControl
是一个公共方法,但它实际上是一个框架方法,并且只能从实现VCL控件的代码中调用。如果您将其视为私有方法,那就更好了。它不会调用Windows SetFocus
函数(因此它不会更改焦点),只会更新内部状态以跟踪焦点控制。
在您的情况下,您有应用程序代码,即使用VCL。你没有写VCL控件。您应该继续致电SetFocus
以改变焦点。当您这样做时,VCL将在内部调用SetFocusedControl
以满足其需求。
在哪种情况下最好使用
TCustomForm.SetFocusedControl
代替TWinControl.SetFocus
来设置焦点?
无。