在Visual FoxPro中有很多的事件和方法,用户只要掌握了常用的事件和方法,就可以顺利完成面向对象程序设计。
在Visual FoxPro中常用的事件可以分为:鼠标事件、键盘事件、表单事件、控件焦点事件和数据环境事件等,见表7-4。
表7-4 常用事件
事件分类 |
事 件 |
鼠标事件 |
Click、DbClick、RightClick、MouseDown、MouseUp |
键盘事件 |
KeyPress |
表单事件 |
Load、Activate、Deactivate、QueryLoad、UnLoad、Paint、Resize |
表格事件 |
BeforeRowColChange、AfterRowColChange、Scrolled |
改变控件内容事件 |
InteractiveChange、ProgrammaticChange |
控件焦点事件 |
When、GotFocus、Valid、LostFocus |
数据环境事件 |
BeforeOpenTables、AfterCloseTables |
其他事件 |
Init、Destroy、Error、Timer |
用户按下并且释放键盘的按键时,将触发一个KeyPress事件。通常具有输入焦点的控件可以接收此事件。
另外,在下面两种特殊情况下,表单可以接收KeyPress事件:
(1)表单中不包含控件,或表单中控件都不可见或未激活。
(2)表单的KeyPreview属性设置为真,表单首先接收KeyPress事件,然后才是具有输入焦点的控件接收此事件。
在对象被创建之前发生。此事件应用于表单和表单集。表单集的Load事件先发生,然后是表单的Load事件。Load事件发生时表单里的控件还没有创建,因此,在Load事件的处理程序中不能对控件进行处理。
在对象被释放时发生。该事件的应用范围及其处理程序的语法和Load事件类似。UnLoad事件是表单集或表单释放之前发生的最后一个事件,该事件发生在Destroy事件和所有包含的对象被释放之后。如果一个容器对象包含多个对象,该容器的UnLoad事件发生在它所包含的对象的UnLoad事件之后。
激活表单、表单集或页对象,或显示一个工具栏对象时,将发生Activate事件。此事件应用于表单、表单集、页面和工具栏。
当表单或工具栏重画时发生。当表单或工具栏移动或调整大小时,或一个覆盖表单或工具栏的窗口移动使得表单或工具栏部分或全部显示出来时,重画该表单或控件。此事件应用于表单和工具栏。
在使用键盘或鼠标改变控件的值时发生。在每次交互地更改对象时,都要发生该事件。对于文本框,当用户在文本框中键入字符时,每一次击键时都会触发该事件。该事件应用于复选框、组合框、命令按钮组、编辑框、列表框、选项按钮组、微调框和文本框。
在控件接收输入焦点之前发生。对于列表框控件,每当用户单击列表中的项或用方向键移动使焦点在项之间移动时,When事件发生。对其他控件,试图把焦点移动到控件上时,When事件发生。
控件失去焦点之前发生。若事件返回“真”(.T.),则表明控件失去了输入焦点,否则没有失去输入焦点。
控件也可以返回数值,若返回0,控件没有失去焦点;若返回正值,则指定焦点向前移动的控件数;若返回负值,则指定焦点向后移动的控件数。
当用户通过操作或执行程序代码使对象接收到焦点时,此事件发生。只有对象的Enabled属性和Visible属性都设置为.T.时,此对象才能接收输入焦点。
对象被创建时发生。对于容器型对象来说,容器中对象的Init事件先发生,然后是容器对象的Init事件发生。因此,容器的Init事件中可以访问其中的对象。
释放一个对象的实例时发生。容器对象的Destroy事件在它所包含的任何一个对象的Destroy事件之前发生。容器的Destroy事件在它所包含的任何一个对象释放之前可以引用它们。
当对象的方法运行出错时会发生Error事件。
在Visual FoxPro中常用的方法可以分为:表单与表单集、表格、组合框与列表框、容器、图形、焦点和应用程序等,见表7-5。
表7-5 常用方法
方法分类 |
方 法 |
表单、表单集 |
Cls、Hide、Release、Refresh、Show |
表格 |
ActivateCell、AddColumn、DeleteColumn、Draw |
组合框、列表框 |
AddItem、RemoveItem、Clear、Requery |
容器 |
AddObject、RemoveObject |
图形 |
Box、Circle、Line |
焦点 |
SetFocus |
应用程序 |
DoCmd、Quit、SetVar |
其他 |
ResetToDefault、Reset、SetAll |
清除表单中运行期间图形和打印语句生成的文本和图形,如:
Object.Cls
设置Visible属性值为.F.时,隐藏表单、表单集或工具栏。
注意:表单隐藏后,在程序中仍然可以访问它们。
从内存中释放表单集或表单。
重画表单或控件,并刷新所有值。刷新表单时将刷新表单上的控件,刷新页框时,只刷新活动的页。而更新组合框或列表框的内容要使用Requery方法。
显示一个表单,并确定为模式表单或无模式表单,其调用方法为:
[Formset.]Object.Show([nStyle])
若nStyle值为1时,表单为模式表单;若nStyle值为2时,表单为无模式表单。
向表格控件中添加列对象,添加的新列用nIndex指定其位置,右边的列向右移动一列。但ColumnCount属性的值不会改变。调用方法为:
Grid.AddColumn(nIndex)
从表格控件中删除一个列对象,调用方法为:
Grid.DeleteColumn(nIndex)
在组合框或列表框中添加一个数据项,并指定其索引序号,调用方法为:
Control.Additem(cItem[,index][,nColumn])
其中,cItem为添加到控件中的字符串表达式,index为控件中放置数据项的位置,nColumn指定控件的类。
从组合框或列表框中移去一项,调用语法为:
Control.RemoveItem(index)
其中,index为控件中数据项的位置。
清除组合框或列表框控件中的内容,必须设置RowSource属性为0。
在运行时向容器对象中添加对象。调用方法为:
Object.AddObject(cName,cClass[,cOLEClass][,ainit1,ainit1...])
其中,参数cName指定要创建的对象的名字,参数cClass指定添加的对象所属的类。使用AddObject方法在容器中添加对象时,对象的Visible属性为.F.。
从容器对象中删除一个指定的对象,对象删除后就从屏幕上消失。调用方法为:
Object.RemoveObject(cName)
在表单对象上画矩形,调用语法为:
Object.Box(x1,y1,x2,y2)
其中,x1,y1为矩形左上角的坐标,x2,y2为矩形右下角的坐标。
在表单对象上画圆或椭圆,调用语法为:
Object.Circle(r,x,y[,nAspect])
其中,r为圆或椭圆的半径,x,y指定圆或椭圆的中心点的坐标。nAspect指定圆的纵横比,纵横比为1时,生成一个圆;纵横比大于1时,生成一个垂直方向的椭圆;纵横比小于1时,生成一个水平方向的椭圆。
在表单上画一条线,语法为:
Object.Line(x1,y1,x2,y2)
为一个控件指定焦点,若控件的Enabled或Visible属性都设置为.F.时,不能给一个控件指定焦点;否则不能设置该控件的焦点。
重置计时器控件,使计时器控件从0开始计时,如:
Timer.Reset
为容器中所有控件或某类控件指定一个属性设置。调用方法为:
Container.SetAll(cProerty,Value[,cClass])
其中,参数cProerty指定要设置的属性,Value的数据类型取决于要设置的属性,cClass指定类名。