• When 事件

发生在控件获得焦点之前

PROCEDUREControl.When

如果 When 返回 True (.T.),则默认控件接收焦点

如果 When 返回 False (.F.),则该控件不接收焦点

---------------------------------------------------------------------

控件获得焦点的事件顺序:

  1. When 事件

  2. GotFocus 事件

注意:
对于 ListBox 控件,每当用户通过点击项或通过箭头键移动选定的项而在列表中项之间移动焦点时,都会触发 When
Grid 控件没有 GotFocus 事件,因此只激发 When。 

 对于所有其他控件,When 事件发生在试图将焦点移到该控件时

 

  • Valid 事件

发生控件失去焦点之前

PROCEDURE Control.Valid

如果 Valid 事件返回 True (.T.),则该控件可以失去焦点 - 焦点可以不传递给其他控件。如果 Valid 事件返回 False (.F.),则该控件不失去焦点

Valid 事件也可以返回数字值。返回的数字值具有下列三种效果之一:

  • 如果返回 0,则该控件不失去焦点

  • 如果返回正值,该值指定了焦点前移的控件数

  • 如果返回负值,该值指定了焦点后移的控件数。例如,如果 Valid 事件返回 –1,则前一个控件获得焦点

也可以在 Valid 事件的 RETURN 命令中使用可选的 ObjectName 参数来直接指派焦点的位置。该对象必须是一个有效的 Visual FoxPro 对象。如果被指定的对象被废止或无法接受焦点,那么焦点被指派给 Tab 次序中的下一个对象。如果指定了无效的对象,则 Visual FoxPro 会把焦点保留在当前对象。

可以在下列情形中将焦点设置到对象:

  • 将焦点设置到其他可视表单上的对象

  • 将焦点设置到非可视 Page 或 Pageframe 控件上的对象

 

来自:msdn