第 9 章 表单控件的使用 本章提要:VFP表单控件工具栏上的21个基类控件及表单集,它们的常用属性、方法、事件及主要功能等。为叙述的方便,将VFP的基类控件及表单集按主要功能分为五类: 1.输出类:标签、图像、线条、形状。 2.输入类:文本框、编辑框、微调控件、列表框、组合框。 3.控制类:命令按钮、命令按钮组、复选框、选项按钮组、计时器。 4.多重容器类:表格、页框、Container容器、表单集。 5.连接类:ActiveX绑定控件、超级链接控件、ActiveX控件。
9.1 常用控件的基本属性 1.Name属性 指定在代码中引用对象时所用的名称。 2.Caption属性 9.1 常用控件的基本属性 1.Name属性 指定在代码中引用对象时所用的名称。 2.Caption属性 指定对象标题中显示的文本,即标题属性。
控件的基本属性 3.AutoSize属性 控件是否根据正文自动调整大小。 .T.—真:自动调整大小。 .F.—假(默认值):保持原设计时的大小。正文若太长自动截剪掉。 4.Height属性 指定对象在屏幕上的高度。 5.Widtht属性 指定对象在屏幕上的宽度。
控件的基本属性 6.Top属性 对于控件,指定相对父对象最顶端所在位置;对于表单对象,确定表单顶端边缘与VFP主窗口之间的距离 7.Left属性 对于控件,指定相对父对象的左边界;对于表单对象,确定表单的左边界与VFP主窗口左边界之间的距离。
控件的基本属性 8.Enabled属性 指定控件是否可用。 .T.—真(默认值):为可用。 .F.—假:不可用,呈暗淡色,禁止用户进行操作。 9.Visible属性 指定控件是否可见。 .T.—真(默认值):为可见。 .F.—假:不可见,但控件本身存在。
控件的基本属性 10.FontName属性 指定对象显示文本的字体名。 11.FontSize属性 指定对象文本的字体大小。 12.FontBold、FontItalic、FontStrikethru、FontUnderline属性指定文本是否具有下列效果:粗体、斜体、删除线或下划线。 (1)FontBold—是否粗体 (2)FontItalic—是否斜体 (3)FontStrikethru—是否加一条删除线 (4)FontUnderline—是否带下划线
控件的基本属性 13.ForeColor属性 设置控件的前景颜色(即正文颜色)。用户可以在属性窗口中用调色板直接选择所需颜色,也可以在程序中用RGB()函数设置。 14.BackColor属性 设置背景颜色,选择方法同前景颜色。 15.BackStyle属性 设置背景风格。 0—透明:控件背景颜色显示不出来。 1—不透明(默认值):控件设置背景颜色。
控件的基本属性 16.BorderStyle属性 设置边框风格。 0—无:控件周围没有边框。 1—固定单线(默认值):控件带有单边框。 17.Alignment属性 控件上正文水平对齐方式。 0—左:正文左对齐。 1—右:右对齐。 2—中间:正文居中。 3—自动(默认值)。
控件的基本属性 18.WordWarp属性 19.Style属性 指定控件的样式。 适用于:复选框、组合框、命令按钮、文本框、选项按钮组。 当AutoSize属性设为.T.时,WordWarp才有效。 .T.—真:表示按照文本和字体的大小在垂直方向上改变显示区域的大小,而在水平方向不发生变化。 .F.—假(默认值):表示在水平方向上按正文的长度放大和缩小;在垂直方向以字体大小来放大或缩小显示区域。 19.Style属性 指定控件的样式。 适用于:复选框、组合框、命令按钮、文本框、选项按钮组。
控件的基本属性 20.Picture属性 指定在控件中显示的位图文件(.BMP)、图标文件(.ICO)或通用字段。 适用于:复选框、命令按钮、选项按钮组、容器对象、图像、表单等。 21.TabIndex属性 指定页面上控件的Tab键次序。 22.TabStop属性 指定用户是否可以使用Tab键把焦点移到对象上。
控件的基本属性 23.SpecialEffect属性 指定控件不同样式选项。 0—3维:立体效果。 1—平面:平面效果。 0—凸起(除容器对象之外的所有对象的缺省值)。 1—凹下。 2—平面(仅是容器对象的缺省值)。
控件的基本属性 24.Value属性 指定控件的当前状态。 适用于:复选框、列表框、组合框、命令按钮组、编辑框、表格、文本框、选项按钮组、微调按钮。 对于列表框、组合框、命令按钮组、编辑框、表格、文本框、微调按钮,Value属性的设置为当前所选的字符或数值。
控件的基本属性 25.InputMask属性 指定控件中数据的输入格式和显示方式。 应用于:微调、文本框、组合框。 26.Stretch属性 在一个控件内部,指定如何调整一幅图像以适应控件的大小。 0—剪裁,剪裁图像以适应控件。 1—等比填充。调整图像大小以适合控件,同时保持图像的原始比例。 2—变比填充。调整图像大小以适合控件,但是不保持图像的原始比例。
多数控件具有的基本属性: Name、 Caption、 AutoSize、 Height、 Width、 Top、 Left、 FontBold、 BackColor、 ForeColor、 Style、 TabIndex、 TabStop、 ButtonCount、 BorderStyle、 BackStyle、 Alignment、 SpecialEffect Name、 Caption、 AutoSize、 Height、 Width、 Top、 Left、 Enabled、 Visible、 FontName、 FontSize
9.2 输出类控件 9.2.1 标签控件(Label) 1.常用属性 标签控件最特有的属性为:WordWrap折行显示。 2.常用事件 单击(Click)、双击(DblClick)。
9.2 输出类控件 9.2.2 线条控件(Line) 线条控件(Line)用于在表单上画各种类型的线条。 添加线条控件,只要单击表单控件工具栏中的线条控件,把鼠标指向表单,在表单上拖动鼠标画出一个放置线条的矩形框,释放鼠标按键即可添加一个线条控件。可以对它进行设置属。 1.常用属性
9.2.2 线条控件(Line) (1)BorderStyle属性 确定线条形状。只有在BorderWidth属性设置为1时,BorderStyle属性才有实际意义。BorderStyle属性值包含7个选项: 0——透明 1——实线,为默认状态 2——虚线 3——点线 4——点划线 5——双点划线 6——内实线 (2)BorderWidth属性 确定线宽,单位是像素。比如,该属性值设置为3,则表示线宽为3个像素。
9.2.2 线条控件(Line) (3)Height属性 确定画线状况,如果要画水平线,只需要设置该属性值为0即可。 (4)LineSlant属性 确定画线方向。它的属性设置只有反斜杠(\)和斜杠(/)两种。 (5)Width属性 确定画线区域宽度。与BorderWidth属性不同的是,该属性确定画线区域的宽度。注意,此属性与其他控件相应属性有所区别。可以根据需要确定画线的宽度,如果画垂直线,只要把该属性值设置为0即可。 2.常用事件 Click DblClick。
9.2.3 形状控件(Shape) 形状控件(Shape)用于在表单上画各种类型的形状。可以根据需要画矩形、圆角矩形、正方形、圆角正方形,椭圆或圆等。 添加形状控件,只要单击表单控件工具栏中的形状控件,把鼠标指向表单,在表单上拖动鼠标画出一个放置形状的矩形框,释放鼠标按键即可添加一个形状控件。可以对它进行设置属性。
9.2.3 形状控件(Shape) 常用属性:Curvature 确定形状的弯曲度。Curvature属性的取值范围从0到99。当Curvature属性值为0时,表示要画的图形为矩形或正方形;Curvature属性值为99时,表示要画的图形是圆形或椭圆。Curvature属性值为1到99的之间值,画出的图形为圆角矩形或圆角正方形。
9.2.4 图像控件(Image) 图像控件(Image)的功能是在表单上显示图像。使用图像控件只能在表单上显示.BMP图像,而不能对它们编辑。 添加图像控件,只要单击表单控件工具栏中的图像控件按钮,在表单适当位置拖动鼠标画出一个矩形,释放鼠标按键即可在表单中添加一个图像控件。在图像属性对话框中,有许多属性可以设置,也可取默认值,这里只介绍几个常用属性。
1.常用属性 (1)Picture属性 指定在控件中显示位图文件(BMP)、图标文件(.IOC)或通用字段。 (2)BackStyle属性 确定图像透明(0)还是不透明(1)。 (3)BorderColor属性 确定图像颜色,可以根据需要自己设定。 (4)ColorSource属性 可以设定为“对象颜色属性”或“Windows默认”。
(5)Stretch属性 设置图像放置情况。有三种选择项: 0(裁剪):表示将图像裁剪成图像控件设置的大小。 1(等比填充):表示将相对比例保持图像区域的图像的大小。 2(变比填充):表示它将按显示区域的高度和宽度显示全部图像,而不保持图像原有的相对比例. (6)Visible属性 设置图像是否可见。逻辑值为真(.T.)或假(.F.)。
9.8.2 图像控件(Image) 说明: (1)向图像控件Image中装载图片,只能用表单Form的Init事件和Activate事件。 (2)图片的文件类型为:Bmp 、ico、jpg 。 2.常用事件 Click、DblClick、MouseMove、MouseDown
【例9-1】设计如图9.1(P 204)所示的应用程序界面的表单。 运行
9.3 输入类控件 9.3.1 文本框控件(TextBox) 1.常用属性 9.3 输入类控件 9.3.1 文本框控件(TextBox) 1.常用属性 (1)Text文本属性:在文本框中显示正文的内容存放在Text属性中。 (2)Value属性:指定文本框当前的状态。Value属性允许任何数据类型。 (3)PasswordChar属性:在对话框中创建一个密码字段。一般用星号(*)。
9.3.1 文本框控件(TextBox) 2.常用事件 Change、KeyPress和LostFocus。 3.常用方法 文本框最常用的方法是:SetFocus,该方法是使指定的文本框获得焦点。 例如:ThisForm.Text1.SetFocus表示程序开始时表单中的文本框首先得到光标。
9.3.1 文本框控件(TextBox) 【例9-2】某铁路上共有n(n>1)个车站,需要准备多少种车票?设任意两个车站之间都有往返车票。 【例9-3】设计如图9.4所示的表单,实现按职工号查询职工的姓名与所在的仓库,查询结果显示于【姓名】与【仓库】号文本框中。P.210 运行 相近实例运行
9.3.2 编辑框控件(EditBox) 1.常用属性 (1)ScrollBars滚动条属性 0—无:没有滚动条。 2—垂直:加滚动条。 (2)ReadOnly属性 指定用户是否可以编辑一个控件。 应用于:编辑框、文本框、表格、微调按钮。 .T.—真:不能编辑控件。 .F.—假(默认值):可以编辑控件。 2.常用事件: KeyPress、Click、DblClick和LostFocus。 3.常用方法 编辑框最常用的方法:SetFocus。
9.3.2 编辑框控件(EditBox) 【例9.4】设计表单,实现在一个编辑框中查找另一个编辑框选定项内容 。 运行
9.3.3列表框控件与组合框控件 1.常用属性 (1)List 属性 (2)ListIndex属性 该属性只能在程序中设置或引用。ListIndex的值表示执行时选中的列表项序号,如果没有任何项被选中,则ListIndex的值为—1。 (3)ListCount属性 该属性只能在程序中设置或引用。ListCount的值表示列表框中项目数量。
9.3.3 列表框控件与组合框控件 (4)Selected属性 Selected(0)的值为.T. 表示第1项被选中。 Selected(i)的值为.T. 表示第i+1项被选中。 Selected(i)的值为.F.表示第i+1项未被选中。
9.3.3列表框控件与组合框控件 (5)RowSource属性 指定列表框和组合框控件中值的来源 (6)RowSourceType属性 指定列表框和组合框控件中值的来源类型 (7)MultiSelect属性 指定用户是否可以在一个列表框控件中作多项选择,以及如何选择。 .T.—真:允许作多项选择。用Ctrl键和鼠标单击,可选定多个不连续的选项。用Shift键和鼠标单击,可选定多个连续选项。可以用Selected属性确定选择了哪些项。 .F.—假:不允许作多项选择,默认设置。
9.3.3列表框控件与组合框控件 指定与对象绑定的数据源,即与Value值数据绑定字段。 (8)ControlSource属性 指定与对象绑定的数据源,即与Value值数据绑定字段。 应用于:复选框、列表框、组合框、选项按钮组、OLE绑定型控件、文本框。
9.3.3 列表框控件与组合框控件 2.常用事件 3.常用方法 Click、DblClick、DownClick、DropDown。 (1)AddItem方法 在列表框或组合框中添加一个新数据项,并且可以指定数据项索引。 对象.AddItem (〈数据项〉[(nIndex)]) 说明:如果选择nIndex可选项,则指定控件中放置数据项的位置。如果忽略了此参数,数据项是按存放的顺序排列。如果Sorted属性设为“真”(.T.),则数据项按字母排序,添加到列表框或组合框中。
9.3.3 列表框控件与组合框控件 (2)RemoveItem方法 从列表框或组合框中移去一个数据项。 对象.RemoveItem(nIndex) 说明:nIndex参数,指定一个整数,它对应于被移去项在控件中的显示顺序。对于列表框或组合框中的第一项,nIndex=1。 (3)Clear方法 对象.Clear 可清除列表框、组合框控件的所有内容。
9.3.3列表框控件与组合框控件 例:在表单上创建一下拉组合框控件,要求列表中显示STU表的三个专业,表单初运行时,组合框显示“计算机”。 在组合框控件属性窗口中设置其Displayvalue属性为:“计算机”,在该控件的Init事件中输入如下代码: PUBLIC zy(3) zy(1) = “电子” zy(2) = “金融” zy(3) = “计算机” 随后将问题交给生成器,在生成器的“用此值填充列表”的选项中选择“数组中的值”,在将“数组名”文本框中添入zy即可。
9.3.3列表框控件与组合框控件 【例9-5】设计如图9.6所示的表单,实现列表框项目的添加、删除与全部清除。(P.215) 运行 相近实例运行
9.3.4 微调按钮控件(Spinner) 1.常用属性 (1)KeyboardHighValue属性 指定可用键盘输入到微调控件文本框中的最大值。 (2)KeyboardLLowValue属性 指定可用键盘输入到微调控件文本框中的最小值。 (3)InputMask属性 设置输入数值的格式。
9.3.4 微调按钮控件 (6)Value属性 指定控件的当前状态。 值为1——选定。 (4)SpinnerHighValue属性 9.3.4 微调按钮控件 (4)SpinnerHighValue属性 指定单击上和下箭头时,微调控件所允许的最大值。 (5)SpinnerLowValue属性 指定单击上和下箭头时,微调控件所允许的最小值。 (6)Value属性 指定控件的当前状态。 值为1——选定。
2.常用事件 KeyPress、 Click、 DblClick、 DownClick、 Init、 InteractiveChange LostFocus
9.4 控制类控件 为实现程序流程的控制,在VFP的可视化程序设计中,控制类控件是不可缺少的。本类控件主要有:命令按钮、命令按钮组、复选框、选项按钮组、计时器等。
9.4.1 命令按钮控件 接受用户输入的命令,输入命令可以有三种方式: 鼠标单击、Tab键焦点到该按钮上、快捷键(Alt+有下划线的字母)
1.常用属性 (1) Caption属性 命令按钮显示的内容。 (2) Picture属性 按钮可显示图片文件(.bmp、.Ico和.jpg)。
2.常用事件 单击(Click) 双击(DblClick)
9.4.2 命令按钮组 (Commandgroup) ButtonCount:设置组容器所包含的命令按钮的个数。 常用属性 ButtonCount:设置组容器所包含的命令按钮的个数。 Value:若Value属性设置为1(默认值),单击组控件内某命令按钮,Value将返回此命令按钮的顺序号;若Value属性设置为“空”,单击组控件内某命令按钮,Value将返回此命令按钮的Caption属性。
要编辑命令按钮组内各命令按钮,必须先激活组容器(选择命令按钮组快捷菜单的“编辑”命令可实现)。 【例9-7】在订货管理数据库中增加 USER.DBF表,存放帐号与密码。表结构为USER(ZH C(6),MM C(6)),要求设计如图9.10所示(P 224)的表单,实现据帐号核对密码。密码由数字构成。 运行
9.4.3 复选框控件(CheckBox) 从几种方案中,选择其中一种用“复选框”的控件,它有两种状态可以选择: (1)选中,复选框中出现一个“√”标志。 (2)不选,或称“关闭”,“√”标志消失。 如同开关一样,每单击一次,它的状态在“打开”与“关闭”之间切换。“√”标志也在有和无之间切换
1.复选框常用属性 (1)Alignment属性 0—左:控件钮在左边,标题显示在右边,缺省值。 1—右:控件钮在右边,标题显示在左边。 (2)Value属性 0—未被选定,缺省设置。 1—被选定。 2—灰色,禁止选择。 该设置只在代码中可用。 (3)Style属性指定单选按钮或复选框的显示方式。 0—标准。 1—图形。
2.复选框常用事件 Click DblClick KeyPress MouseUp MouseMove
9.4.4 选项按钮组 (OptionGroup) 常用属性 (1)Value属性 对于单选项按钮: 0—未被选定,缺省设置。 1—被选定。
【例9-8】设计表单实现按仓库所在城市统计各城市仓库的总面积。(P.227) 相近实例运行
9.4.5 计时器控件 1.常用属性:Interval 指定计时器控件的Timer事件之间的时间间隔毫秒数,单位为ms(0.001 s),Interval=500,是0.5秒触发一次Timer事件。 缺省为0,不触发Timer事件。 Interval=0:屏蔽计时器。
9.4.5 计时器控件 2.常用事件 Timer事件,时钟控件只有一个Timer事件,每隔Interval触发一次Timer事件。 【例9-9】修改本章【例9-1】封面表单,使封面上的控件实现由大至小或由小至大的动态变化。(P.228) 运行
9.5 多重容器类 表格、页框、Container容器、表单集都是多重容器类。表格可包含列、列标题与列控件;一个页框可由多个页构成,每个页相当于是一个表单容器。 Container容器中可包含除表单之外的各种控件;表单集是表单的容器。在引用这四类控件及其包含对象时,要特别注意容器的层次结构。
9.5.1 容器控件(Container) 【例9-10】设计如下图所示的调查表表单 。 在容器控件(Container)上面加上一些其他控件。这些控件随容器移动而移动,其Top和 Left属性均相对于容器而言,与表单无关。 【例9-10】设计如下图所示的调查表表单 。 (P.229) 运行
9.5.2 表格控件(Grid) 表格(Grid)控件类似浏览窗口。它具有网格结构,有垂直滚动条和水平滚动条,可以同时操作和显示多行数据。但表格不等于浏览窗口。作为一个控件,表格用于在电子表格样式的表格中显示数据。 在表单中添加表格,只要按下表单工具栏中的“表格”控件按钮,把鼠标指向表单,拖动鼠标画出一个放置表格控件的矩形框,释放鼠标按键即可看到这个表格控件。可以设置属性。
1.常用属性 (1)ColumnCount属性 确定列的数目。 (2)RecordSource属性 指定表格中要显示的数据。它与RecordSourceType属性值联系紧密。
1.常用属性 (3)RecordSourceType属性 (4)RowHeight属性 指定每行的高度。
2.表格生成器 用“表格生成器”可以设置表格的属性。要使用“表格生成器”,只要在“表单控件”工具栏中右击“表格”控件,然后从“表单设计器”快捷菜单中,选择“生成器”命令,弹出“表格生成器”对话框。从该对话框中,选择合适的选项,然后单击“确定”按钮,关闭“生成器”对话框,各个选项卡中的属性设置开始生效。
【例9-11】设计表单编辑职工表,其中性别字段标题改为“男性否”,用复选框表示;并要求能在表格中添加记录与删除记录。 运行
【例9-12】设计如下图所示的表单,实现按课程名浏览学生的选课急成绩信息。 运行
9.5.3 页框控件(PageFrame) 页框控件(PageFrame),实际上就是选项卡界面。在表单中,一个页框可以有两个以上的页面,它们共同占有表单中的一块区域。 在某一时刻只有一个活动页面,而只有活动页面的控件才是可见的。 可用鼠标单击需要的页面头来激活这个页面。表单中的页框是一个容器控件,它可以容纳多个页面,在每个页面中,又可以有容器控件或其他控件。
9.5.3 页框控件(PageFrame) 有多个数据屏幕需要显示时,页框很有用处,它使用户可以往前或往后翻页,而无需编写另外的程序; 可用PageCount属性用来设置页面数; 在添加控件前,如果没有将页框作为容器激活,控件将添加到表单中,而不是页框中,看上去好像是在页面中。
【例9-13】在表单上创建一个含有两个页面的表单,如下图所示,分别用来浏览、编辑课程表表单和学生表表单。 运行
9.5.4 表单集(Formset) 表单集是一个包含一个或多个表单的父层次的容器类控件,它可将多个表单组成一组,以便成组处理。表单集具有以下特点: 可以同时显示或隐藏表单集中的全部表单。以可视的模式调整多个表单以控制它们的相对位置。 表单集及其所有表单都存放在一个 .SCX文件中。 表单集中的所有表单共享一个数据环境,因此只要加上适当的关联,就可实现不同表单间的表记录指针同步移动。 运行表单集时,它包含的所有表单就都被加载。
9.5.4 表单集(Formset) 表单集的创建与其他对象的创建与删除不同,在表单控件工具栏中没有表单集控件,它的创建与删除主要是利用【表单】菜单的相应命令完成的。而表单菜单只有在打开表单设计器后才会出现。 【例9-15】用表单集查看职工及职工所操作订单的情况。 运行
9.6 连接类控件 VFP不仅可以使用自己的数据,而且可以使用由其他应用程序创建的数据与控件,以扩展它的功能。VFP提供的ActiveX控件、ActiveX绑定控件及超级链接控件可帮助VFP实现上述目的。
9.6.1 ActiveX绑定控件 1. OLE对象 OLE技术全称是“对象的链接与嵌入”,在Windows中支持OLE技术的应用程序,可借助它进行数据交换。VFP支持OLE技术。 在OLE中,存储源对象的应用程序称为OLE服务器,存储链接或嵌入对象的应用程序称为OLE客户。通过这项功能,在VFP的表单中或VFP表的通用型字段里,可以包含来自其他应用程序的特殊功能和数据,例如文档数据、声音数据、图片数据,甚至视频数据等。
9.6.1 ActiveX绑定控件 2. 添加ActiveX绑定控件 选定表单控件工具栏的ActiveX绑定控件按钮在表单中拖至期望的大小,或利用字段映像功能,从数据环境中选定某表的通用字段并将其拖放至表单中。创建的第一个ActiveX绑定控件的对象缺省名为Oleboundcontrol1。
9.6.1 ActiveX绑定控件 ControlSource:设置ActiveX绑定控件的数据源,本属性必须设置。 3. 常用属性 ControlSource:设置ActiveX绑定控件的数据源,本属性必须设置。 Stretch:指定如何对图像尺寸进行调整,以放入一个OLE对象。取值在图像控件中已介绍。 AutoVerbMenu:指定在运行时,ActiveX绑定对象有没有快捷菜单,为 .T.(默认值),则有,为 .F.,则无。该快捷菜单主要用于实现该对象的现场编辑或打开应用程序编辑。
9.6.1 ActiveX绑定控件 【例9-16】创建 PLAY.DBF表,该表结构为(记录号C(1),多媒体G)。创建如图9.20所示的表单,实现对PLAY表的通用字段进行浏览、添加与修改。(P.242) 运行
9.6.2 超级链接(Hyperlink) “超级链接”对象可以使用户从当前位置跳转到Internet或Intranet的—个目标地址上。 运行
9.7 综合性的练习 【例9-14】综合使用所学控件知识,设计如下图所示的表单,以实现STU表的浏览、编辑、添加、删除。在设计表单时应注意界面的友好性与美观( P.237) 。 运行
习题 P.244 一、单项选择题 二、填空题 三、表单设计题(上机操作)