第6章表单设计_第1页
第6章表单设计_第2页
第6章表单设计_第3页
第6章表单设计_第4页
第6章表单设计_第5页
已阅读5页,还剩20页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Visual FoxPro程序设计 教案 -67-第6章 表单及其控件的创建与使用6.1 表单概述表单:类似于Windows中的各种标准窗口与对话框,是一种容器类,可包括多个控件对象,用于处理各种数据。即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改。表单集:可包含一张或多张表单的容器。数据环境: 在打开或修改一个表单或报表时需要打开的全部表、视图和关系。它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。可以用数据环境设计器来创建和修改表单的数据环境。6.2 使用向导创建表单利用表单向导可以创建基于一个表的表单,也可以创建基于具有一对多关系的二个

2、表的表单。6.2.1 利用向导创建基于一个表的表单例1:利用向导创建基于一个学生表的表单,浏览学生表中的信息注意:表单保存后产生两个文件,即表单文件(.SCX)和表单备注文件(.SCT)6.2.1 利用向导创建一对多表单例2:利用向导创建一对多表单,浏览学生表和成绩表中的对应学生的信息和成绩信息6.3 表单设计器6.3.1 表单设计器概述创建或修改表单Ø 项目管理器中创建表单 Ø Create form 表单名 &&创建表单Ø Modify form 表单名 &&修改、打开表单表单设计器界面及其组成:表单设计器 表单设计器工具栏 表

3、单控件工具栏 属性窗口1表单设计环境的设置2“表单“菜单3“表单设计器“工具栏4“表单控件“工具栏5“布局“工具栏6“属性窗口” 表单及其中的控件都是一个个的对象,他们有各自的属性、事件和方法。7为表单集或表单创建新属性和新方法6.3.2 事件与方法的代码设置表单(集)及其所包含的对象都有与之相关的事件和方法程序。事件可以是用户行为触发的,也可以是系统行为触发的。方法程序是和对象相联系的过程,只能通过程序以特定的方式激活。1编辑事件处理代码或方法程序代码的方式:(1)系统菜单命令“显示”->”代码”(2) 在“属性”窗口中双击某事件或方法(3)在“表单设计器”窗口中双击表单或某控件2常用

4、的方法及其调用(1)Setall方法:为容器对象中的所有控件或某一类控件制定一个属性设置,其语法格式为:container.setall(cproperty,value,cclass)例1:将表格控件中列对象的backcolor属性设置为红色Thisform.grid1.setall(“backcolor”,rgb(255,0,0),”column”)例2:将表格控件中每个列对象包含的标头的forecolor属性设置为绿色 Thisform.grid1.setall(“forecolor”,rgb(0,255,0),”header”)(2)常用的方法.Hide/Show方法 &&

5、;表单隐藏/显示.Setfoucs方法&& 对象获得焦点.Refresh/release&&表单刷新/释放6.3.3 表单的数据环境表单(集)的数据环境包括了与表单交互作用的表和视图,以及表之间的关系;表单打开时,数据环境中的表和视图自动被打开;当表单关闭或释放时,数据环境中的表和视图自动被关闭。1数据环境的设置(1)永久关系或临时关系的设置(2)数据环境中属性的设置Dataenvironment,cursor1(order),cursor2,relation1(childorder,relationalexpr)2控件与数据的关系根据控件与数据环境中数据的关系

6、,控件可以分为两类:数据绑定型控件和非数据绑定型控件。绑定型控件:是指与表或视图等数据源中的数据绑定的控件:复选框,列表框,组合框,命令组,编辑框,列,选项按纽,选项组,微调框,文本框,表格等控件可以与数据绑定。除表格以外的绑定型控件通过对Controlsource属性的设置为为表或视图的某个字段或内存变量来实现数据绑定表格控件通过Recordsourcetype和recordsource属性设置来和表或视图进行绑定非绑定型控件:不与数据绑定的控件,主要有线条,标签,命令按钮和命令按钮组等控件6.3.4 使用表单设计器修改表单1修改表单布局 选择控件、移动控件、缩放控件、复制控件、添加控件2修

