《使用表单控》PPT课件.ppt
Page 1,第七章 使用表单控件,7.1 命令按钮7.2 标签7.3 文本框与编辑框7.4 列表框与组合框7.5 微调按钮7.6 复选框与选项按钮组7.7 命令按钮组,7.8 表格7.9 页框与页面7.10 容器7.11 计时器7.12 线条、形状、图像7.13 ActiveX绑定控件7.14 表单高级设计,Page 2,第七章 使用表单控件,控件是面向对象程序设计的基本操作单元。在Visual FoxPro中,控件用在表单中起到获取数据、显示数据、执行命令和美化界面的作用,因此也称作表单控件。本章介绍了各种表单控件的常用属性、事件及方法,并以实例形式详细介绍了这些控件在表单设计中的具体应用。,Page 3,命令按钮:主要用于启动某个事件代码以完成指定的功能。如发出控制命令、释放表单等。命令按钮最常用事件 Click(单击)事件:当用户单击某一命令按钮或显式调用命令按钮的Click事件时,Click事件被触发,其相应的事件代码被执行,从而实现该命令按钮的功能。,7.1 命令按钮,Page 4,7.1 命令按钮,命令按钮的常用属性,Page 5,7.1 命令按钮,命令按钮常用属性使用说明1)Caption属性指定命令按钮的文字标题。可以在Caption属性值中用“字母”将该字母设置为按钮访问键(也称热键)2)命令按钮的标题可以既有文字又有图像,也可以只有图像,图像文件名由Picture属性指定。4)Default属性值为.T.时,与命令按钮单击操作等价的是Enter键或Ctrl+Enter 5)仅当表单的ShowTips属性值为.T.时,命令按钮的ToolTipText属性设置才有效。,Page 6,7.1 命令按钮,例7.1 设计表单计算100到999之间的所有水仙花数,设计界面和运行界面如下:,说明:表单运行时,单击“计算”按钮,在表单上显示100到999之间所有水仙花数,Page 7,7.1 命令按钮,操作步骤:1)创建表单(Form1),在表单中放置两个命令按钮(Command1和Command2)。2)选择“格式”菜单下的命令,设置两个命令按钮大小一致且左对齐。3)设置对象的属性值:,Page 8,7.1 命令按钮,4)代码编写:Command1的Click事件代码:For n=100 To 999 a=int(n/100)&获取 n 的百位数 b=int(n/10)%10&获取 n 的十位数 c=n%10&获取 n 的个位数 if n=a*a*a+b*b*b+c*c*c?n Endif NextCommand2的Click事件代码:Thisform.release5)保存表单为:例7-1.scx,并运行。,Page 9,7.2 标签,标签控件(Label)作为信息的输出载体,用于显示字符型文本信息。,标签常用属性 表一,Page 10,7.2 标签,标签常用属性 表二,Page 11,7.2 标签,说明:1)若Caption属性由表达式(字符型)提供值,应设置属性值为:=,例如:=DTOC(DATE()。2)BackStyle属性值设置为“0透明”时,BackColor属性设置将无效。3)WordWrap属性值和AutoSize属性值均设置为.T.时,可以通过在水平方向压缩标签的宽度,以实现标签控件中的标题文本竖排。,Page 12,7.2 标签,例7.2 创建一个新表单,其包含四个标签控件,要求:表单不带标题栏。Label1、Label2和Label3等三个控件之间要垂直居中对齐,且垂直间距相同,相对于表单水平居中。Label4与Label1是两个大小、标题文本和形状完全一样的标签控件,通过设置不同的前景和错位,使其产生浮雕的效果。,Page 13,7.2 标签,操作步骤:1)创建表单,并按图示向表单添加四个标签控件。,Page 14,2)设置各控件的属性值:,7.2 标签,四个标签控件的AutoSize属性值皆为.T.;BackStyle属性值皆为:0 透明,Page 15,3)选定Label1,选择“格式”菜单中的“水平居中”命令,实现控件在表单上水平居中。选择“格式”菜单中的“置后”命令。4)选中Label1、Label2和Label3从“格式”菜单的“对齐”子菜单中选择“垂直居中对齐”命令。再从“格式”菜单的“垂直间距”子菜单中选择“相同间距”命令。5)代码编写 Form1的Init事件代码:Thisform.Label4.Top=Thisform.Label1.Top+2 Thisform.Label4.Left=Thisform.Label1.Left+26)保存表单文件,并运行。,7.2 标签,Page 16,7.3 文本框与编辑框,文本框(TextBox)文本框是Visual FoxPro很常用的一种控件,通常用于显示、输入和编辑字符型、数值型、日期型、日期时间型和逻辑型等数据。可以与内存变量、数组和数据表的非备注型字段实现数据绑定。文本框控件提供了基本的文字编辑功能,如复制、剪切和粘贴等操作。如果编辑的是日期型或是日期时间型数据,选定整个内容按“+”键或“-”键,可以使日期增1或减1。注意:输入数据时,按回车键即表示输入结束,所以文本框只接受一行数据的输入。,Page 17,7.3 文本框与编辑框,文本框常用属性,Page 18,7.3 文本框与编辑框,文本框常用属性使用说明1)ControlSource属性用于指定与文本框绑定的数据源,其值为数据表的某一字段或内存变量。运行时,文本框首先显示该变量的值,用户对文本框的编辑结果,也被保存到该变量中。2)文本框的数据类型取决于其所存储的数据类型。在设计阶段可以通过设置ControlSource属性;若ControlSource属性值为(无),可以通过Value属性的设置其初值类型,Value默认初值为(无),表示字符型,若设置Value初值为0、或.F.,分别表示数值型、日期型、逻辑型。,Page 19,7.3 文本框与编辑框,3)若Value属性由表达式(字符型)提供值,应设置属性值为:=,例如:=DATE(),=DATETIME()。4)PasswordChar属性用于设置用户输入时所显示的占位字符(如“*”),通常用在口令输入中。5)Format属性用于设置整个文本框的数据格式。该属性值是由格式符组成的一个字符串。,Page 20,格式符的说明,7.3 文本框与编辑框,Page 21,7.3 文本框与编辑框,6)InputMask属性用于指定文本框中每一位数据输入输出的格式。该属性值是由模式符组成一个字符串。,Page 22,7.3 文本框与编辑框,例7.3 设计一个用户登录界面:设计界面如下图(左)所示,利用表STUDENT中的学号和姓名检验其是否为合法用户。运行界面如下图7(右)所示,在两个文本框中分别输入姓名和学号,单击“确定”按钮。若输入正确就显示“欢迎使用”;否则显示“姓名或学号不对,请重新输入!”,Page 23,7.3 文本框与编辑框,操作步骤:1)创建表单,按图示添加二个标签控件、二个文本框、一个命令按钮;并设置各控件的Caption属性值。Text1的Format属性值为:T,Text1的Inputmast属性值为:9999999。2)在表单的数据环境中添加表Student。,Page 24,7.3 文本框与编辑框,3)Command1的Click事件代码:Locate For 姓名=Thisform.Text1.Value;And 学号=Thisform.Text2.Value If Found()Wait 欢迎使用 Windows Else Wait 姓名或学号不对,请重新输入!Windows Endif4)保存表单并运行。,Page 25,7.3 文本框与编辑框,文本框常用事件,Page 26,例7.4 创建表单设计界面如下图所示,要求:在“原串”后的文本框中输入字符。当按下Esc键时,清空该文本框中内容;当按下Enter键时,把“原串”中的内容复制到“目标串”中;按下Shift+A组合键时关闭表单。,操作步骤:1)创建表单,并按图示添加控件和各控件的Caption属性值。,7.3 文本框与编辑框,Page 27,2)编写Text1的KeyPress事件代码:LPARAMETERS nKeyCode,nShiftAltCtrl&系统自带的参数语句Do Case Case nKeyCode=27&Esc码值为27 This.value=&本控件值清空Case nKeyCode=13&Enter码值为13 ThisForm.Text2.value=This.value&实现值复制Case nShiftAltCtrl=1 and(nKeyCode=65 Or nKeyCode=97)&当按下Shift和字母A或a时 Thisform.Release&关闭表单EndCase,7.3 文本框与编辑框,Page 28,编辑框 编辑框是一个字处理器,常用于编辑具有多行文本的数据(如数据表的备注型字段),编辑框允许自动换行并能使用方向键、PageUp、PageDown键和垂直滚动条浏览文本,编辑框提供文本的选择、复制、剪切和粘贴操作。,7.3 文本框与编辑框,Page 29,7.3 文本框与编辑框,编辑框常用属性 表一,Page 30,7.3 文本框与编辑框,编辑框常用属性 表二,Page 31,7.3 文本框与编辑框,例7.5 要求表单实现的功能:在文本框中输入文本,单击Command1(替换)按钮,将用文本框中的文字替换编辑框中被选定文本内容,单击Command2(还原)编辑框还原为原来内容。要求编辑框(Edit1)与内存变量x实现数据绑定。设计界面如下图报示。,Page 32,操作步骤:1)创建表单,按图示在表单中添加控件,并设置相关控件的Caption属性值。Text1的Format属性值为:T Edit1的ControlSource属性值为:x2)代码编写 Form1的Load事件代码:Public x,y 识别出相应的对象,并抽象出为解决问题的所需要的对象属性和对象方法。y=x&保存变量值到y,用于数据还原,7.3 文本框与编辑框,Page 33,7.3 文本框与编辑框,命令按钮Command1的Click事件代码:ThisForm.Edit1.SelText=ThisForm.Text1.Value&用文本框内容置换编辑框中选定的文本 命令按钮Command2的Click事件代码:ThisForm.Edit1.Value=y&将y的值写回到编辑框中,Page 34,7.4 列表框与组合框,列表框(ListBox)列表框的功能是提供了一组列表项,用户可以从中选择一个或多个列表项。通常,列表框只显示这组列表项中的部分列表项,用户可以通过滚动条浏览其他列表项,它是Windows应用程序的对话框中最常用的控件之一。,Page 35,列表框常用属性 表一,7.4 列表框与组合框,Page 36,列表框常用属性 表二,7.4 列表框与组合框,Page 37,7.4 列表框与组合框,说明:1)RowSource属性与RowSourceType属性的对应关系,Page 38,7.4 列表框与组合框,续上表,Page 39,7.4 列表框与组合框,2)DipslayValue属性与Value属性的区别 DipslayValue的值是选定列表项中第1 列的内容,而Value的值与BountColumn属性值有关。3)ControlSource属性:指定一个字段或一个变量用以保存用户从列表中选择的结果。例如:ControlSource的值为x,则x的值与列表框的Value值一致。注意:x应为公有变量,并初始化为空串。4)List属性设计时不可用,运行时可读写。例如:访问列表框中第3 行第1列上的数据项.List(3,1),Page 40,7.4 列表框与组合框,5)ListIndex属性设计时不可用,运行时可读写。值范围为:0 ListCount(列表项数)。当值为0时表示列表框中没有列表项被选中。例如:要求运行时把第3 行列表项设置为选定项。.ListIndex=3 等价的语句:.Selected(3)=.T.6)MultiSelect属性值为.T.时,允许用户利用Shift+单击或Ctrl+单击,来选定列表框中连续或不连续的多重列表项。,Page 41,7.4 列表框与组合框,列表框生成器 列表框生成器卡:方便用户对列表框常用属性的设置,包含了四个选项卡:1)“列表项”选项卡:主要用于设置列表框的数据源类型及数据源。2)“样式”选项卡:主要用于设置列表框的样式、行数和是否递增搜索等。3)“布局”选项卡:主要用于控制列表框的行宽和显示方式。4)“值”选项卡:主要用于指定返回值的列和设置存储返回值的字段名。,Page 42,7.4 列表框与组合框,AddItem方法仅当RowSourceType为0时可用。格式:.AddItem(cItem,nIndex,nColumn),列表框常用方法,Page 43,7.4 列表框与组合框,当运行表单时,要求列表框选取某一列表项,完成特定功能。通常可以在When或InteractiveChange事件中编写相关代码。,列表框常用事件,Page 44,例7.6 列表框之间的列表项的移动,要求:1)List1的列表项是数据表名。2)当List1某一列表项(表名)被选中之后,List2中的列表项显示该表的字段名。3)要求在List2中选定一个或多个列表项后,单击(Command1)按钮,将把List2中选定的列表项移动到List3中。4)单击(Command2)按钮,将把List2中所有列表项移动到List3中。5)(Command3)和(Command4)两个按钮的功能与前两个命令按钮相反,是把List3中的列表项移动到List2。,7.4 列表框与组合框,Page 45,操作步骤:1)根据题意,创建表单,并按图示在表单上放置相关控件。,7.4 列表框与组合框,Page 46,2)相关控件的属性设置,Command1、Command2、Command3和Command4的Picture属性分别来源VFP98FFCgraphics文件夹下的ADD.bmp、ADDALL.bmp、REMOVE.bmp和 REMALL.bmp文件,7.4 列表框与组合框,Page 47,3)代码编写:Form1的Init事件代码:ThisForm.List1.ListIndex=1&表单运行时,List1中第一行处于被选中状态List1的InteractiveChenge事件代码:ThisForm.List2.RowSource=This.Value&List1选中列表项作为List2数据源 ThisForm.List3.Clear&清除List3中的所有列表项 ThisForm.Refresh,7.4 列表框与组合框,Page 48,Command1的Click事件代码:*把List2中选中的列表项添加到List3中 n=ThisForm.List2.ListCount For i=1 To n If ThisForm.List2.Selected(i)Then ThisForm.List3.AddItem(ThisForm.List2.List(i)EndIf EndFor*自后而前地删除List2中被选中的列表项 For i=n To 1 Step 1 If ThisForm.List2.Selected(i)Then ThisForm.List2.RemoveItem(i)EndIf EndFor ThisForm.Refresh,7.4 列表框与组合框,Page 49,Command2的Click事件代码:n=ThisForm.List2.ListCount*把List2中的各列表项依次添加到List3中 For i=1 to n ThisForm.List3.AddItem(ThisForm.List2.List(i)EndFor*把List2中的各列表项删除 For i=n To 1 Step 1 ThisForm.List2.RemoveItem(i)EndFor ThisForm.Refresh Command3和Command4的Click事件代码与Command1和Command2的Click事件代码类似。,7.4 列表框与组合框,Page 50,组合框(ComboBox)组合框控件相当于一个文本框和一个列表框的组成体,外观上只有一个列表项是可见的,运行时用户可以单击组合框右边的下箭号(“”)按钮打开列表项列表,然后选取相关的列表项,被选取的列表项就显示在组合框的文本栏中。,7.4 列表框与组合框,Page 51,7.4 列表框与组合框,组合框有两种形式:下拉组合框和下拉列表框,由Style的属性值决定:0(默认值)下拉组合框,可以从列表中选取列表项,也可以在组合框中输入列表项内容;2 下拉列表框,只能从列表中选取列表项,但不能在组合框中输入列表项内容。组合框的属性、方法和事件与列表框类似,但组合框没有MultiSelect属性。,Page 52,7.4 列表框与组合框,例7.7 查询各专业学生选修课程成绩信息要求:在下拉列表框中选取一个专业名称,根据Student表和Grade表中的数据,在列表框中显示该专业学生的学号、姓名和他们各自所选修的课程号及其成绩。并且在标签控件(Label7)上显示该专业学生选课的人次数,如图示中“社会学”专业学生选修课程为4人次。单击“退出”按钮将关闭所有打开的数据表并关闭表单。,Page 53,7.4 列表框与组合框,运行界面如图所示,Label7,Page 54,操作步骤:1)创建表单,并按图示放置相关控件。2)按图示设置Form1、Label1、Label6的Caption属性值,Label7的Caption属性值设置为:0设计界面如下图:,7.4 列表框与组合框,Page 55,3)设置组合框(Combo1)和列表框(List1)的属性值,7.4 列表框与组合框,Page 56,主要代码编写:Combo1的InteractiveChange事件代码:ch=AllTrim(ThisForm.Combo1.Value)ThisForm.list1.RowSource=;Select Student.学号,姓名,课程号,成绩;From student;Inner Join grade;On Student.学号=Grade.学号;Where Student.专业=ch;Order By Grade.学号;Into Cursor temp Select temp x=Reccount()ThisForm.Label7.Caption=Str(x,3)ThisForm.Refresh,7.4 列表框与组合框,Page 57,7.5 微调控件,微调控件(Spinner)微调控件是一种输入控件,主要是用来接受给定范围内的数值输入。它可以接收用户键盘输入的数值,也可以使用微调控件中的向上、向下箭头对微调控件中的值进行增减。,Page 58,7.5 微调控件,微调控件常用属性,Page 59,7.5 微调控件,说明:1)微调控件默认显示的是整数。若要按指定格式输入,那么可以使用输入掩码来限定。例如,要使用键盘在微调控件中输入12.34,那么InputMask属性值设置为:99.99。2)如果要求单击向上、向下箭头时增减幅度含有小数位,如Increment属性值为:1.50。那么,Value属性值也要相应设置为:0.00(当Value属性值为0时,只显示整数)。,Page 60,7.5 微调控件,微调控件常用事件,Page 61,7.5 微调控件,例7.8 利用文本框和微调控件调整日期,设计界面和运行界面 如下图。,运行表单时单击微调上、下箭头,实现文本框中的日期增1、减1。,Page 62,7.5 微调控件,代码编写 Spinner1的UpClick事件代码:ThisForm.Text1.Value=ThisForm.Text1.Value+1 Spinner1的DownClick事件代码:ThisForm.Text1.Value=ThisForm.Text1.Value-1 Command1的Click事件代码:ThisForm.Release,控件的属性设置,Page 63,7.6 复选框与选项按钮组,复选框控件(CheckBox)复选框是在两个状态间进行选择的控件,即只有选中与不选中,常用于表示一个逻辑型表达式或字段的值。,Page 64,7.6 复选框与选项按钮组,说明:1)复选框通常与逻辑型变量或逻辑型字段进行数据绑定。2)Value属性的取值:复选框未选中时,值为0 或.F.复选框被选中时,值为1 或.T.若设置为2 或.Null.时,复选框为灰色表示不确定 Value的值是数值型还是逻辑型的,取决于ControlSource 的类型,若ControlSource为(无),则取决于Value初值的类型,Page 65,7.6 复选框与选项按钮组,例7.9 设计一个选课表单,设计界面如下图:,要求:1)在组合框(Combo1)中选择学号,在5个复选框选中相应的课程。2)单击“确定”按钮,将把学生选课的信息保存到数据表:选课.dbf。3)单击“退出”按钮,将关闭所有打开的数据表并关闭表单。,Page 66,操作步骤:1)按题意创建数据表:选课.dbf:学号(C,7)和课程号(C,5)。2)创建表单,按图示放置各个控件,并设置各控件的Caption属性值。3)把Student表、Course表和选课表等三个数据表依次表单的数据环境中。4)组合框的属性值:,7.6 复选框与选项按钮组,Page 67,代码编写:Command1的Click事件代码:For i=1 to 5 s=Str(i,1)If ThisForm.Check 课程号 with Course.课程号 Endif EndFor,7.6 复选框与选项按钮组,Page 68,7.6 复选框与选项按钮组,选项按钮组(OptionGroup)选项按钮组是一种容器类控件,其中包容了若干个选项按钮。其作用:在同一个选项按钮组中,用户能且只能选中其中的某一个按钮,在选中某一个按钮的同时释放先前的选择。,Page 69,7.6 复选框与选项按钮组,选项按钮组常用属性,注意:选项按钮组是一个容器类控件,该容器只能包容选项按钮控件。,Page 70,7.6 复选框与选项按钮组,说明:1)Value属性值有数值型和字符型两种,取决于Value属性的初值类型。若初值为数值型(默认值为1),那么,Value属性值为当前被选中按钮的序号,0表示不选择任何按钮。若初值为字符型(例如一个空串),那么,Value属性值为当前被选中按钮的Caption属性值。2)ControlSource属性指定的数据源用来存放选项按钮组的当前值即Value属性值。选项按钮组可以与一个内存变量或字段变量实现数据绑定。,Page 71,7.6 复选框与选项按钮组,说明:1)选项按钮组控件没有Caption属性,选项按钮组中的选项按钮才具有Caption属性。2)选项按钮的Value属性值只有数值型(1和0)与逻辑型(.T.和.F.)两种,用于表示选项按钮是否被选中。,选项按钮的常用属性,Page 72,7.6 复选框与选项按钮组,说明:1)选项按钮组和其所包容的选项按钮都有Click事件。单击选项按钮组中的某选项按钮时,若该选项按钮没有对Click事件编写代码,它触发的将是选项按钮组的Click事件。2)若单击选项按钮组的空白处,选项按钮组的Click事件被触发。,选项按钮组常用事件,Page 73,7.6 复选框与选项按钮组,例7.10 设计表单为数据表添加新记录,设计界面:,运行时单击“添加剂新记录”按钮时即可添加新记录,Page 74,操作步骤:首先,打开数据表Student.dbf,并利用表设计器把Student表的“学号”字段的默认值设置为:”0000000”,随后关闭Student表。1)创建表单,把Student表添加到数据环境设计器。2)把数据环境设计器中Student表里的字段:学号、姓名、出生日期、入学总分、定向否和简历依次拖到表单的相应位置。3)在表单中添加2个标签控件(lbl性别和lbl专业)、1个选项按钮组(opt性别)和3个命令按钮(cmdApp、cmdCancel和cmdExit)。按图示设置各控件的标题。4)再在表单中添加下拉列表框(cmb专业)。,7.6 复选框与选项按钮组,Page 75,设置相关控件属性值,7.6 复选框与选项按钮组,Page 76,代码编写Form1的Init事件代码:ThisForm.cmb专业.RowSource=社会学,汉语言文学,工商管理,经济学,英语,日语,计算机应用,软件,系统工程 cmdApp的Click事件代码:Append Blank ThisForm.Refresh cmdCancel的Click事件代码:Go Bottom Delete Pack,7.6 复选框与选项按钮组,Page 77,7.7 命令按钮组,命令按钮组(CommandGroup)命令按钮组是包含若干个命令按钮的容器类控件,是Windows中最常用的控件之一。当表单中需要多个命令按钮时,将一系列功能类似的命令按钮装载在一个容器命令按钮组,以便对命令按钮进行统一的管理和使用。与选项按钮组控件类似,命令按钮组与其所包容的命令按钮都有各自独立的属性、方法和事件。命令按钮组最常用事件是Click事件。,Page 78,7.7 命令按钮组,说明:1)Value属性的类型、取值与选项按钮组的Value属性完全相同。2)Buttons属性代表的数组在创建命令按钮组时由系统自动创建,该数组保存命令按钮组中各命令按钮的索引号。,命令按钮组常用属性,Page 79,7.7 命令按钮组,例7.11 设计表单实现对Student表记录内容的浏览和修改要求实现:1)每页显示一条记录内容。2)前4个命令按钮的功能是实现记录指针的移动,并要求:当记录指针指向首记录或文件首时,第1、2个命令按钮变为不可用,否则可用。当记录指针指向末记录或文件尾时,第3、4个命令按钮变为不可用,否则可用。鼠标指向命令按钮时,它们显示的提示信息分别为:“首记录”、“前一记录”、“下一记录”和“末记录”。3)最后一个命令按钮用于确认退出,并关闭表单。,Page 80,7.7 命令按钮组,设计界面,Page 81,7.7 命令按钮组,操作步骤:1)创建表单,打开数据环境设计器,并添加STUDENT表。2)在数据环境设计器中,依次把STUDENT表的各相关字段拖动到表单设计器中,表单设计器将自动创建相应的控件。3)在表单中添加一个命令按钮组内含5个命令按钮,并把它们的Name属性值分别设置为:CmdTop、CmdPre、CmdNxt、CmdBtm和CmdExit。然后按下表设置5个命令按钮和表单的属性。,Page 82,7.7 命令按钮组,Page 83,7.7 命令按钮组,续前表,Page 84,代码编写:CmdTop的Click事件代码:Go Top With ThisForm.CommandGroup1.CmdTop.Enabled=.F.CmdPre.Enabled=.F.CmdNxt.Enabled=.T.CmdBtm.Enabled=.T.EndWith ThisForm.Refresh,7.7 命令按钮组,Page 85,CmdPre的Click事件代码:With ThisForm.CommandGroup1.CmdNxt.Enabled=.T.CmdBtm.Enabled=.T.If Bof()MessageBox(已到文件首,48,移动记录).CmdTop.Enabled=.F.CmdPre.Enabled=.F.Else Skip-1 EndIf EndWith ThisForm.Refresh,7.7 命令按钮组,Page 86,CmdNxt的Click事件代码和CmdBtm的Click事件代码与前面二个类似。CmdExit的Click事件代码:If MessageBox(确定退出!,4+32,确认框)=6 ThisForm.Release Endif,7.7 命令按钮组,Page 87,7.8 表格,表格(Grid)是一个容器类控件,其外观类似数据表的Browse窗口,按照行和列的二维表格形式显示数据,可以同时操作和显示多行数据。表格控件的组成 一个表格控件(Grid)是由若干个列对象(Column)组成;每个列对象是由标头对象(Header)和若干个文本框、编辑框、列表框、组合框、复选框、微调按钮等控件组成。表格对象、列对象、标头对象和列对象所包容的控件都有自己的属性、方法和事件。,Page 88,表格常用属性 表一,7.8 表格,Page 89,表格常用属性 表二,7.8 表格,Page 90,7.8 表格,说明 1)RecordSourceType属性与RecordSource属性关系,Page 91,7.8 表格,当RecordSourceType属性值为别名时,相应的表要添加到表单的数据环境中。当表格控件要求数据来源于多个表时,RecordSourceType属性值要设置为3或4,相应地RecordSource的属性值为查询文件名或SQL语句。2)ColumnCount属性用于设定表格控件中所含列对象的数目。其默认值为-1,表示用足够的列来显示数据源中的所有字段。,Page 92,7.8 表格,列的常用属性,Page 93,7.8 表格,为列添加新的控件操作步骤如下:右击表格对象,选择“编辑”。将控件工具栏中的控件拖到指定列(此时,新添加的控件并没有显示)。在“属性”窗口,把CurrentControl属性值设置为指定控件(指定控件显示为图标)。,Page 94,7.8 表格,标头的常用属性,Page 95,7.8 表格,表单设计初始界面(左)利用表格生成器设计后界面(中)运行界面(右),例7.12 设计表单,实现按学号查询学生的各科成绩。,Page 96,7.8 表格,例7.13 设计表单,利用Student表查询各专业学生信息,要求:当在下拉列表框中选择指定专业后,单击“确定”按钮,在表格中显示该专业的学生相关信息。当单击“退出”按钮,将关闭所有的表文件并退出表单。操作步骤:1)创建表单,按图示添加1个标签控件(Label1)、1个下拉列表框(Combo1)、1个表格对象(Grid1)和2个命令按钮(command1和command2)。,Page 97,7.8 表格,运行界面:,Page 98,2)设置各个控件的属性,7.8 表格,Page 99,代码编写:Command1的Click事件代码:zy=alltrim(ThisFbo1.value)Thisform.Grid1.RecordSource=;Select学号,姓名,出生日期,定向否,入学总分;From Student;Where 专业=zy;Into Cursor lsb Command2的Click事件代码:Close dbf all ThisForm.Release,7.8 表格,Page 100,7.9 页框与页面,页框(PageFrame)页框是包容页面的容器类对象,一个页框可以包容若干个页面对象,每个页面在页框中以选项卡形式出现。页面(Page)页面也是一个容器类对象,页面上可存在若干个控件。在任何时候只有一个活动页面,且只有活动页面的对象在表单上是可见的。利用页框、页面可以构造Windows应用程序中常见的选项卡对话框。,Page 101,页框常用属性,7.9 页框与页面,Page 102,说明:Pages属性代表的数组在创建页框时由系统自动建立,用于保存各个页面在页框中的索引号。用户可以利用该数组引用页框中的各页面,例如:Pages(1)、Pages(2)分别表示页框中第1页面、第2页面。,7.9 页框与页面,Page 103,页面常用属性,7.9 页框与页面,Page 104,例7.14 设计表单,实现按学号查询学生的相关信息。运行界面如下:,运行时用户在表单下方文本框中输入一个学号,单击“查找”按钮,在页框的两个页面中分别显示相关信息,7.9 页框与页面,Page 105,操作步骤:1)创建表单,添加一个页框控件(PageFrame1)、一个标签控件(Label1)、一个文本框(Text1)、和两个命令按钮(Command1、Command2)。2)打开数据环境设计器,添加Student表。3)在页框选中第1个页面,然后从数据环境中将Student表的学号、姓名、专业和定向否等4 个字段拖入该页中(实现数据绑定)。4)在页框第2个页面(Page2)中添加一个表格控件。,7.9 页框与页面,Page 106,5)各控件的属性设置,7.9 页框与页面,Page 107,代码编写:Form1的Activate事件代码:Thisform.Text1.SetFocus&当表单被激活时,将焦点置于文本框中 PageFrame1的Init事件代码:Select Student Go bottom Skip 上述代码的功能,是将Student表的指针指向文件末,使初始运行表单时,第1个页面上没有信息显示。Command2的Click事件代码:Close Dbf All Thisform.Release,7.9 页框与页面,Page 108,Command1的Click事件代码:num=Alltrim(Thisform.Text1.Value)Locate For 学号=num If!Eof()Thisform.PageFrame1.Page1.Refresh Thisform.PageFrame1.Page2.Grid1.RecordSource=;Select Grade.课程号,课程名,成绩;From Grade,Course;Where Grade.课程号=Course.课程号;And Grade.学号=num Into Cursor lsb Else MessageBox(数据出错,请重新输入!)Thisform.Text1.Value=Endif Thisform.Text1.SetFocus,7.9 页框与页面,Page 109,7.10 容器,容器(Container)容器控件能够根据需要包容除表单集和表单以外的所有类型的对象。在表单设计器中,容器可以使包容其中的对象作为一个整体来处理。要在容器对象中添加对象首先必须激活容器对象,然后才可以往容器对象中添加控件。注意:不能使用鼠标拖动的方法把表单中已存在的控件拖动到容器对象中。,Page 110,7.11 计时器,计时器(Timer)计时器控件可以按给定的时间间隔自动地触发事件,因此可以自动定时执行一些特定的任务。计时器控件设计时是可见的,运行时不可见,它是属于后台执行的一种控件。,Page 111,7.11 计时器,说明:InterVal属性取值范围是02147483647(596.5小时,24.85天)。InterVal属性只能决定Timer事件发生的频率,而不能决定Timer事件代码执行的时间长短,故间隔的精度要根据需要来设定。,计时器的常用属性,Page 112,7.11 计时器,例7.15 设计一个计时器,设计界面如下:,Page 113,7.11 计时器,说明:1)运行时,单击“开始计时”按钮,文本框(Text1)先清零,然后开始计数;“开始计时”按钮变为无效,“暂停”和“停止”按钮变为有效。2)单击“暂停”按钮,系统停止计时,并且该按钮标题改为“继续”。3)单击“继续”按钮,系统继续计时,并且该按钮标题改为“暂停”。4)单击“停止”按钮,系统停止计时,“暂停”按钮变为无效,并把所用时间转换为“时分秒