460 likes | 684 Views
第 8 章 表 单 控 件. 第 8 章 表单控件. [ 主要内容 ] 本章主要介绍 VFP 表单控件工具栏上 21 个基类控件及表单集的常用属性、方法、事件及主要功能等。 [ 本章重点 ] 输出类、输入类、控制类、多重容器类 [ 本章难点 ] 控制类、多重容器类. 表单控件按主要功能分为五类: 输出类控件 : 标签、图象、线条、形状 输入类控件 : 文本框、编辑框、微调控件、 列表框、组合框 控制类控件 : 命令按钮、命令按钮组、复选框 选项按钮组、计时器 容器类控件 : 表格、页框、容器
E N D
第8章 表 单 控 件
第8章 表单控件 [主要内容] 本章主要介绍VFP表单控件工具栏上21个基类控件及表单集的常用属性、方法、事件及主要功能等。 [本章重点] 输出类、输入类、控制类、多重容器类 [本章难点] 控制类、多重容器类
表单控件按主要功能分为五类: 输出类控件:标签、图象、线条、形状 输入类控件:文本框、编辑框、微调控件、 列表框、组合框 控制类控件:命令按钮、命令按钮组、复选框 选项按钮组、计时器 容器类控件:表格、页框、容器 连接类:Active X控件、Active X绑定控件、 超级链接
8.1 输出类 8.1.1 标签(label) 1.标签的创建 利用表单控件工具栏标签按钮 利用字段映像功能从数据环境将字段拖至表单 2.常用标签属性
3. 举例 例1在表单添加一个标签控件和两个按钮。实现功能,当标签显示英文’hello’时按钮上显示中文‘你好’,当标签上显示中文‘你好’时按钮上显示英文’hello’,每次按下按钮时,当前状态发生一次改变。(当标签上为中文时,文字加粗变斜) (1)设计如图所示: (2)对象属性设置如表所示
(3)事件代码如下 • command1的click事件代码: • if thisform.label1.caption='hello' • thisform.label1.caption='你好' • thisform.command1.caption="hello" • thisform.label1.fontbold=.t. thisform.label1.fontitalic=.t. • else • thisform.label1.caption='hello' • thisform.command1.caption='你好' • thisform.label1.fontbold=.f. • thisform.label1.fontitalic=.f. • endif Command2的click事件代码; thisform.release
8.1.2.图像、线条、形状 1.图像(Image) (1)图像的创建 利用表单控件工具栏图像标签 (2)常用图像属性: Picture:指定图像控件所显示的图像文件的位置及文件名。 AutoSize:为.T.时,将根据其显示的图片自动地改变大小,缺省值为.F. 2.线条(Line) (1)线条的创建 利用表单控件工具栏线条按钮 3.形状:Shape 属性:Curvature(形状方0---椭圆99)
8.2 输入类控件 8.2.1 文本框(text) 1.文本框的创建 利用表单控件工具栏文本框按钮 利用字段映像功能从数据环境将字段拖至表单 2.常用标签属性 (1)Value:指定文本框对象的值,并在框中显示。 Value 值可以为数值型、字符型、日期型、逻辑型 -----0、(无)、{}、.f. (2)ControlSource:设置文本框对象数据源。
(3)Format:指定Value属性输入时的约束或显示时的格式。(3)Format:指定Value属性输入时的约束或显示时的格式。 (4)InputMask:用于确定控件中如何输入和显示数据 (5)Readonly (6) alignment (7)passwordChar 3.方法选介 SetFocus:对文本框控件设置焦点。
4.事件选介 (1)When : 文本框获得焦点前发生。 (2)GotFocus: 文本框获得焦点时发生。 (3)Valid: 文本框失去焦点前发生。 (4)LostFocus: 文本框失去焦点时发生。 (5)KeyPress: 当用户在文本框中按住并释放一个键盘键时发生。 (6)InteractivateChange: 当用户用键盘或鼠标改变文本框对象的值时发生。
文本框生成器 5.文本框生成器 生成器是帮助用户设置常用对象属性的工具。文本框生成器包括格式、样式、值三个选项卡。
6.举例 例2.设计一个密码输入窗口,要求最多允许输入3次密码。 (1)设计如图所示: (2)对象属性设置如表所示
Command1的click事件代码: i=i+1 if thisform.text1.value='123456' messagebox('欢迎进入本系统') thisform.release else if i<3 messagebox("密码错,请重试") thisform.text1.value='' thisform.text1.setfocus else messagebox('密码错,禁止进入本系统') thisform.release endif endif (3)事件代码如下 Form1的load事件代码: public i &&计算输入次数 i=0
8.2.2 编辑框 利用编辑框控件可实现文本数据的输入与编辑。 1.编辑框的创建 利用表单控件工具栏编辑框按钮 利用字段映像功能从数据环境将备注型字段拖至表单 2.常用编辑框属性 (1)Value:用于指定编辑框中的值,其Value属性值的类型只能是字符型。 (2)ScrollBar:滚动条设置(垂直—2,无--0)
(3)ControlSource:对象的数据源。一般为表的某一备注型字段。(3)ControlSource:对象的数据源。一般为表的某一备注型字段。 (4)SelText:返回用户在编辑框中所选定的内容。 (5) Selstart (6)Selength
8.2.3 列表框(List)和组合框(Combo) 组合框:下拉组合框和下拉列表框 1.属性选介: (1)ColumnCount:指定列表框的列数 (2)RowSourceType:指定列表框的数据源 (3)RowSource:指定列表框数据绑定的数据源 (4)ListCount:返回组合框或列表框中列表项的个数 (5)ListIndex:返回组合框或列表框中选定项的顺序号 (6) Selected:用于分辨某一项是否被选中 (7) Value:用于返回在列表中选定的项
2.方法程序: (1) AddItem 当组合框或列表框的rowsourcetype 为0时,使用本方法程序可以在其列表中添加一个新项 格式:Control.AddItem(cItem[,nIndex][,nColumn]) (2) RemoveItem 当组合框或列表框的RowSourceType属性为0时,使用本方法程序可在列表中删除一项。 格式:Control.RemoveItem(nIndex) 说明:nIndex为数值表达式。取值范围1~listcount 。
8.2.4 微调器 微调控件接受给定范围之内的数值。它只能与数值型变量或字段数据绑定。 1.属性选介: (1)value:微调控件的当前值,是数值型。 (2)increment:按一次箭头按钮的增减值,系统默认为1.00。 (3)keyboardhighvalue:设定键盘输入数值上限。 (4)keyboardlowvalue:设定键盘输入数值下限。 (5)spinnerhighvalue:设定按钮调整数值上限。 (6)spinnerlowvalue:设定按钮调整数值上限。 (7)controlsource:设定微调控件的数据源。 (8)Inputmask:设置微调控件的输入掩码。
8.3 控制类控件 8.3.1 命令按钮 1.常用属性选介 (1)Caption:设置命令按钮标题 (2)Enabled:用于确定命令钮对象是否响应用户的事件 (3)Visible:用于确定命令钮对象是可见的或者是隐藏的 (4)Default:若表单上有不止一个命令钮,可将其中一个命令按钮设置为缺省命令按钮。 (5)Cancel:若该命令按钮的Cancel属性为.T.,用户按Esc键将执行该命令按钮的Click事件。 (6)Picture:设置命令按钮上显示图形。 (7)ToolTipText:设置命令按钮的提示文本。
2.常用事件选介 (1)Click:命令按钮的单击鼠标左按钮事件。 (2)RightClick:命令按钮的单击鼠标右按钮事件
3.举例 例3.判断一个数是否为素数. Command1的click 事件代码: n=thisform.text1.value y='是素数' for i=2 to n-1 if mod(thisform.text1.value,i)=0 y='不是素数' endif endfor thisform.label2.caption=y 步骤: 添加两个标签控件,一个文本框控件,两个按钮控件.将文本框的value属性改为0,使其可以输入数值型数据.相应修改其他控件的caption属性. Command2的click事件代码: Thisform.release
8.3.2 命令按钮组 1.常用属性 2.举例
例4.设计一个表单,在表单上添加按钮组,使得表单可更换不同颜色.例4.设计一个表单,在表单上添加按钮组,使得表单可更换不同颜色. • 步骤: • from1的caption属性改为:’换装’ • 在表单上创建按钮组commandgroup1 • 在按钮组上单击鼠标右键,打开生成器.修改如下图:
在command1-command5的click事件中添写代码: thisform.backcolor=this.forecolor 在command6中添写代码: thisform.release
8.3.3 复选框 1.属性简介 2.事件选介 Click:单击复选框时触发 InteractiveChange:复选框值发生改变时触发。
8.3.4 选项按钮组 1.属性简介 2.举例 例5.浏览与编辑一张表.
步骤:创建一张表单,添加一个选项按钮组控件,一个复选框控件和两个按钮控件.添加status,score表到数据环境中.修改按钮控件及复选框控件的caption属性;步骤:创建一张表单,添加一个选项按钮组控件,一个复选框控件和两个按钮控件.添加status,score表到数据环境中.修改按钮控件及复选框控件的caption属性; 打开选项按钮组生成器: 给命令按钮添加代码: command1的click事件代码: if thisform.check1.value=1 brow else browse nomodi noappen nodele endif
command2的click事件代码: optiongroup1的click 事件代码: thisform.release do case case this.value=1 select score case this.value=2 select status endcase
8.3.5 计时器控件:控制表单自动重复执行一些操作。 1.属性选介 2.事件选介 Timer事件:在Interval属性规定的时间间 隔到后,将执行的操作。
3.举例 例6.动态显示’欢迎使用’并显示当前时间.
Timer1的timer事件代码: thisform.label2.caption=time() thisform.label2.left=mod((thisform.label2.left-20+375),375) if thisform.label1.fontsize<=72 thisform.label1.fontsize=thisform.label1.fontsize+12 else thisform.label1.fontsize=12 endif Command1的click事件代码: Thisform.release
8.4.2.页框与页面 1.页框的创建 利用表单控件工具栏的页框按钮来创建 2.页框属性选介: (1)PageCount:指定页框对象所含的页面数。缺省值为2。 (2)TabStretch:指定页框控件不能容纳选项卡时的处理方式。 (3)PageHeight:指定页框对象的高度,在设计和运行是只读。
(4)PageWidth:指定页框对象的宽度,在设计和运行是只读。 (5)TabStyle:为0(默认值)时,表示所有的页面标题布满页框的宽度,为1时,表示以紧缩方式显示页面标题,即显示时两端不加空位。 (6)ActivePage:指定页框对象中活动页的页码。 3.页面属性选介 Caption:指定页面标题,即选项卡标题。
例:创建一个含有三个页面的页框的表单,如图所示,分别用来显示欢迎语、系统日期和当前时间。例:创建一个含有三个页面的页框的表单,如图所示,分别用来显示欢迎语、系统日期和当前时间。 (1)打开表单设计器,在表单上创建一个页框PageFrame1,设置PageCount属性为3。 (2) 激活PageFrame1:在本对象上单击鼠标右键,选择编辑命令。 (3)选择Page1,修改Page1的Caption属性为“欢迎”。向Page1添加一标签Label1,修改其Caption为“欢迎您使用!”,Fontsize为24,Autosize为真,Fontname为隶书。
(4)选择Page2,修改Page2的Caption属性为“日期”。向Page2添加一文本框Text1,修改其Value=Date(),Dateformat=14(汉语日期格式),Fontsize为24,Aligment=2(居中)。(4)选择Page2,修改Page2的Caption属性为“日期”。向Page2添加一文本框Text1,修改其Value=Date(),Dateformat=14(汉语日期格式),Fontsize为24,Aligment=2(居中)。 (5) 选择Page3,修改Page3的Caption属性为“时间”。向Page3添加一文本框Text1,修改其Fontsize为24,Aligment=2(居中)。向Page3添加一计时器Timer1, 设置Timer1的Interval=500。 (6)对Timer1的Timer事件编码如下:This.Parent.Text1.Value=Time() (7)存盘运行表单
8.4.3 Container容器 1.属性选介: (1)Enabled:如果Container容器的Enabled属性为.F.,则其内的所有对象都不能响应事件。 (2)Speciaeffect:指定其是否有三维外形
8.4.4 表单集 表单集是一个包含一个或多个表单的父层次的容器类控件,它可将多个表单组成一组,以便成组处理。 1.表单集的创建 (1)创建步骤 ①创建或打开一个将被包含于表单集中某表单,假设此表单名为Form1。 ②选定“表单”菜单的“创建表单集”命令
②表单的删除 若要从表单集中删除表单,可选定该表单或从属性窗口中选定要删除表单,再选择“表单”菜单的“移除表单”命令。 2.表单集的删除 只有当表单集中仅剩余一个表单时,表单集才可删除。“表单”菜单中的“移除表单集”命令可用于删除表单集。表单集删除后表单仍存在。
3.表单集的运行与释放 (1)表单集的运行 运行表单集可用DO FORM 命令实现 (2)表单集的释放 方法1:使用命令Release ThisformSet来释放表单集。 方法2:表单集随最后一个表单的释放而自动释放,此时表单集的AutoRelease属性为.T.。
例:用表单集对STAFF、TEACH、COURSE三表建立联动查徇。例:用表单集对STAFF、TEACH、COURSE三表建立联动查徇。 (1)打开表单设计器,在数据环境中依次添加STAFF、TEACH、COURSE三表,并通过拖拉连线建立关联。 (2)创建表单集:选定表单菜单的“创建表单集命令”。 (3)向表单集添加两个表单:选定表单菜单的“添加表单命令”两次,表单设计器窗口中将出现Form2、Form3表单。 (4)将数据环境中STAFF表、TEACH表、COURSE表的标题栏依次拖放到Form1、Form2、Form3上,调整三个表单的大小和位置,使它们并排。 (5)Form1的UnLoad事件代码编写如下: THISFORMSET.Release && 使表单集随着Form1的释放而释放 (6)将表单集存为LHCX.SCX ,结果如图
8.5 连接类 8.5.1.ActiveX绑定控件 ActiveX控件用于直接在表单上插入ActiveX控件与OLE对象。而ActiveX绑定控件则实现在表单上显示表中通用字段的数据。 1.OLE对象 OLE技术全称是“对象的嵌入与链接”,在Windows中支持OLE技术的应用程序,可借助它进行数据交换。
2.属性选介 (1)ControlSource:设置ActiveX绑定控件的数据源, 必须设置。 (2)Stretch:指定如何对图像尺寸进行调整,以放入一个OLE对象。 (3)AutoVerbMenu:指定在运行时,ActiveX绑定对象有没有快捷菜单 2.超级链接 “超级链接”对象的功能主要通过一个方法程序Navigatito实现。它允许用户指定一个网址,调用它VFP就会启动浏览器,并根据指定的网址进入相应的网站显示网页。
例:在表单上创建一个命令钮,要求表单运行时单击该命令钮可跳转到微软网站。例:在表单上创建一个命令钮,要求表单运行时单击该命令钮可跳转到微软网站。 (1)创建如图表单。 (2)Command1的Caption属性设置为:微软网站 (3)Command1的Click事件代码编写如下: THISFORM.Hyperlink1.Navigateto(“www.sina.com.cn”)