7、改表单的外观属性Ø 表单的标题(caption)Ø 标题前面的控制菜单图标(icon)Ø 有无最大化/最小化按钮(maxbutton/minbutton)Ø 边框样式(borderstyle)Ø 是否自动居中(autocenter)等Ø 颜色(backcolor,forecolor)与背景(picture)Ø 文字的字体和大小(fontname,fontsize)Ø 控件可用与可见(enabled,visible)6.3.5 使用表单设计器创建表单1利用表单生成器创建表单2利用数据环境创建表单中的控件可以将字段、表

8、或视图从数据环境中拖放到表单上,从而直接创建与字段、表或视图数据相对应的控件若要创建一个将下面的项拖动到表单表格表复选框逻辑型字段编辑框+标签备注型字段OLE 绑定型控件+标签通用型字段文本框+标签其他类型的字段3利用“表单控件”工具栏向表单中添加控件4表单的保存与运行 Do form 表单名6.3.6 用表单集扩展表单通过将多个表单包含在一个表单集中,或基于一个表单创建表单集并向表单集中添加表单6.3.7 控制表单的行为下表是定义表单外观和行为的常用属性属性、事件、方法说明默认值AlwaysOnTop属性控制表单是否总是处在其他打开窗口之上假(.F.)AutoCenter属性控制表单初始化时

9、是否让表单自动地在Visual FoxPro主窗口中居中假(.F.)BackColor属性决定表单窗口的颜色255,255,255BorderStyle属性决定表单是否有边框,若有边框,是单线边框、双线边框,还是系统边框。如果BorderStyle为3(系统),用户可重新改变表单大小3Caption属性决定表单标题栏显示的文本FormlClosable属性控制用户是否能通过双击“关闭”框来关闭表单真(.T.)controlbox指定是否显示表单控制菜单图标Icon 控制表单控制菜单图标MaxButton属性控制表单是否具有最大化按钮真(.T.)MinButton属性控制表单是否具有最小化按钮真

10、(.T.)Movable属性控制表单是否能移动到屏幕的新位置真(.T.)WindowState属性控制表单是最小化、最大化还是正常状态0正常windowtype指定表单是模式表单还是无模式表单无模式showwindow将表单设置为顶层表单、在顶层表单中或在屏幕中6.3.8 创建单文档界面与多文档界面注意:利用showwindow和desktop属性可以将表单设置为顶层表单、浮动表单或子表单。6.4 控件6.4.1标签(Label):用于显示文本的图形控件,保存不希望用户改动的文本,在表单运行时其文本不能被用户直接更改,通常用于显示提示信息。几个主要的属性:Caption(标签内容256)Bac

11、kstyle(是否透明)Alignment(文本对齐方式) Autosize(自动调整大小)Wordwrap(是否换行)Name(标签名称)Fontname(字体)Fontsize(字号)Forecolor(字体颜色)Fontbold(粗体)Fontitalic(斜体)举例1:该标签控件有3行内容(汉字),要自动调整控件大小则:首先将AUTOSIZE属性和WORDWRAP属性都设置为真,然后设置CAPTION属性6.1.2文本框与编辑框1文本框(Textbox): 是一种常用控件,通过文本框可以显示,输入或编辑表中的非备注型字段的数据,文本框中一般是单行的文本。文本框的主要属性: Name属性

12、:文本框控件的名字Controlsource属性:指定与文本框绑定的数据源(字段或内存变量)。Value属性:指定文本框的数据(未绑定),保存文本框中的数据,默认值为空字符串,在程序代码中,若需要引用或更改文本框中所显示的数据,可通过引用或设置Value属性来实现。Passwordchar属性:指定作为占位符的字符,即用占位符来掩盖其输入的字符,但是文本框的Value属性将保存用户的实际输入。Inputmask属性:指定控件中数据的输入格式和显示方式(X,9,A,)Format属性:指定控件的VALUE属性的输入和输出格式(A,D,K,T,!)Readonly属性:指定控件内容是否只读。Ali

