第八章 表单设计及运行
8.1使用表单向导创建表单
8.1.1 表单向导
8.1.2 一对多表单向导
8.2设置数据环境
8.2.1打开数据环境
8.2.2 数据信息与数据环境
8.3用表单设计器创建表单与控件
8.3.1 表单设计器与表单控件工具栏
8.3.2 ―标签”控件
8.3.3 命令按钮与命令按钮组
8.3.4 文本框
8.3.5 选项按钮
8.3.6 微调按钮
8.3.7 复选框
8.3.8 列表框与组合框
8.3.9 编辑框
8.3.10 表格
8.1 使用表单向导创建表单
8.1.1 表单向导使用表单向导创建一对一表单的步骤如下:
一、从“文件”菜单,选择“新建”、“表单”,然后在新建对话框中选择向导,在向导选取对话框中使用鼠标选择“表单向导”。
二、单击确定按钮进入“表单向导”步骤一。
三、确定表单的数据源。然后进行字段选取。
四、选择好表单样式及按钮类型。
五、按照每组记录的排序顺序选择字段。
六、选择建立好表单后的存储方式,“完成”。
8.2 数据环境设置
8.2.1 打开“数据环境设计器”
– 在创建表单或已有打开表单的情况下,可以从
“显示”菜单中,也可在表单快捷菜单中 选择
“数据环境”。
8.2.2 数据信息与数据环境
8.3.1 表单设计器与表单控件工具栏使用表单设计器创建表单一般需要进行的工作如下:
明确创建表单的目标、表单应具备的功能、用途。
在表单中添加与此相关的控件。
为表单及其控件设置好与之匹配的数据环境及数据源。
为表单中的每一个控件做恰当的属性设置。
选择与对象、目标相关的事件。
设计好事件触发的方法程序代码。
表单设计器中带有,表单设计器,,,表单控件,,,布局,和,调色板,等工具栏 ( 如图 8-15所示 ),表单控件工具栏控制按钮的名称和功能如表 8-1所示 。
图 8-15 表单控件工具栏表 8-1 表单控件工具栏控制按钮的名称和功能按钮名称 功能设键次序 显示表对象设置的 Tab顺序数据环境 显示 Visual FoxPro的数据环境属性窗口 显示所选对象的属性窗口代码窗口 显示所选对象的代码窗口表单控件工具栏 显示或隐藏“表单控件”工具栏调色板工具栏 显示或隐藏“调色板”工具栏布局工具栏 显示或隐藏“布局”工具栏表单生成器 启动表单生成器,向表单中添加控件自动格式 启动“自动格式生成器”对话框,为所选表单控件提供显示风格。至少选择一个控件,才能激活此按钮
8.3.3 命令按钮与命令按钮组
―命令按钮”控件主要用来控制程序代码的执行、操作。在表单中添加具有不同功能的命令按钮,供用户选择各种不同的操作
。命令按钮的不同功能是通过为各个按钮,click‖事件编写不同的方法程序代码设置的。
“命令按钮组”控件是命令按钮的集合。
“命令按钮”的主要属性是:
位置及大小,top,left,height,width
标题,caption
名称,name
控件自动改变,autosize
字体字号,fontname,fontsize
―命令按钮”经常选用的事件,click
8.3.4 文本框文本框是最常用的控件主要用于数据表中某些数据的输入输出或编辑,以及从窗口给内存变量赋值等操作。
文本框对象的常用属性设置:
文本框名称,name
文本框内容的字体大小,fontsize
文本框数据初始值与类型,value
设置输入和显示数据的格式与长度,inputmask
设定是否只读状态,readonly
在应用程序中,经常需要获得某些安全信息如:口令。这时需要设置文本框的 Passwordchar属性为,*”或其它一些字符;用文本框来接收这一信息,而不在屏幕上显示其实际内容。
例 8-4 用文本框、标签、命令按钮组设计一个可以使用口令进行操作权限检验的表单。
操作步骤:
( 1) 打开,表单设计器,为表单设置属性,属性值如下:
AlwaysOnTop=.T.
AutoCenter=.T.
Caption=系统检验
( 2) 打开,表单控件工具栏,,从中选择,命令按钮组,设定命令按钮数目两个,为命令按钮组设定如下属性:
Caption=cmdgp1
Value=1
( 3) 为两个命令按钮设定如下属性:
Caption=确认
Caption=退出
ClickEvent=用户自定义过程
( 4) 在表单中添加文本框控件,为其设定属性:
PasswordChar=*
Name=klmm
ClickEvent=用户自定义过程
FontName=宋体
( 5) 在表单中添加标签,设定属性:
Caption=操作口令
FontName=宋体
( 6) 为命令按钮一设计方法程序代码:
if trim(thisform.klmm.value)<>'pass'
if messagebox(―请重新输入口令 ",0+16,"提示 ")=1
thisform.klmm.setfocus
endif
endif
if trim(thisform.klmm.value)='pass'
do form 系统主程序,scx
release thisform
endif
( 7) 为命令按钮二设计方法程序代码:
a=messagebox("你真的要退出吗?",4+16+0,"对话窗口 ")
if a=6
release thisform
endif
结果如图 8-9所示 。
图 8-9 例 8-4结果显示
8.3.5 选项按钮
,选项按钮,也叫,单选按钮,常用于从多项控制中选择其一,把事先设计好具有特定目的的整套操作过程提供给,选项按钮组,,用户可以从中选择一项 。,选项按钮,控件的属性主要是,单选按钮,的个数 buttoncount及当前按钮值 value。
例 8-5 设计一个课程查询表单,在表单中使用单选按钮控件和按钮,文本框 ( 在以后的例题中,Top,Height,Left,
Width 4个最常用属性省略 ) 。
打开表单设计器,使用表单控件工具栏,属性窗口,数据环境设计器,进行以下操作:
( 1) 设计,定义表单属性:
Caption=课程查询
Name= Form1
Visable =.T.
( 2)在表单中添加一个选择按钮组,在其中用两个选择按钮:
AutoSize=.T.
Name= OptionGroup1
Visable=.T.
―课程号,按钮
Caption=课程号
Name= Opti1
AutoSize=.T.
ClickEvent=用户自定义过程
Style=0-标准
Value=.T.
―课程名,按钮
Caption=课程名
Name= Opti2
Autosize=.f.
ClickEvent=用户自定义过程
Style=0-标准
Value=.f.
( 3) 添加一个文本框用来输入课程号:
Name= Text1
AutoSize=.t.
ClickEvent=用户自定义过程
Style=0-标准
Value=1
FontSize=8
InitEvent=用户自定义过程
InputMask=无
MaxLenth=7
SelectOnEntry=.T.
( 4) 添加一个文本框用来输入课程名称:
NAME= Text2
Autosize=.t.
ClickEvent=用户自定义过程
ControlSource=无
DateFormat=14-汉语
Enabled=.T.
Style=0-标准
Value=
FontSize=10
InitEvent=用户自定义过程
InputMask=无
MaxLenth=8
PasswordChar=无
ReadOnly=.F.
SelectOnEntry=.T.
Style=0
Visable=.T.
( 5) 添加,开始,命令按钮:
NAME= Command1
AutoSize=.F.
ClickEvent=用户自定义过程
Enabled=.T.
Style=0-标准
FontSize=9
Style=0
Visable=.T.
( 6) 添加,退出,命令按钮:
NAME= Command2
Autosize=.F.
ClickEvent=用户自定义过程
Enabled=.T.
FontSize=9
Visible=.T.
Caption=退出
( 7) 为,开始,按钮 Click事件编写代码:
cxp1=this.parent.optiongroup1.opti1.value
cxp2=this.parent.optiongroup1.opti2.value
value1=this.parent.text1.value
value2=thisform.text2.value
( 8) 为,退出,按钮 Click事件编写代码:
rele thisform
sele 1
restore screen
结果如图 8-20所示 。
图 8-20
本例题设计时应注意:“课程号”按钮与文本框一、“课程名”
按钮与文本框二在使用上的配合一致性,在编写“开始”按钮程序代码时应严谨统一。
8.3.6 微调按钮微调控件用于接受给定范围之内的数值输入 。 它既可用键盘输入
,也可单击该控件的上,下箭头按钮来增减其当前值 。 下面是该控件的常用属性:
Value:表示微调控件的当前值 。
KeyBoardHighValue:设定键盘输入数值高限 。
KeyBoardLowValue:设定键盘输入数值低限 。
SpinnerHighValue:设定按钮微调数值高限 。
SpinnerLowValue:设定按钮微调数值低限 。
Increment:设定按一次箭头按钮的增减数,默认为 1.00。
controlsource,数据控制源 。
8.3.7 复选框复选框为表单添加,微调,控件,定义其主要属性:允许同时选择多项,所以复选框可以在表单中独立存在,选项按钮只能存在于它的容器选项按钮组中 。 复选框主要反映某些条件是否成立,用于选择取值为,真,或,假,的一种现象 。 可以单击鼠标左键改变其值 value
(0,1,2) 。 复选框控件是一种数据绑定型控件,在数据编辑或条件选择等方面有广泛的应用 。
8.3.8 编辑框在编辑框中允许编辑长字段或备注字段文本,允许自动换行并能用方向键,PageUp 和 PageDown 键以及滚动条来浏览文本 。
值 value
8.3.9 列表框与组合框列表框主要用来显示选择项,并且维护其 ControlSource属性所结合的数据 。 列表框控件可同时显示图形与项目文字,可以多重选择,并具有移动项目位置的功能 。
组合框兼有列表框与文本框的功能 。 它可以有两种形式,即下拉列表框和下拉组合框 (可修改文本框内容 )。 可以通过设置组合框的 Style
属性来选择 。
列表框与组合框都有一个供用户选项的列表,但两者有两个区别:
列表框任何时候都显示它的列表;组合框平时只显示一个项,待用户单击它的向下按钮后才能显示可滚动的下拉列表 。
下拉组合框允许键入数据项,而列表框与下拉列表框都仅有选项功能 。 以下是一些常用属性:
fontSize:设定显示字体大小 。
RowSourceType:设定项目来源方式 。 书上 RecordSourceType有误
RowSource:设定项目来源 。
8.3.10 表格
Visual FoxPro用一个强有力的工具 ——表格对象来显示和操作多行数据 。
表格 ( grid) 是将数据以表格形式表示出来的一种控件,容器 。
表格提供了一个全屏幕输入输出数据表记录的方式,它也是一个以行列的方式显示数据的对象容器控件 。 一个表格控件包含一些列 (
Column) 控件,每个列控件能够容纳一个标头对象 ( Header) 和文本框 ( Text) 及其他普通控件,标头在列的顶部显示一个标题,并能响应一些事件 。 这些列除了包含标头和控件外,每一个列还拥有自己的一组属性,事件和方法程序,可以配备适当的数据源,从而为表格提供了极其灵活,广泛的使用功能 。
表格对象能在表单或页面中显示并操作行和列中的数据 。 使用表格控件的一个非常有效的应用是创建一对多表单 。
若要将表格控件添加到表单,请在,表单控件,工具栏中选择,
表格,按钮,并在,表单,窗口中调整为期望的大小 。
( 1) 首先需要设置的表格控件属性为,列数,。
在设计时人工调整表格的显示效果,在属性和方法程序列表中选择 ColumnCount属性,在属性框中,键入需要的 列值 。
在表格中加入列后应设置,改变列的宽度和行的高度 。 可以在,
属性,窗口中人工设置列和行对象的高度和宽度属性,也可以在设计表格时以可视方式设置这些属性 。
调整表格中列的宽度在表格设计方式下,将鼠标指针置于表格列的标头之间,这时指针变为带有左右两个方向箭头的竖条,按住鼠标左键,将列拖动到需要的宽度 ;或者在,属性,窗口设置列的 Width属性 。
调整表格中行的高度在表格设计方式下,将鼠标指针置于,表格,控件左侧的第 1个按钮和第 2个按钮之间,这时指针将变成带有向上和向下箭头的横条 。 按住鼠标左键,将行拖动到需要的宽度 。 或者在,属性,窗口中设置列的 Height属性 。
( 2) 可以为整个表格设置数据源,也可以为每个列单独设置数据源 。
选择表格,然后单击,属性,窗口的 RecordSourceType属性 。 为整个表格设置数据源打开方式 。 如果让 Visual FoxPro打开表,请将
RecordSourceType属性设置为,0-表,;如果在表格中放入打开表的字段,则将 RecordSourceType属性设置为,1-别名,。
单击,属性,窗口中的 RecordSource属性,指定与表格对象建立联系的数据源 。 如果没有指定表格的 RecordSource属性,同时在当前工作区中有一个打开的表,那么表格将显示这个表的所有字段 。
键入作为表格数据源的别名或表名 。
如果想在特定的列中显示一个特定字段,也可以为列设置数据源

选择列,然后单击,属性,窗口的 ControlSource属性 。 键入作为列的数据源的别名,表名或字段名 。 例如,可以键入,课程表,课程号
” 。
( 3) 向表格添加记录 。
将表格的 AllowAddNew属性设置为,T.,可以允许用户向表格中显示的表中添加新的记录 。 当用户选中了最后一个记录,并且按下向下箭头键时,就向表中添加了新记录 。
如果表单的数据环境包含两表之间的一对多关系,那么要在表单中显示这个一对多关系非常容易 。 表格最常见的用途之一是,当文本框显示父记录数据时,表格显示表的子记录 ;当用户在父表中浏览记录时,表格将显示相应的子记录 。
( 4) 设置具有数据环境的一对多表单 。
将需要的字段从,数据环境,中的父表拖动到表单中 。 或从,数据环境,中将相关的表拖动到表单中
( 5) 创建没有数据环境的一对多表单 。
将文本框添加到表单中,显示主表中需要的字段 。 设置文本框的
ControlSource属性为,主表 。,
将表格的 RecordSource属性设置为相关表的名称 。
设置表格的 LinkMaster属性为主表名称 。
设置表格的 ChildOrder属性为相关表中索引标识的名称,索引标识和主表中的关系表达式相对应 。
将表格的 RelationalExpr属性设置为联接相关表和主表的表达式 。 例如,如果 ChildOrder标识是以,lastname + firstname‖建立的索引,应将 RelationalExpr也设置为相同的表达式 。
( 6) 在表格中嵌入控件 。
除了在表格中显示字段数据,还可以在表格的列中嵌入控件,这样就为用户提供了可以嵌入的文本框,复选框,下拉列表框,微调按钮和其他控件 。 例如,如果表中有一个逻辑字段,当运行该表单时,通过辨认复选框可以判定哪个记录值是,T.和哪个记录值是,F.。
修改这些值只需设置或清除复选框即可 。
可以在,表格设计器,中交互地向表格列中添加控件 。
8.3.11 图像
8.3.12 定时器属性 Picture 说明:磁盘文件 BMP格式属性 Interval 说明:整数,单位:毫秒事件 Timer 定时结束后,执行的命令序列