第八章表单设计与应用优秀课件.ppt
第八章表单设计与应用第1页,本讲稿共84页本本 章章 要要 点点 面向对象的概念面向对象的概念 建立表单建立表单管理表单管理表单 运行表单运行表单常用表单常用表单控件控件*表单内可以包含命令按钮、文本框、表单内可以包含命令按钮、文本框、列表框等各种界面元素。列表框等各种界面元素。第2页,本讲稿共84页 8.1 面向对象的概念面向对象的概念8.1.1对象(Object)客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念。从编程的角度来看,对象是一种将数据和操作过程结合在一起的数据结构,或者是一种具有属性(数据)和方法(过程和函数)的集合体。事实上程序中的对象就是对客观世界中对象的一种抽象描述如:一部电话、一名学生、一个表单、一个命令按钮都可作为对象。每个对象都有一定的状态如电话颜色是红色的,每个对象也有自己的行为,如学生参加考试。(1)对象属性:属性用来表示对象的状态。(2)对象方法:对象方法是描述对象行为的过程。第3页,本讲稿共84页8.1.2类(CLASS)类和对象关系密切,但不相同。类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法例:可为学生建立一个类,在“学生”类的定义中,需要描述的属性可能包括“学号”、“姓名”等,需要描述的方法可能有“考试”、“毕业”等,基于“学生”类,我们可以生成任何一个学生对象,对生成的每个学生对象,都可以为其设置响应的属性值。8.1.3子类与继承在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。此外,可以为新类添加新的方法和属性。我们把新类称为现有类的子类,而把现有类称为新类的父类。一个子类的成员一般包括:(1)从其父类继承的属性和方法。(2)由子类自己定义的属性和方法。第4页,本讲稿共84页VisualFoxProVisualFoxPro基类基类是系统本身内含的,并不存是系统本身内含的,并不存放在某个类库中。用户可以基于基类生成所需要的对放在某个类库中。用户可以基于基类生成所需要的对象,也可以扩展基类创建自己的子类象,也可以扩展基类创建自己的子类 在在程程序序设设计计中中,可可以以使使用用CREATEOBJECTCREATEOBJECT函函数数来来直直接生成基于某个类的对象。该函数的格式如下:接生成基于某个类的对象。该函数的格式如下:CREATECREATEOBJECTOBJECT(,1,2,)函数基于指定的类生成一个对象,并返回对象的函数基于指定的类生成一个对象,并返回对象的引用引用 8.2VisualFoxPro基类第5页,本讲稿共84页VisualFoxpro基类列表类名含义类名含义ActiveDoc活动文档Label标签CheckBox复选框Line线条Column(表格)列Listbox列表框ComboBox组合框OlecontrolOLE容器控件CommandButton命令按钮OleboundcontrolOLE绑定控件CommandGroup命令按钮组OptionButton选项按钮Container容器Optiongroup选项按钮组Contorl控件Page页Custom定制PageFrame页框EditBox编辑框ProjectHook项目挂钩Form表单Separator分隔符FormSet表单集Shape图形Grid表格Spinner微调控件Header(列)标头TextBox文本框HyperLink超级链接Timer定时器Image图象ToolBar工具栏第6页,本讲稿共84页对象属性访问以及对象方法调用的基本格式如下:对象属性访问以及对象方法调用的基本格式如下:.(参数列表参数列表)【例【例7-17-1】基于】基于VisualFoxProVisualFoxPro的的FORMFORM类生成一个对象,然类生成一个对象,然后访问该对象的一些属性和方法后访问该对象的一些属性和方法。Oform=CREATEOBJECT(Form)&Oform=CREATEOBJECT(Form)&生成一个空白表单生成一个空白表单Oform.showOform.show&显示表单显示表单Oform.caption=”Oform.caption=”演示演示”&”&修改表单的标题修改表单的标题?”这这是是一一个个生生成成对对象象的的演演示示程程序序”&在在表表单单上上输输出出字字符符串串Oform.releaseOform.release第7页,本讲稿共84页8.1.5容器与控件VisualFoxPro中的类一般可分为两种类型:容器类和控件类。相应地,可分别生成容器(对象)和控件(对象)。容器可以被认为是一种特殊的控件,它能包容其他的控件或容器控件是一个可以以图形化的方式显示出来,并能与用户进行交互的对象,控件类不能包含其它对象(1)绝对引用:从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用(2)相对引用:从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用使用相对引用常用到表7-2所列属性或关键字第8页,本讲稿共84页【例例】如如果果Form1Form1中中有有一一个个命命令令按按钮钮组组commandgroup1commandgroup1,该该命命令令按按钮钮组组有有两两个个命命令令按按钮钮:command1command1和和command2command2,label1label1是是表表单单form1form1上上的的一一个个标标签签控控件。件。如如果果要要在在命命令令按按钮钮command1command1的的事事件件(如如单单击击事事件件)代代码码中中修修改改该该按按钮钮的的标标题题可可用用下下列命令:列命令:this.caption=”this.caption=”确定确定”如果要在命令按钮如果要在命令按钮command1command1的事件代码中修改命令按钮的事件代码中修改命令按钮command2command2的标题可用下列命令:的标题可用下列命令:thisform.Cmand2.caption=thisform.Cmand2.caption=取消取消 或者或者mand2.caption=mand2.caption=取消取消 但不能写成下列命令:但不能写成下列命令:mand2.caption=mand2.caption=取消取消 如果要在命令按钮如果要在命令按钮command1command1的事件代码中修改表单的标题可用下列命令:的事件代码中修改表单的标题可用下列命令:This.Parent.parent.Caption=”This.Parent.parent.Caption=”测试窗口测试窗口”或者或者thisform.caption=”thisform.caption=”测试窗口测试窗口”第9页,本讲稿共84页表表7-27-2表7-2属性或关键字引用Parent当前对象的直接容器对象This当前对象ThisForm当前对象所在的表单ThisFormSet当前对象所在的表单集第10页,本讲稿共84页8.1.6事件事件是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应与方法集可以无限扩展不同,事件集是固定的,用户不能定义新的事件第11页,本讲稿共84页VisualFoxPro中常用事件有:Load:当表单或表单集被加载到内存中时发生的事件。Unload:从内存中释放表单或表单集时发生的事件。Init:创建对象时发生的事件。Destroy:从内存中释放对象时发生的事件。Click:鼠标左键单击击对象时发生的事件。Dblclick:鼠标左键双击对象时发生的事件。Rightclick:鼠标右键单击对象时发生的事件。GotFocus:对象接收到焦点时发生的事件。LostFocus:对象失去焦点时发生的事件。KeyPress:当用户按下或释放键时发生的事件。InteractiveChange:以交互方式改变对象的值时发生的事件。ProgrammaticChange:以编程方式改变对象的值时发生的事件。第12页,本讲稿共84页 8.2 建立表单 表单(Form)是VisualFoxPro提供的用于建立应用程序界面的最主要的工具之一。表单相当于WINDOWS应用程序的窗口表单可以属于某个项目,也可以游离于任何项目之外,它是一个特殊的磁盘文件,其扩展名为.scx。在项目管理器中创建的表单自动隶属于该项目。创建表单一般有两种途径:使用表单向导创建简易的数据表单;使用表单设计器创建或修改任何形式的表单。第13页,本讲稿共84页8.2.1使用表单向导启动表单向导有以下四种途径:(1)打开“项目管理器”,选择“文档”选项卡,从中选择“表单”。然后单击“新建”按钮。在弹出的“新建表单”对话框中单击“表单向导”按钮。(2)在系统菜单中选择【文件】|【新建】命令,或者单击工具栏上的“新建”按钮,打开“新建”对话框,在文件类型栏中选择“表单”。然后单击“向导”按钮。(3)在系统菜单中选择【工具】|【向导】|【表单】命令。(4)直接单击常用工具栏上的“表单向导”图标按钮。按步骤依照“表单向导”完成一对多表表单的设计第14页,本讲稿共84页8.2.2使用表单设计器启动表单设计器有多种方法:菜单方法:若是新建表单,在系统菜单中选择【文件】|【新建】,在文件类型对话框中选择“表单”,单击“新建文件”按钮;若是修改表单,则单击【文件】|【打开】,在打开对话框中选择要修改的表单文件名,单击“打开”按钮。命令方法:在COMMAND窗口输入如下命令:CREATEFORM&创建新的表单或MODIFYFORM&打开一个已有的表单在项目管理器中,先选择文档标签,然后选择表单,单击新建按钮。若是修改表单,选择要修改的表单,单击“修改”按钮。第15页,本讲稿共84页表单设计器环境介绍(1)设计器窗口“表单设计器”窗口内包含正在设计的表单。用户可在表单窗口中可视化地添加和修改控件、改变控件布局,表单窗口只能在“表单设计器”窗口内移动。以新建方式启动表单设计器时,系统将默认为用户创建一个空白表单,如图左侧部分。第16页,本讲稿共84页(2 2)属性窗口)属性窗口设设计计表表单单的的绝绝大大多多数数工工作作都都是是在在属属性性窗窗口口中中完完成成的的,因因此此用用户户必必须须熟熟悉悉属属性性窗窗口口的的用用法法。如如果果在在表表单单设设计计器器中中没没有有出出现现属属性性窗窗口口,可可在在系系统统菜菜单单中中单单击击【显显示示】|【属性】,属性窗口如图所示。属性】,属性窗口如图所示。第17页,本讲稿共84页(3 3)表单控件工具栏)表单控件工具栏 设计表单的主要任务就是利设计表单的主要任务就是利用用“表单控件表单控件”设计交互式用户设计交互式用户界面。界面。“表单控件表单控件”工具栏是表工具栏是表单设计的主要工具。默认包含单设计的主要工具。默认包含2121个控件、个控件、4 4个辅助按钮,如图所示个辅助按钮,如图所示第18页,本讲稿共84页(4 4)表单设计器工具栏)表单设计器工具栏 打打开开“表表单单设设计计器器”时时,主主窗窗口口中中会会自自动动出出现现“表表单单设设计计器器”工工具具栏,如图栏,如图7-107-10所示所示 第19页,本讲稿共84页8.2.3数据环境1打开数据环境设计器打开数据环境设计器表单设计器环境下,单击“表单设计器”工具栏上的“数据环境”按钮,或选择【显示】|【数据环境】命令,即可打开“数据环境设计器”窗口,此时,系统菜单栏上将出现“数据环境”菜单。2数据环境的常用属性数据环境的常用属性常 用 的 两 个 数 据 环 境 属 性 是 AutoOpenTables和AutoCloseTables第20页,本讲稿共84页3 3向数据环境添加表或视图在数据环境设计器环境下,按下列向数据环境添加表或视图在数据环境设计器环境下,按下列方法向数据环境添加表或视图:方法向数据环境添加表或视图:在在系系统统菜菜单单中中选选择择【数数据据环环境境】|【添添加加】命命令令,或或右右键键单单击击“数数据据环环境境设设计计器器窗窗口口”,然然后后在在弹弹出出的的快快捷捷菜菜单单中中选选择择【添添加加】命命令令,打打开开“添添加加表表或或视视图图”对对话话框框,如如图图所所示示。如如果果数数据据环环境境原原来来是是空空的的,那那么么在在打开数据环境设计器时,该对话框就会自动出现。打开数据环境设计器时,该对话框就会自动出现。选择所需表,单击“添加”第21页,本讲稿共84页4从数据环境中移去表或视图从数据环境中移去表或视图在“数据环境设计器”窗口中,选择要移去的表或视图,在系统菜单中选择【数据环境】|【移去】命令。也可以用鼠标右键单击要移去的表或视图,然后在弹出的快捷菜单中选择【移去】命令。5在数据环境中设置关系在数据环境中设置关系设置关系的方法为:将主表的某个字段(作为关联表达式)拖曳到子表的相匹配的索引标记上既可。如果子表上没有与主表字段相匹配的索引,也可以将主表字段拖动到子表的某个字段上,这时应根据系统提示确认创建索引第22页,本讲稿共84页常用的关系属性有:RelationalExpr:用于指定基于主表的关联表达式。ParentAlias:用于指明主表的别名。ChildAlias:用于指明子表的别名。ChildOrder:用于指定与关联表达式相匹配的索引。OneToMany:用于指明关系是否为一对多关系,该属性默认为“.F.”,如果关系为“一对多关系”,该属性一定要设置为“.T.”。第23页,本讲稿共84页8.2.4快速表单调用表单生成器的方法有以下三种:(1)在系统菜单中选择【表单】|【快速表单】命令。(2)单击“表单设计器”工具栏中的“表单生成器”按钮。(3)右击表单窗口,然后在弹出的快捷菜单中选择“生成器”命令。第24页,本讲稿共84页采用上面任意一种方法后,系统都会打开“表单生成器”对话框,如图所示。选择所需字段,加到“选择字段列表中”第25页,本讲稿共84页8.3管理表单1表单常用属性属性描述默认值AlwaysOnTop指定表单是否总是位于其它打开窗口之上.F.AutoCenter居中显示.F.BackColor指定表单窗口的背景颜色255,255,255BorderStyle指定表单边框的风格。3Caption显示于表单标题栏上的文本Form1Closable决定表单的右上角的关闭按钮是否有效.T.DataSession指定表单中的表是在全局能访问的工作区打开(设置值为1)还是在表单自己的工作区打开(设置值为2)1MaxButton确定表单右上角是否有最大化按钮.T.MixButton确定表单右上角是否有最小化按钮.T.Movable确定表单是否能移动.T.Scrollbars指定表单的滚动条类型。可取值为:0(无),1(水平)2(垂直)3(既水平又垂直)0WindowState指定表单的状态:0(正常)1(最小化),2(最大化)0WindowType指定表单是模式表单(设置值为1)还是非模式表单(设置值为0)。在一个应用程序中,如果运行了一个模式表单,那么在关闭该表单之前不能访问应用程序中的其他表单0第26页,本讲稿共84页2表单常用方法表单常用方法(1)Relase方法:将表单从内存中释放。比如表单有一个命令按钮,如果希望单击该命令按钮时关闭表单,就可以在该命令按钮的Click事件中包含如下代码:ThisForm.Release表单运行时,用户单击表单右上角的关闭按钮,系统会自动执行Relase方法。(2)Refresh方法:刷新表单。(3)Show方法:显示表单。该方法将表单的Visible属性设置为.T.。(4)Hide方法:隐藏表单。该方法将表单的Visible属性设置为.F.。与Relase方法不同,Hide只是把表单隐藏,但并不将表单从内存释放,之后可用Show方法重新显示表单。第27页,本讲稿共84页3表单常用事件表单常用事件(1)Init事件:在表单创建时引发.(2)Destroy事件:在表单对象释放时引发。(3)RightClick事件:用鼠标右键单击表单时引发.第28页,本讲稿共84页8.3.2添加新的属性和方法1创建新属性创建新属性向表单添加新属性的步骤如下:(1)在系统菜单中选择【表单】|【新建属性】命令,打开“新建属性”对话框,如图7-13所示。(3)有选择地在“说明”框中输入新建属性的说明信息(2)在“名称”框中输入属性名称第29页,本讲稿共84页2创建新方法创建新方法在表单中添加新方法的步骤如下:(1)在系统菜单中选择【表单】|【新建方法程序】命令,打开如图的“新建方法程序”对话框。(2)在“名称”框中输入方法名。(3)有选择地在“说明”框中输入新建方法的说明信息。第30页,本讲稿共84页8.4运行单表7.4.1在设计时运行表单在设计时可采用以下方法运行表单文件:(1)在项目管理器窗口中,选择要运行的表单,然后单击“运行”按钮。(2)在表单设计器窗口中,在系统菜单中选择【表单】|【执行表单】命令,或单击常用工具栏上的“运行”按钮。(3)在系统菜单中选择【程序】|【运行】命令,打开“运行”对话框,然后在运行对话框中选择要运行的表单文件,单击“运行”按钮。(4)在命令窗口输入命令:DOFORM。第31页,本讲稿共84页2在程序中调用表单在程序中调用表单在程序中调用表单可用下列命令:DO FORM NAME变量LINKEDWITH实参1,实参2,TO变量NOSHOWNAME变量:如果包含NAME子句,系统将建立指定名字的变量,并使它指向表单对象。否则,系统将建立与表单文件名相同的变量,并使它指向表单对象。第32页,本讲稿共84页LINKED关键字:如果包含LINKED关键字,表单和表单对象变量将链接起来,这时,表单对象将随指向它的变量的清除而关闭(释放),否则,即使变量已经清除(如超出作用域,用RELEASE命令清除),表单对象依然存在。但不管有没有LINKED关键字,指向表单对象的变量并不会随表单的关闭而清除。TO变量:用于从模式表单返回值。WITH:用于向表单传递参数。NOSHOW:如果包含NOSHOW关键字,表单运行时将不显示,直到将表单的Visible属性被设置为.T.,或者调用表单的Show方法。第33页,本讲稿共84页8.4.2表单与其它程序模块间的通信1将参数传递到表单将参数传递到表单如果要将参数传递到表单,可按如下操作:(1)在表单的INIT事件中,用PARAMETERS定义形参:PARAMETERSparam1,param2(2)在表单的INIT事件中可以直接访问参数,如果在表单的其它方法或事件中需要使用该参数,必需在表单的INIT事件中将参数保存到表单的属性或变量中。(3)运行表单时,使用带WITH子句的DOFORM命令,系统会将WITH子句的实参值传递到INIT事件代码的PARAMETERS子句中的各形参。第34页,本讲稿共84页2从表单返回值从表单返回值只有模式表单可返回值。要从表单返回值可按如下操作:(1)将表单的WINDOWTYPE属性设置为1,使表单成为模式表单,(2)在表单的UNLOAD事件中代码中,包含一个带返回值的RETURN命令。(3)运行表单时,在DOFORM命令中包含TO关键字。第35页,本讲稿共84页3直接访问表单对象直接访问表单对象表单运行后,在其释放前可通过指向表单的变量访问表单对象及表单中所有控件对象。第36页,本讲稿共84页8.4.3使用表单集扩充表单1创始表单集创始表单集表单集是一个包含有一个或多个表单的容器。可在“表单设计器”中创建表单集,若要创建表单集,在系统菜单中选择【表单】|【创建表单集】命令。第37页,本讲稿共84页2添加和删除表单添加和删除表单添加:添加:在系统菜单中选择【表单】|【添加新表单】命令。删除:删除:(1)在“属性”窗口的对象列表框中,选择要删除的表单。(2)在系统菜单中选择【表单】|【移除表单】命令。如果表单集只有一个表单,可删除表单集而只剩下表单,方法:在系统菜单中选择【表单】|【移除表单集】命令。第38页,本讲稿共84页8.5 常用表单控件常用表单控件7.5.1常用控件的公共属性常用控件的公共属性name:控件的名称,它是代码中访问控件的标识(表单或表单集除外)。Fontname:字体名。Fontbold:字体样式为粗体。Fontsize:字体大小。Fontitalic:字体样式为斜体。Forecolor:前景色。Height:控件的高度Width:控件的宽度。控件的高度和控件的宽度,也可在设计时通过鼠标拖曳进行可视化调整。Visible:控件是否显示。Enable:控件运行时是否有效。如果为.T.,则表示控件有效,否则运行时控件不可使用。第39页,本讲稿共84页8.5.2标签(Label)控件1标签控件的功能标签控件的功能标签主要用于显示固定的文本信息。2标签控件常用属性标签控件常用属性caption:指定标签的显示文本。可以在设计时设置,也可以在程序运时设置或修改。autosise:autosise如果为真,标签在表单中的大小由caption属性中的文本长度决定,否则其大小由WIDTH和HEIGHT属性决定。forecolor:设置标题的字体颜色。backstyle:设置标签的背景是否透明,0透明,1不透明,默认为不透明。name:标签对象的名称,是程序中访问标签对象的标识。第40页,本讲稿共84页8.5.3 文本框(文本框(TextBox)控件)控件1文本框控件的功能:文本框控件的功能:(1)用于显示或接收单行文本信息(不设置ControlSource属性),默认输入类型为字符型,最大长度为256个字符。(2)用于显示或编辑对应变量或字段的值(设置ControlSource属性为已有变量或字段名)。第41页,本讲稿共84页2文本框控件常用属性文本框控件常用属性ControlSource:设置文本框的数据来源。一般情况下,可以利用该属性为文本框指定一个字段或内存变量。Value:保 存 文 本 框 的 当 前 内 容,如 果 没 有 为ControlSource属性指定数据源,可以通过该属性访问文本框的内容。它的初值决定文本框中值的类型。如果为ControlSource属性指定了数据源,该属性值与ControlSource属性指定的变量或字段的值相同。PassWordChar:设置输入口令时显示的字符。Readonly:确定文本框是否为只读,为“.T.”时,文本框的值不可修改。第42页,本讲稿共84页7.5.4命令按钮(CommandButton)控件1命令按钮控件功能命令按钮控件功能命令按钮典型地用来启动某个事件代码、完成特定功能,如关闭表单、移动记录指针、打印报表等。第43页,本讲稿共84页2命令按钮控件常用属性命令按钮控件常用属性Default:命令按钮的Default属性默认值为.F.,如果该属性设置为.T.,在该按钮所在的表单激活的情况下,按Enter,可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Default属性为真。Cancel:命令按钮的Cancel属性默认值为.F.,如果设置为.T.,在该按钮所在的表单激活的情况下,按Esc键可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Cancel属性为真。Caption:设置按钮的标题。Enable:确定按钮是否有效,如果按钮的属性Enable为.F.,单击该按钮不会引发该按钮的单击事件。对命令按钮的使用最重要的是编写Click事件代码。第44页,本讲稿共84页【例】创建一个如图7-14所示的登录窗口,并将表单保存为FORM2。第45页,本讲稿共84页在登录按钮的单击事件中输入如下代码:ifthisform.text1.value=user1“andthisform.text2.value=123456doformmainformform2.releaseelsemessagebox(密码或用户名错误,0,提示)endif第46页,本讲稿共84页在取消按钮的单击事件中输入如下代码:nAnswer=messagebox(你决定退出系统吗?,4,提示)DOCASECASEnAnswer=6thisform.releaseCASEnAnswer=7messagebox(请输入用户名和密码,0,提示)ENDCASE第47页,本讲稿共84页8.5.5 命令按钮组(命令按钮组(CommandGroup)控件)控件1命令按钮组功能命令按钮组功能命令按钮组是包含一组命令按钮的容器控件,用户可以单个或作为一组来操作其中的按钮。第48页,本讲稿共84页2命令按钮组常用属性命令按钮组常用属性Buttoncount:命令按钮组中命令按钮的数目。Value:默认情况下,命令按钮组中的各个按钮被自动赋予了一个编号,如1,2,3,等,当运行表单时,一旦用户单击某个按钮,则Value将保存该按钮的编号,于是在程序中通过检测Value的值,就可以为相应的按钮编写特定的程序代码。如果在设计时,给Value赋予一个字符型数据,当运行表单时,一旦用户单击某个按钮,则Value将保存该按钮的Caption属性值。Buttons:用于存取命令按钮组中每个命令按钮的数组,代码中可以通过该数组访问命令按钮组中的各个按钮.第49页,本讲稿共84页8.5.6编辑框(EditBox)控件1编辑框控件的功能编辑框控件的功能用于显示或编辑多行文本信息。编辑框实际上是一个完整的简单字处理器,在编辑框中能够选择、剪切、粘贴以及复制正文,可以实现自动换行,能够有自己的垂直滚动条。第50页,本讲稿共84页2编辑框常用属性编辑框常用属性ControlSource:设置编辑框的数据源,一般为数据表的备注字段。Value:保存编辑框中的内容,可以通过该属性来访问编辑框中的内容。SelText:返回用户在编辑区内选定的文本,如果没有选定任何文本,则返回空串。SelLength:返回用户在文本输入区中所选定字符的数目。Readonly:确定用户是否能修改编辑框中的内容。Scroolbars:指定编辑框是否具有滚动条,当属性值为时,编辑框没有滚动条,当属性值为(默认值)时,编辑框包含垂直滚动条。第51页,本讲稿共84页8.5.7 复选框复选框(CheckBox)控件控件1复选框的功能复选框的功能用于标识一个两值状态,如真(.t.)或假(.f.)。当处于“真”状态时,复选框内显示一个对勾,当处于“假”状态时复选框内为空白。第52页,本讲稿共84页2复选框常用属性复选框常用属性Value:用来指明复选框的当前状态,如下表ControlSource属性:用于指定复选框的数据源属性值说明0或.F.(默认值),未被选中1或.T.被选中=2或null不确定,只在代码中有效第53页,本讲稿共84页8.5.8选项组(OptionGroup)控件1选项组控件的功能选项组控件的功能选项组又称为选项按钮组,是包含选项按钮的一种容器。一个选项组中往往包含若干个选项按钮,但用户只能从中选择一个按钮。当用户单击某个选项按钮时,该按钮即成为被选中状态,而选项组中的其他选项按钮,不管原来是什么状态,都变为未选中状态,被选中的选项按钮中会显示一个圆点。第54页,本讲稿共84页2选项组常用属性选项组常用属性ButtonCount:指定选项组中选项按钮的数目。Value:用于指定选项组中哪个选项按钮被选中。ControlSource:指定选项组数据源。Buttons:用于存取选项组中每个选项的数组。第55页,本讲稿共84页【例】命令按钮组、选项组、复选框、编辑框应用示例,按如图7-17设计一个表单,要求:用户单击确定按钮时,在编辑框中显示用户对选项组和复选框的选择。并将表单保存为FORM3第56页,本讲稿共84页编写事件代码选择命令按钮组,在属性窗口中双击“CLICKEVENT”属性,系统会打开代码编写器,在代码编写器窗口为“CLICKEVENT”事件输入如下代码:mandgroup1.value=2thisform.releaseelsecstr=你所在城市+chr(13);+thisform.optiongroup1.buttonsthisform.optiongroup1.value.caption+chr(13)cstr=cstr+你的爱好+chr(13)第57页,本讲稿共84页ifthisform.check1.value=1cstr=cstr+thisform.check1.captionendififthisform.check2.value=1cstr=cstr+thisform.check2.captionendififthisform.check3.value=1cstr=cstr+thisform.check3.captionendifthisform.edit1.value=cstrendif第58页,本讲稿共84页8.5.9列表框(ListBox)控件1列表框的功能列表框的功能列表框提供一组条目(数据项),用户可以从中选择一个或多个条目,一般情况下,列表框显示其中的若干条目,用户可以通过滚动条浏览其他条目。第59页,本讲稿共84页RowSourceType属性值RowSource属性0-无在程序运行时,通过AddItem方法添加列表框条目,通过RemoveItem方法移去列表框条目无1-值列出在RowSource属性中指定所有数据项可以是用逗号隔开的若干数据项的集合,例如,在设计时,在本属性框中输入:北京、上海、长沙、武汉5-数组列出数组的所有元素使用一个已定义的数组名。6-字段列出一个字段的所有值字段名7-文件列出指定目录的文件清单磁盘驱动器或文件目录8-结构列出数据表的结构表名2选项组常用属性:RowSourceType属性与RowSource属性:RowSourceType属性指明列表框数据源的类型,RowSource属性指定列表框的数据源,两者常用的搭配如表第60页,本讲稿共84页List属性:用以存取列表框中数据条目的字符串数组。例如,LIST1代表列表框中的第一行(第一个数据项)。ListCount属性:列表框中数据条目的数目ColumnCount属性:指定列表框的列数Value属性:返回列表框中被选中的条目ControlSource属性:该属性在列表框中的用法与在其他控件中的用法有所不同,在这里,用户可以通过该属性指定一个字段或变量用以保存用户从列表框中选择的结果Selected属性:该属性是一个逻辑型数组,第N个数组元素代表第N个数据项是否为选定状态MultiSelect属性:指定用户能否在列表框控件内进行多重选定第61页,本讲稿共84页【例】列表框的应用:按下图设计一个表单。要求表单运行时,LIST1列表框显示STUD表的所有字段,单击左箭头按钮时,LIST1中选择的字段加入到LIST2中。第62页,本讲稿共84页操作步骤:按图7-19所示在表单中加入二个列表框、二个标签、二个命令按钮。在表单的INIT事件中加入如下代码:thisform.list1.value=0thisform.list2.value=0opendatabasestudentusestudfori=1tofcount()thisform.list1.additem(fields(i)nextclosedatabase在左箭头按钮(COMMAND1)的CLICK事件中加入如下代码:thisform.list2.addlistitem(thisform.list1.listitemthisform.list1.value)thisform.list1.removeitemthisform.list1.value右箭头按钮(COMMAND2)的CLICK事件代码请用户自己编写。第63页,本讲稿共84页8.5.10组合框(comboBox)控件组合框与列表框类似,也是用于提供一组条目供用户从中选择,组合框和和列表框的主要区别在于:(1)对于组合框来说,通常只有一个条目是可见的。用户可以单击组合框上的下拉箭头按钮打开条目列表,以便从中选择。(2)组合框不提供多重选择的功能,没有MultiSelect属性。(3)组合框有两种形式:下拉组合框(Style属性为0)和下拉列表框(Style属性为2)。对下拉组合框,用户既可以从列表中选择,也可以在编辑区输入。对下拉列表框,用户只可从列表中选择。第64页,本讲稿共84页8.5.11表格(Grid)控件1表格控件的功能:表格控件的功能:表格控件用于浏览或编辑多行多列数据。第65页,本讲稿共84页2表格控件常用属性表格控件常用属性RecordSourceType和RecordSource属性:RecordSourceType指 明 表 格 数 据 源 的 类 型,RecordSource属性指定数据的来源,它们取值及含义如表所示。RecordSourceType属性值RecordSource属性0-表:数据来源由RecordSource属性指定的表,该表能被自动打开表名1-别名数据来源于己打开的表表的别名2-提示运行时,由用户根据提示选择表格数据源3-查询数据来源于查询查询文件名4-SQL语句数据来源于SQL语句SQL语句第66页,本讲稿共84页ColumnCount:指定表格的列数LinkMaster:用于指定表格控件中所显示的子表的父表名称ChildOrader:指定子表的索引RelationalExpr:确定基于主表字段的关联表达式AllowAddNew:为真,运行时允许添加新记录,否则不能添加新记录AllowRowSizing:为真,运行时用户可改变行高。AllowHeaderSizing:为真,运行时用户可改变列宽。第67页,本讲稿共84页3常用的列属性ControlSource:指定在列中显示的数据源.CurrentControl:指定列对象中显示和接收数据的控件.Sparse:用于确定CurrentControl属性影响列中的所有单元格还是只影响活动单元格.注意:注意:设计时要设置列对象的属性,首先得选择列对象,选择列对象有两种方法:从属性窗口的对象列表中选择相应列,右击表格,在弹出的快捷菜单中选择【编辑】命令,这时表格进入编辑状态(表格的周围有一个粗框),用户可用鼠标单击选择列对象。第68页,本讲稿共84页4常用的标头(常用的标头(Header)属性)属性列标头也是一个对象,有它自己的属性、方法和事件,设计时要设置标头对象的属性,首先得选择标头对象,选择标头对象的方法与选择列对象的方法类似。Caption属性:指定标头对象的标题文本,显示于列顶部。默认为对应字段的字段名。Alignment属性:指定标题文本在对象中显示的对齐方式。第69页,本讲稿共84页5调整表格的行高和列宽调整表格的行高和列宽一旦指定了表格的列的具体数目,就可以有两种方法来调整表格的行高和列宽。设置表格的HeaderHeight和RowHeight属性调整行高;设置列对象的Width属性调整列宽。让表格处于编辑状态下,将鼠标指针置于表格两列的标头之间,这时,鼠标指针变为水平双箭头的形状,拖动鼠标,调整列至所需要的宽度;将鼠标置于表格左侧的第一个按钮和第二个按钮之间,这时,鼠标指针变成垂直双箭头的形状,拖动鼠标,调整行至所需要的高度。第70页,本讲稿共84页6使用表格生成器设计表格使用表格生成器设计表格用鼠标左键右击表格,在弹出的快捷菜单中选择【生成器】命令,打开“表格生成器”对话框,如图所示。“布局”选项卡:调整行高、列宽;设置列标题;选择控件类型“表格项”选项卡:用于设置表格内显示字段“样式”选项卡:指定表格的样式“关系”选项卡:设置一个一对多关系,指明父表中的关键字段与子表中的相关索引第71页,本讲稿共84页【例】设计如图7-21所示表单,要求按系浏览学生信息。第72页,本讲稿共84页设计数据环境:把系别表(DEP)和学生信息表(STUD)加入数据环境,并在系别代号之间建立关系。打开表格生成器,在“表格项”选项卡中