13、gnment属性:文本的对齐方式Borderstyle属性:边框样式Backstyle属性:是否透明Specialeffect属性:是否具有三维格式文本框的输入格式与显示格式:Inputmask属性:指定控件中数据的输入格式和显示方式(X,9,A,)Format属性:指定控件的VALUE属性的输入和输出格式(A,D,K,T,!)对于日期型文本数据:dateformat属性:设置日期格式datemark属性:日期分隔符century属性:设置世纪打开情况。举例2:利用文本框与字段绑定,显示学生表中的学生学号,姓名性别等信息(与表中的字段进行绑定)举例3:利用文本框来设置注册,登陆界面(通过Val

14、ue属性取值)VALID事件:在控件失去焦点前发生,可以为文本框的文本设置有效性规则。举例4. 文本框的输入格式与显示格式: 帐号文本: inputmask,format, 一般数值文本框:inputmask,format,value内容为日期型文本:dateformat,datemark,century,value2编辑框(Editbox):与文本框类似,可以输入或编辑长字段或备注字段,允许自动换行并能用光标移动键,操作滚动条来浏览。 Controlsource: 绑定备注型字段,利用编辑框显示或编辑备注型字段。 Scrollbars:决定编辑框是否有垂直的滚动条。Name: 编辑框的名称举

15、例5:浏览学生表中的备注型字段6.4.7 微调框(Spinner)微调框控件:通过单击微调框控件的上箭头或下箭头,或者在微调框内键入一个数值,通常与数值型字段进行绑定。主要的属性:Controlsource: 指定与对象建立的数据源;Value: 控件的当前状态;Keyboardhighvalue: 键盘接受的最大值;Keyboardlowvalue: 键盘接受的最小值;Spinnerlowvalue: 按钮接受的最小值;Spinnerhighvalue: 按钮接受的最大值;Increment: 每次的增量.举例6:通过微调框对成绩表(cj)进行学生成绩的修改(需要和成绩字段绑定)6.4.11

16、 命令按纽和命令按纽组命令按纽(Commandbutton)通常用来启动一个事件以完成一种功能,如关闭一个表单、移动记录、打印报表等动作。命令按钮常用的属性:Name属性:指定命令按纽的名字;Caption属性:指定在命令按纽上显示的文本;Picture属性:指定命令按纽上显示的图形;Default属性:指定按下<ENTER>键时,哪个按纽响应;Cancel属性:指定按下<ESC>键时响应的命令按钮;Enabled属性:指定是否可以响应用户引发的事件,即命令按纽是否可用;Downpicture属性:指定命令按纽被选中时的图形;Autosize属性:根据内容自动调节大小;

17、Visible属性:指定命令按纽是否可见Click events事件:单击命令按钮时触发的事件。举例7:利用命令按钮浏览学生表的学生信息命令按钮组(Commandgroup):是一个容器型控件,它包括一组命令按钮。常用的属性:Buttoncount属性:指定命令按纽组中包含命令按纽的数目,其默认值为2;Borderstyle属性:指定边框样式Value属性:指定控件的当前状态,其默认值为1,在运行时,其值为所选命令按钮的顺序号。Click events事件:单击事件讲解命令按钮组生成器,来设置命令按钮组的布局注意:对命令按钮组来说,可以为每个命令按钮分别设置相应的事件处理代码,也可以通过命令按

