Visual FoxPro经典教程.docx
- 文档编号:24392290
- 上传时间:2023-05-27
- 格式:DOCX
- 页数:49
- 大小:1.52MB
Visual FoxPro经典教程.docx
《Visual FoxPro经典教程.docx》由会员分享,可在线阅读,更多相关《Visual FoxPro经典教程.docx(49页珍藏版)》请在冰豆网上搜索。
VisualFoxPro经典教程
VisualFoxPro经典教程:
第九章:
创建表单
第九章:
创建表单
利用表单,可以让用户在熟悉的界面下查看数据或将数据输入数据库。
但表单提供的远不止一个界面:
它还提供丰富的对象集,这些对象能响应用户(或系统)事件,这样就能使用户尽可能方便和直观地完成信息管理工作。
本章内容要点:
∙设计表单
∙创建新表单
∙在表单中添加对象
∙处理对象
∙管理表单
设计表单
VisualFoxPro提供了一个功能强大的表单设计器,使得设计表单的工作变得又快又容易。
在表单设计器中可以处理下列内容:
∙表单中不同类型的对象。
∙与表单相关联的数据。
∙顶层表单或子表单。
∙能一起操作的多个表单。
∙基于自定义模板的表单。
表单和表单集是拥有自己的属性、事件和方法程序的对象,在表单设计器中可以设置这些属性、事件和方法程序。
表单集包括了一个或多个表单,可以将它们作为一个整体来操作。
例如,如果在表单集中有四个表单,可以在运行时用一个命令显示或隐藏它们。
创建新表单
在“表单设计器”中可以新建表单,而且在设计时刻就能看见其中各对象显示在用户面前的外观。
若要新建一个表单
∙请在“项目管理器”中选定“表单”,并选择“新建”按钮。
-或者-
∙从“文件”菜单中选择“新建”命令,选定“表单”按钮并选择“新建文件”按钮。
-或者-
∙使用CREATEFORM命令。
表单设计器带下列工具栏的:
表单设计器、表单控件、布局和调色板
有关“表单设计器”的详细内容,请参阅《用户指南》中的第八章“用表单管理数据”。
有关工具栏的详细内容,请在“帮助”中查找“工具栏”,并选择与所需信息有关的工具栏。
设置数据环境
每一表单或表单集都包括一个数据环境。
数据环境是一个对象,它包含与表单相互作用的表或视图,以及表单所要求的表之间的关系。
可以在“数据环境设计器”中直观地设置数据环境,并与表单一起保存。
在表单运行时数据环境可自动打开、关闭表和视图。
而且,通过设置“属性”窗口中ControlSource属性设置框,在这个属性框中列出数据环境的所有字段,数据环境将帮助您设置控件的ControlSource属性。
若要打开数据环境设计器
1.从“显示”菜单中选择“数据环境”。
2.从快捷方式菜单中选择“添加”。
3.在“添加表或视图”对话框中选择一表或视图添加到数据环境中去。
数据环境设计器
常用数据环境属性
下面是在属性窗口中经常设置的数据环境属性:
属性
说明
默认设置
AutoCloseTables
控制当释放表或表单集时,是否关闭表或视图。
“真”(.T.)
AutoOpenTables
控制当运行表单时,是否打开数据环境中的表或视图。
“真”(.T.)
InitialSelectedAlias
当运行表单时选定的表或视图。
设计时刻为””。
如果没有指定,在运行时首先加到“数据环境”中的临时表最先被选定。
向数据环境设计器中添加表或视图
向数据环境设计器中添加表或视图时,可以看到属于表或视图的字段和索引。
若要向数据环境中添加表或视图
1.在“数据环境设计器”中,从“数据环境”菜单中选择“添加”。
2.在“添加表或视图”对话框中,从列表中选择一个表或视图。
-或者-
如果没有打开的数据库或项目,请选择“其他”来选择表。
也可以将表或视图从打开的项目或“数据库设计器”拖放到“数据环境设计器”中。
当“数据环境设计器”处于活动状态时,“属性”窗口会显示与数据环境相关联的对象及属性。
在“属性”窗口的对象框中,数据环境的每个表格或视图、表格之间的每个关系,以及数据环境本身均是各自独立的对象。
从数据环境设计器中移去表
当您将表从数据环境中移去时,与这个表有关的所有关系也随之移去。
若要将表或视图从数据环境设计器中移去
1.在“数据环境设计器”中选择要移去的表或视图。
2.从“数据环境”菜单中选择“移去”命令。
在数据环境设计器中设置关系
如果添加进数据环境设计器的表具有在数据库中设置的永久关系,这些关系将自动地加到数据环境中。
如果表中没有永久的关系,您可以在数据环境设计器中设置这些关系。
若要在数据环境设计器中设置关系
∙将字段从主表拖动到相关表中的相匹配的索引标识上。
数据环境设计器及在表间设置的关系
您也可以将字段从主表拖动到相关表中的字段上。
如果和主表中的字段对应的相关表中没有索引标识,系统将提示您是否创建索引标识。
在数据环境设计器中编辑关系
在数据环境设计器中设置了一个关系后,在表之间将有一条连线指出这个关系。
若要编辑关系的属性
∙在“属性”窗口中,从名称列表框选择要编辑的关系。
关系的属性对应于SETRELATION和SETSKIP命令中的子句和关键字。
RelationalExpr属性的默认设置为主表中主关键字字段的名称。
如果相关表是以表达式作为索引的,就必须将RelationalExpr属性设置为这个表达式。
例如,如果相关表以UPPER(cust_id)作为索引,就必须将RelationalExpr属性设置为UPPER(cust_id)。
如果关系不是一对多关系,必须将OneToMany属性设置为“假”(.F.)。
这对应于使用SETRELATION命令时不发出SETSKIP命令。
将关系的OneToMany属性设置为“真”(.T.),相当于发出SETSKIP命令。
当您浏览父表时,在记录指针浏览完子表中所有的相关记录之前,记录指针一直停留在同一父记录上。
注释如果在表单或表单集中想设置一对多关系,必须将OneToMany属性设置为“真”(.T.),甚至在数据库中已经建立了永久一对多关系时也必须如此。
创建单文档和多文档界面
VisualFoxpro允许创建两种类型的应用程序:
∙多文档界面(MDI)各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口顶端。
VisualFoxPro基本上是一个MDI应用程序,带有包含于VisualFoxPro主窗口中的命令窗口,编辑窗口和设计器窗口。
∙单文档界面(SDI)应用程序由一个或多个独立窗口组成,这些窗口均在Windows桌面上单独显示。
MicrosoftExchange即是一个SDI应用程序的例子,在该软件中打开的每条消息均显示在自己独立的窗口中。
由单个窗口组成的应用程序通常是一个SDI应用程序,但也有一些应用程序综合了SDI和MDI的特性。
例如,VisualFoxPro将调试器显示为一SDI应用程序,而它本身又包含了自己的MDI窗口。
为了支持这两种类型的界面,VisualFoxPro允许创建以下几种类型的表单:
∙子表单:
包含在另一个窗口中,用于创建MDI应用程序的表单。
子表单不可移至父表单(主表单)边界之外,当其最小化时将显示在父表单的底部。
若父表单最小化,则子表单也一同最小化。
∙浮动表单:
属于父表单(主表单)的一部分,但并不是包含在父表单中。
而且,浮动表单可以被移至屏幕的任何位置,但不能在父窗口后台移动。
若将浮动表单最小化时,它将显示在桌面的底部。
若父表单最小化,则浮动表单也一同最小化。
浮动表单也可用于创建MDI应用程序。
∙顶层表单:
没有父表单的独立表单,用于创建一个SDI应用程序,或用作MDI应用程序中其他子表单的父表单。
顶层表单与其他Windows应用程序同级,可出现在其前台或后台,并且显示在Windows任务栏中。
子表单、浮动表单和顶层表单
指定表单类型
创建各种类型表单的方法大体相同,但需设置特定属性以指出表单应该如何工作。
如果创建的是子表单,则不仅需要指定它应在另外一个表单中显示,而且还需指定是否是MDI类的子表单,即指出表单最大化时是如何工作的。
如果子表单是MDI类的,它会包含在父表单中,并共享父表单的标题栏、标题、菜单以及工具栏。
非MDI类的子表单最大化时将占据父表单的全部用户区域,但仍保留它本身的标题和标题栏。
若要建立一个子表单
1.用“表单设计器”创建或编辑表单。
2.可将表单的ShowWindow属性设置为下列值之一:
o0-在屏幕中(默认)。
子表单的父表单将为VisualFoxPro主窗口。
o1-在顶层表单中。
当子窗口显示时,子表单的父表单是活动的顶层表单。
如果希望子窗口出现在顶层表单窗口内,而不是出现在VisualFoxPro主窗口内时,可选用该项设置。
3.如果希望子表单最大化时与父表单组合成一体,可设置表单的MDIForm属性为“真”(.T.);如果希望子表单最大化时仍保留为一独立的窗口,可设置表单的MDIForm属性为“假”(.F.)。
浮动表单是由子表单变化而来。
若要指定为浮动表单
1.用“表单设计器”创建或编辑表单?
2.可将表单的ShowWindow属性设置为以下值之一:
o0-在屏幕中(默认)。
浮动表单的父表单将出现在VisualFoxPro主窗口。
o1-在顶层表单中。
当浮动窗口显示时,浮动表单的父表单将是活动的顶层表单。
3.将表单的Desktop属性设置为“真”(.T.)。
若要指定顶层表单
1.用“表单设计器”创建或编辑表单。
2.将表单的ShowWindow属性设置为“2-作为顶层表单”。
显示位于顶层表单中的子表单
如果所创建的子表单中的ShowWindow属性设置为“1-在顶层表单中”,则不需直接指定一顶层表单作为子表单的父表单。
而是在子窗口出现时,VisualFoxPro指派成为该子表单的父表单。
若要显示位于顶层表单中的子表单
1.创建顶层表单。
2.在顶层表单的事件代码中包含DOFORM命令,指定要显示的子表单的名称。
例如,在顶层表单中建立一个按钮,然后在按钮的Click事件代码,包含如下的命令:
DOFORMMyChild
注释在显示子表单时,顶层表单必须是可视的、活动的。
因此,不能使用顶层表单的Init事件来显示子表单,因为此时顶层表单还未激活。
3.激活顶层表单,如有必要,触发用以显示子表单的事件。
隐藏VisualFoxPro主窗口
在运行顶层表单时,可能不希望VisualFoxPro主窗口是可视的。
使用应用程序对象的Visible属性按要求隐藏或显示VisualFoxPro主窗口。
若要隐藏VisualFoxPro主窗口
1.在表单的Init事件中,包含下列代码行:
2.Application.Visible=.F.
3.在表单的Destroy事件中,包含下列代码行:
4.Application.Visible=.T.
在某些方法程序或事件中,可使用THISFORM.Release命令关闭表单。
注释也可以在配置文件中包含以下行,用以隐藏VisualFoxPro主窗口。
SCREEN=OFF
有关设置VisualFoxPro的详细内容,请参阅《安装指南》中的第三章“配置VisualFoxPro”。
在顶层表单中添加菜单
若要在顶层表单中添加菜单
1.创建顶层表单的菜单。
有关创建顶层表单菜单的详细内容,请参阅第十一章“设计菜单与工具栏”。
2.将表单的ShowWindow属性设置为“2-作为顶层表单”。
3.在表单的Init事件中,运行菜单程序并传递两个参数:
DOmenuname.mprWITHoForm,lAutoRename
oForm是对表单的对象引用。
在表单的Init事件中,THIS作为第一个参数进行传递。
IAutoRename指定了是否为菜单取一个新的唯一的名字。
如果计划运行表单的多个实例,则将.T.传递给IAutoRename。
例如,可以使用下列代码调用一个名为mySDImenu的菜单:
DOmySDImenu.mprWITHTHIS,.T.
用表单集扩充表单
可以将多个表单包含在一个表单集中,作为一组处理。
表单集有以下优点:
∙可同时显示或隐藏表单集中的全部表单。
∙可以可视的模式调整多个表单以控制它们的相对位置。
∙因为表单集中所有表单都是在单个.scx文件中用单独的数据环境定义的,可自动地同步改变多个表单中的记录指针。
如果在一个表单的父表中改变记录指针,另一个表单中子表的记录指针则被更新和显示。
注释运行表单集时,将加载表单集所有表单和表单的所有对象。
加载带有多个控件的多个表单会花几秒钟的时间。
创建表单集
表单集是一个包含有一个或多个表单的父层次的容器。
可在“表单设计器”中创建表单集。
若要创建表单集
∙从“表单”菜单中,选择“创建表单集”选项。
如果不需要将多个表单处理为表单组,则不必创建表单集。
创建表单集以后,则可向其中添加表单。
添加和删除表单
创建了表单集以后,可添加新表单或删除表单。
若要向表单集中添加新表单
∙从“表单”菜单中,选择“添加新表单”。
若要从表单集中删除表单
1.在“表单设计器”“属性”窗口的对象列表框中,选择要删除的表单。
2.从“表单”菜单中选择“移除表单”。
如果表单集中只有一个表单,可删除表单集而只剩下表单。
若要删除表单集
∙从“表单”菜单中选择“移除表单集”。
表单以表的格式存储在.scx后缀的文件中。
创建表单时,.scx表包含了一个表单的记录,一个数据环境的记录,和两个内部使用记录。
为每个添加到表单或数据环境中的对象添加一个记录。
如果创建了表单集,则为表单集及每个新表单各添加了一个记录。
每个表单的父容器为表单集,每个控件的父容器为其所在的表单。
提示当运行表单集时,若不想在最初让表单集里的所有表单可视的。
可以在表单集运行时,将不希望显示的表单的Visible属性设置为“假”(.F.)。
将希望显示的表单,其Visible属性设置为“真”(.T.)。
在表单中添加对象
为了在表单中设计所需的功能,您需要添加合适的控件,设置表单和控件属性并编写代码。
可以将下列类型的对象添加到表单中:
∙控件
∙容器
∙用户自定义类
∙OLE对象
深入了解容器和控件对象
VisualFoxPro中的对象根据它们所基于的类的性质可分为两类:
∙容器可以作为其他对象的父对象。
例如,一个表单作为一个容器,是放在其中的复选框的父对象。
∙控件可以包含在容器中,但不能作为其他对象的父对象。
例如复选框就不能包含其他任何的对象。
在“表单设计器”中既可以设计容器,也可以设计控件。
容器
可以包含
列
标头,除了表单、表单集、工具栏、计时器和其他列对象控件之外的任何对象
命令按钮组
命令按钮
表单集
表单、工具栏
表单
页框、表格、任何控件
表格
列
选项按钮组
选项按钮
页框
页面
页面
表格、任何控件
添加VisualFoxPro容器
除表单集和表单外,VisualFoxPro还提供四个基本容器类。
VisualFoxPro容器类
命令按钮组
选项按钮组
表格
页框
若要在表单中添加容器对象
∙从“表单控件”工具栏上选择所需的容器对象的按钮(表格、页框或按钮组),并在表单中拖动,调整到想要的大小。
在表单中添加命令按钮组或选项按钮组时,默认情况下,按钮组包含两个按钮。
在表单中添加页框时,页框默认包含两个页面。
将ButtonCount属性或PageCount属性设置为需要的数目,可以包含更多的按钮或页面。
向表单中添加表格时,ColumnCount属性的默认值为-1,表示处于AutoFill状态。
这样,在运行时表格将显示与RowSource表中的字段同样数量的列。
如果不想处于“AutoFill”状态,可以设置表格的ColumnCount属性为指定列的数目。
有关这些容器对象的详细内容,请参阅第十章“使用控件”。
收集和记数属性
VisualFoxPro中的所有容器对象都有与它们相关联的记数属性和收集属性。
收集属性是引用其每个被包含对象的数组。
记数属性是指示其包含的对象数的数值属性。
每个容器的收集和记数属性根据包含在容器中的对象类型来命名。
下表列出了容器及其相应的收集和记数属性。
容器
收集属性
记数属性
应用程序
Objects
Forms
Count
FormCount
表单集
Forms
FormCount
表单
ObjectsControls
Count
ControlCount
页框
Pages
PageCount
页
Controls
ControlCount
表格
Columns
ColumnCount
命令按钮组
Buttons
ButtonCount
选项按钮组
Buttons
ButtonCount
列
Controls
ControlCount
工具栏
Controls
ControlCount
容器
Controls
ControlCount
控件
Controls
ControlCount
这些属性以编程方式循环地处理所包含的所有或指定的对象。
例如,以下几行代码设置在表格中列的BackColor属性,以实现红色与绿色的交替出现功能:
o=THISFORM.grd1
FORi=1too.ColumnCount
IFi%2=0&&偶数列
o.Columns(i).BackColor=RGB(0,255,0)&&绿色
ELSE
o.Columns(i).BackColor=RGB(255,0,0)&&红色
ENDIF
ENDFOR
向表单中添加VisualFoxPro控件
控件工具栏能使您很方便地在表单中添加任何一种标准的VisualFoxPro控件。
标准VisualFoxPro控件
复选框
超级链接
列表框
微调控件
组合框
图象
ActiveX绑定控件
文本框
命令按钮
标签
ActiveX控件
计时器
编辑框
线条
形状
若要在表单中添加控件
∙在“表单控件”工具栏中选择所需的控件按钮,在表单中单击或拖动按钮,把它调整到想要的大小。
有关选择控件的详细内容,请参阅第十章“使用控件”。
向表单中添加数据绑定型控件
通过设置控件的ControlSource属性为字段或表格的RecordSource属性为表或视图,可使控件与表、视图、表的字段或视图字段中的数据相联系。
但也可通过直接将表和视图从下列位置拖到表单中,以创建数据绑定型控件:
∙“项目管理器”
∙“数据库设计器”
∙“数据环境设计器”
“表设计器”中“字段”选项卡的“匹配字段类型到类”设置或“选项”对话框的“字段映象”选项卡的设置,是这种方法创建控件类的基础。
有关设置默认控件类的详细内容,请参阅“表设计器”或“选项”对话框中的“字段映象”选项卡。
在表单中添加用户自定义对象
VisualFoxPro最强大的功能之一就是能创建在应用程序不同部分都可以使用和重复使用的类。
如果创建了类,您就能将它们添加到表单中。
若要基于自定义类上添加对象
∙在“项目管理器”中,将类拖动到容器中。
当给工具栏添加类时,也可直接从“表单控件”工具栏中添加。
在控件工具栏上添加类库
类库必须在注册后才能在“表单控件”工具栏中显示出来。
若要注册类库
1.从“工具”菜单中选择“选项”。
2.在“选项”对话框中选择“控件”选项卡。
3.选择“添加”按钮。
4.在“打开”对话框中,选择一个要加到“选定”列表中的类库,并选择“打开”按钮。
5.重复步骤3和4。
“选定”列表中列出了类库中的类,在“表单设计器”中可以和VisualFoxPro基类一样方便地使用这些类。
“选项”对话框的“控件”选项卡
提示如果要在每次运行VisualFoxPro时“表单控件”工具栏中的类库都有效,可在“选项”对话框中,选择“设置为默认值”。
也可以在“表单设计器”中直接注册类库。
若要在表单设计器中注册一个类库
1.在“表单控件”工具栏中选择“查看类”按钮。
2.从子菜单中选择“添加”。
“查看类”按钮的子菜单。
在“打开”对话框中选择要添加到“表单控件”工具栏上的类库,然后选择“打开”按钮。
从类库中添加对象到表单
如果您从“选项”对话框的“控件”选项卡或从“查看类”子菜单添加类库,您就能在“表单设计器”中访问它们。
若要从“表单控件”工具栏添加自定义对象
1.在“表单控件”工具栏中,选择“查看类”按钮。
2.从已注册类库的列表中选择一个类库,它包含了要加到表单中的控件。
工具栏与选定库中的控件放在一起。
已添加到“查看类”子菜单中的用户自定义类库
3.单击所需要的控件,并在表单中拖动到合适大小。
注释如果想从“查看类”工具栏中移去一个可视类库,可以在“选项”对话框的“控件”选项卡中,选择“选定”列表中列出的一个可视的类库,然后选择“移去”按钮。
如果向不是基于VisualFoxPro基类的表单添加对象,类库的相对路径(.vcx文件)存储在表单的.scx文件中。
如果要将表单或类库移到另一个位置,在运行表单时VisualFoxPro将显示一个对话框,用于人工寻找类库。
确定表单中的控件数目
使用ControlCount属性可以确定表单中究竞有多少个控件,而Controls[n]属性允许引用表单上的任何一个控件。
下面的程序用于打印出当前活动表单上所有控件的Name属性:
ACTIVATESCREEN&&将输出打印到VisualFoxPro主窗口
FORnCnt=1TOApplication.ActiveForm.ControlCount
?
Application.ActiveForm.Controls[nCnt].Name
ENDFOR
在表单中添加属性和方法程序
可以向表单中添加任意多个新的属性和方法程序。
属性拥有一个值,而方法程序拥有一个过程代码,当调用方法程序时,即运行这一过程代码。
新建的属性和方法程序属于表单,您可以象引用其他属性或方法程序那样引用它们。
新建属性
如果已有一个表单集,那么在“表单设计器”中加入的属性和方法程序就属于表单集。
如果没有建立表单集,则属性和方法程序属于表单。
若要在表单或表单集中添加新属性
1.从“表单”菜单中选择“新建属性”命令。
2.在“新建属性”对话框中,键入属性的名称。
还可以加入关于这个属性的说明,它将显示在“属性”窗口的底部。
在表单中添加属性
创建数组属性
数组属性和其他属性一样都属于表单或表单集,不同的是可用VisualFoxPro的数组命令和函数处理它。
若要创建一个数组属性
1.在表单中添加新属性。
2.在“新建属性”对话框的“名称”框中键入数组属性的名称,包括数组
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual FoxPro经典教程 FoxPro 经典 教程
![提示](https://static.bdocx.com/images/bang_tan.gif)