Visual FoxPro编程的最大特点,就是在可视的环境下以最快的速度和效率开发具有良好用户界面的应用程序,其实质就是利用VFP所提供的图形构件快速构造应用程序的输入输出屏幕界面。控件(Control)是某种图形构件的统称,如“标签控件”、“文本框控件”、“列表框控件”等,利用控件创建对象则是构造应用程序界面的具体方法。
1.常用控件和内部对象
常用控件由VFP的基类提供,共21个,每个控件用“表单控件”按钮表示,如表1-7所示(P17)。
2.表单对象
表单(Form)是应用程序的用户界面,也是进行程序设计的基础。各种图形、图像、数据等都是通过表单或表单中的对象显示出来,因此表单是一个容器对象。
在FoxPro的早期版本中表单被称为屏幕(Screen),在Visual Basic中则称为窗体。
(1)表单的结构。
VFP的表单具有和Windows应用程序的窗口界面相同的结构特征。一个典型的表单有图标、标题、极小化按钮、极大化按钮、关闭按钮、移动栏、表单体及其周围的边框。其中除了表单体之外的所有特征都可以部分或全部从表单中被删除。
(2)表单属性
在VFP中,表单的属性就是表单的结构特征。通过修改表单的属性可以改变表单的内常用的表单属性如表1—8所示。
| 属性名 |
作 用 |
| AutoCenter |
用于控制表单初始化时是否总是位于VFP窗口或其父表单的中央 |
| BackColor |
用于确定表单的背景颜色 |
| BorderStyle |
用于控制表单是否有边框:系统(可调)、单线、双线 |
| Caption |
表单的标题 |
| Closable |
用于控制表单的标题栏中的关闭按钮是否能用 |
| ControlBox |
用于控制表单的标题栏中是否有控制按钮 |
| MaxButton |
用于控制表单的标题栏中是否有极大化按钮 |
| MinButton |
用于控制表单的标题栏中是否有极小化按钮 |
| Movable |
用于控制表单是否可移动 |
| TitleBar |
用于控制表单是否有标题栏 |
| WindowState |
用于控制表单是极小化、极大化还是正常状态 |
| WindowType |
若表单是模式表单,则用户在访问windows屏幕中其他任何对象前必须关闭该表单 |
(3)表单的事件与方法。
就像属性那样,只有部分的表单事件与方法经常被使用,很多事件与方法很少被使用,除非你在编写一个非常复杂的应用程序。可以在代码窗口的“过程”下拉列表框中看到所有表单事件与方法的列表,也可以在“属性”窗口的“方法程序”选项卡中看到所有表单事件与方法的列表。
下面只列举那些最常用的事件与方法。
常用的表单事件:
-
Load事件——当表单被装入内存时发生;
-
Init事件——当表单被初始化时发生;
-
Activate事件——当表单被激活时发生。
上述事件被激发的顺序为Load、Init、Activate。
-
Destroy事件——当表单被释放时发生;
-
Unload事件——当表单被关闭时发生。
上述事件被激发顺序为Unload、Destroy。
常用的表单方法:
-
Hide方法——隐藏表单;
-
Show方法——显示表单;
-
Release方法——释放表单;
-
Refresh方法——刷新表单。
3.对象的引用
(1)对象的包容层次。
VFP中的对象根据它们所基于的类的性质可分为两类:容器类对象和控件类对象。
容器类对象可以包含其他对象,并且允许访问这些对象,例如表单集、表单、表格等控件类对象只能包含在容器对象之中,而不能够包含其他对象,例如命令按钮、复选框等。表1-9(P20)列出了每种容器类对象所能包含的对象。
(2)对象的引用。
作为应用程序的用户界面,表单上可以包含许多对象,而这些对象又有可能具有互相包含的层次关系。若要引用一个对象,需要知道它相对于容器层次的关系。例如,如果要在表单集中处理一个表单的控件,则需要引用表单集、表单和控件。
1)绝对引用:通过提供对象的完整容器层次来引用对象。
若要使表列中的控件无效,需要提供以下地址:
Formset.Form.PageFrame.Page.Grid.Column.Control.Enabled=.F.
2)相对引用:在容器层次中引用对象时,可以通
过快捷方式指明所要处理的对象。
例如:THISFORMSET.Frml.Cmdl.Caption="关闭"
表示将本表单集的名为Fnnl的表单中的Cmdl对象的标题(Caption)属性设置为"关闭"。
THISFORM.Cmdl.Caption="关闭"
表示将本表单的名为Cmdl对象的标题(Caption)属性设置为"关闭"。
THIS.Caption=”关闭”
对于需要改变标题的控件,表示将本对象的标题(Caption)属性设置为"关闭"。
THIS.Parent.BackColor=RGB(192,0g0)
表示将本对象的父对象的背景色设置为暗红色。
表1—10列出了一些属性和关键字,这些属性和关键字允许更方便地从对象层次中引用对象。
表1-10 引用对象的属性和关键字
| 属性或关键字 |
引 用 |
| ActiveControl |
当前活动表单中具有焦点的控件 |
| ActiveForm |
当前活动表单 |
| ActivePage |
当前活动表单中的活动页 |
| Parent |
该对象的直接容器 |
| THIS |
该对象 |
| THISFORM |
包含该对象的表单 |
| THISFORMSET |
包含该对象的表单集 |
说明:只能在方法程序或事件过程中使用THIS、
THISFORM和THISFORMSET。