18、钮组设置整体事件代码来响应各个命令按钮的事件。举例8:利用命令按钮组来浏览学生表的学生信息6.4.5 选项按纽组选项按纽组(Optiongroup)是包含多个选项按钮的容器控件,运行时允许用户从中选择一个按纽,选项按纽旁边的圆点指示当前的选择。选项按钮组常用的属性:Buttoncount:决定选项按纽的个数,默认为2个;Bordetstyle:指定边框样式;Controlsource:指定所绑定的数据源,或将选项值写入数据源;Value:指定控件的当前状态,表明用户选定的哪一个按纽。说明:P193选项按钮常用的属性:Caption:设置选项按纽的标题;Alignment:设置选项按纽的标志和标

19、题的排列方式;举例9: 利用选项按纽组进行修改教师表的性别,利用标签,文本框,选项组,命令按纽组等。举例10:利用编辑框,选项按纽组,命令按纽组做选择题考试界面,可以重复考试举例11:根据选项按纽组中所选择的职称在列表框中显示该职称的教师工号和姓名。do case case this.value=1 if not bof() skip 1 else mand1.enabled=.f. endif mand2.enabled=.t. thisform.refreshcase this.value=2 if not eof() skip else mand2.enabled=.f. endif m

20、and1.enabled=.t. thisform.refreshcase this.value=3 c1=0 n=recno() scan if alltrim(user)=answer c1=c1+1 endif endscancount to c2cstring=alltrim(str(c1/c2*100,6,2)+”%”=messagebox(“正确率为:”+cstring,64+0+0,”成绩”)go ncase this.value=4 replace all user with “”go topcase this.value=5 thisform.releaseendcaseth

21、isform.refresh6.4.6 复选框(Checkbox)利用复选框指定或显示一个逻辑状态:真/假,开/关,是/否等,通常与逻辑型字段绑定主要的属性:Caption属性:指定复选框标题中显示的文本;Controlsource属性:指定所绑定的数据源,通常是表中的逻辑型字段;Value属性:指定复选框的当前状态,其取值可以为0,1,2,分别表示“清除选择”、“选择”、“混合值”,注意:复选框有三种状态六种取值。Style属性:指定复选框控件的样式(图形或标准样式)注意:复选框的显示状态和VALUE的对应关系:状态VALUE值没选中0或.F.选中1或.T.复选框变为灰色2或.NULL.举例

22、11:利用复选框输入和设置课程类别是否为必修课。举例12:利用复选框控制列表框中显示教师工号,还是显示教师工号和姓名。6.4.3 列表框列表框(Listbox):主要用于显示一组预定的值,通过滚动条操作浏览列表信息,用户可以从列表框中可以选择需要的数据。常用的属性:Columncount:列的个数Rowsourcetype :指定数据源的类型(如表或查询)(通常有三种常用选择:值,SQL语句,字段)。Rowsource :指定数据源Controlsource :用于指定用户从列表框中选择的值保存在何处。Boundcolumn:确定多列中哪一列与value绑定Listcount:列表框或组合框中

23、的元素的个数Selected属性:指定列表框或组合框中的数据元素是否处于选中状态Sorted:按字母进行排序Mutiselected:在列表框内进行多重选择Moverbars:显示移动条,进行手工排序。List:在调用列表框中元素,相当于数组名Clear:清除列表框中所有的条目Additem方法:向列表框或组合框中添加一个条目Removeitem方法:从列表框或组合框中删除一个条目Requery方法:举例:1 利用列表框显示JS表的系代号字段(设置rowsourcetype,rowsource)(两种方式),destroy事件:当释放一个对象时发生。2 利用列表框中显示(xs)多列字段(col

24、umncount,rowsourcetype,rowsource) 结合boundcolumn ,controlsource说明哪一列数据与数据源绑定3 利用文本框和列表框之间进行数据转换(sorted,moverbars进行排序)。文本框:keypress事件:当用户按住并释放一个键时发生。if nkeycode=13 thisform.list1.additem(this.value) this.value=” endifthisform.refresh列表框:dblclick事件:双击鼠标时发生 thisform.text1.value=this.list(this.listindex)

25、 this.removeitem(this.listindex)thisform.refresh4利用两个列表框通过命令组进行数据之间的传递:interactivechange事件:当用户使用键盘或鼠标更改控件的值时发生。 thisform.cmdg1.cmd1.visible=.t. thisform.cmdg1.cmd2.visible=.f. thisform.cmdg1.cmd1.visible=.f. thisform.cmdg1.cmd2.visible=.t.l1=thisform.list1l2=thisform.list2do case case this.value=1 &

26、amp;& 右移 for I=1 to l1.listcount if l1.selected(i) l2.additem(l1.list(i) l1.removeitem(i) endif endfor case this.value=2 &&左移 for I=1 to l2.listcount if l2.selected(i) l1.additem(l1.list(i) l2.removeitem(i) endif endfor endcasecase this.value=3 &&全右移 for i=1 to l1.listcount l2.ad

27、ditem(l1.list(i) endfor l2.clearthisform.refresh case this.value=4 &&全左移 for i=1 to l2.listcount l1.additem(l2.list(i) endforl1.clearendcase5 组合框:一种下拉式的列表框,可以从中选择一项或人工输入一个值,兼有列表框和文本框的功能,但只能显示一列,可通过属性来设置输入还是显示(style-0,2)举例:在列表框中选定教师的系代号,在组合框中显示相应系的教师信息9表格:表格是一种将数据以表格形式表示出来的控件,一个按行和列显示数据的容器对象,

28、表格包括列,列标头,列控件等。最常见的用途:显示一对多表关系中的子表。表格的数据源可以是表,视图,查询。主要的属性:表格属性:Allowheadersizing(表头高度)Allowrowsizing(行高度)Columncount(列的数目)Deletemark(显示删除列)Recordsourcetype(数据源类型)Recordsource(数据源)Scrollbars(滚动条)Setall(某一类控件设置属性) 列控件属性:Controlsource(列控件的数据源)Resizable(列宽度是否调整)Dynamicfontsize(动态调整字体的大小)Dynamicforecolor

29、(动态调整字体的颜色)列标头属性:Alignment(对齐的方式)Caption(列标题)举例:1利用表格的列控件的controlsource属性绑定字段,并利用INIT事件代码改变不及格学生的成绩的字体大小和颜色(两种方法)。This.column3.dynamicfontsize=”iif(cj.cj<60,14,9)”This.column3.dynamicforecolor=”iif(cj.cj<60,rgb(255,0,0),rgb(0,0,255)”This.setall(“dynamicbackcolor”,”iif(mod(recno(),2)=0,rgb(255,

30、0,0),rgb(0,255,0)”,”column”)2 创建一对多表单,利用表格控件的recordsource(type)来绑定数据源补充讲解数据环境中临时关系的建立:(1) 若在数据库中两张表存在永久关系-自动添加到数据环境中(2) 若没有永久关系-在数据环境中创建临时关系(两种情况)(3) 编辑关系:relationexpr,onetmany10页 框:一种用于创建选项卡式对话框的容器类,一个页框可以包含多个页面,但每次只能有一个活动页面。页框定义了页面的总体特征:大小,位置,边框类型,活动页面等;对页面所在的表单使用REFRESH方法时,只刷新当前活动的页面。页框的主要属性:page

31、count:包含的页面数目;tabs:确定页框控件是否有选项卡;tabstyle:指定选项卡大小均等且页框的宽度相同backcolor:页面的背景色caption:选项卡的标题tabstretch:对选项卡的标题太长的显示设置activepage:设置页框中的活动页面举例:(1) 创建选项卡式页框,创建具有多重行的选项卡式页框,非选项卡式页框10计时器:计时器是在应用程序中用来处理复发事件的控件,该控件在设计时可见,运行时不可见,用于后台处理。主要属性:enabled:可以通过该属性在外部事件中启用计时器,或控制记时器的运行。interval:指定计时器控件的timer事件之间的时间间隔(毫秒

32、)timer事件: 经过interval 属性设置的时间间隔后发生事件,该事件是周期性的,需要在该事件中编写代码,来完成特定的功能。说明:对于记时器控件来说,除了需要设置interval等属性,还要编写timer事件的处理代码,即在属性interval所规定的时间间隔内,处理什么复发事件举例:(1)数字时钟thisform.text1.value=time()11 线条和形状线条:用于创建一条水平线条,竖直线条,对角线条;形状:用来创建各种形状图形,如矩形,椭圆,圆;线条的主要属性:borderwidth:线宽(像素表示,08192)bordercolor:线条的颜色 borderstyle:

33、 线型lineslant: 线条方向形状的主要属性:backcolor:指定文本或图形内的背景颜色。backstyle:对象的背景是否是透明的。bordercolor:对象的边框颜色。borderstyle:对象的边框的样式borderwidth:边框的宽度curvature:曲率(099)fillstyle:指定用来填充形状的图案fillcolor:填充图案的颜色specialeffect:指定形状的效果(平面,三维)top:距离表单上端的距离left:距离表单左端的距离举例:利用图形控件画一个圆,单击图形使得图形能够围着矩形移动。for I=360 to 10 step 10this.le

34、ft=Ithis.backcolor=rgb(255-i/10,0,0)=inkey(1)endforfor I=360 to 10 step 10this.top=Ithis.backcolor=rgb(0,255-i/10,0)=inkey(1)endforfor I=10 to 360 step 10this.left=Ithis.backcolor=rgb(0,0,255-i/10)=inkey(1)endforfor I=10 to 360 step 10this.top=Ithis.backcolor=rgb(255-i/10,0,0)=inkey(1)endfor补充:(1) 设

35、置控件的Tab键次序: 指的是在表单上按Tab键时,焦点从一个对象移向另一个对象的次序。(2) 设置访问键ALT+O(3) 创建表单集习题:一、 设计表单(10分)     项目管理器中已经存在表单FA,该表单用来更改用户的密码。根据下列要求修改表单,设计时和运行时的效果分别如图2和图3所示。    1、 将文本框控件txtUserName设置为禁用,并将其与全局内存变量pUserName绑定;    2、 将“老密码”文本框控件txtOldPwd的密码占位符设置为字符“#”

36、;    3、 添加一个“重置”命令按钮(如图3所示),对象名为cmdReset,标题为“重置”;    4、 为“重置”按钮设置Click事件代码,要求清除“新密码”和“新密码重复”相应文本框控件的文本值;    5、 已知在表单的Init事件代码中已定义了全局变量pPassWord,用来存放已登录用户的密码,完善“确定”按钮的Click事件代码(提示:在原代码中的空行处添加一条语句),要求:当老密码与全局变量pPassWord的值相等时,检查“新密码”和“新密码

37、重复”相应文本框控件的文本值是否相等,如果相等,则将“新密码”文本框txtNewPwd1的值赋给全局变量pPassWord。 图2 设计时 图3 运行时二、 设计表单(10分)    项目管理器中已经存在表单FB,该表单用来更改用户的密码。根据下列要求修改表单,设计时和运行时的效果分别如图2和图3所示。    1、 设置表单为模式表单,背景为白色,并在运行是自动居中,    2、 设置“确定”控件按钮为禁用。    3、 添加一个图象控

38、件,并指定显示的图象为Lock.jpg文件所存图象。    4、 完善“重复新密码”文本框控件txtNewB的InterActiveChange事件代码(提示:在原代码中的空行处添加适当的代码),要求:用IF结构语句判断文本框“新密码”和“重复新密码”的值是否一致,如果一致,则启用“确定”命令按钮,否则禁用“确定”命令按钮。5、 编写“确定”命令按钮的相关事件代码,使得单击该按钮时,将“txtNewA”文本框的值赋给给变量pPassWord。  图2 设计时 图3 运行时三、 设计表单(10分)    

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论