第七章表单设计7.1基本概念1.名词解释表单:即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改。该界面可以自行设计和定义,是一种容器类,可包括多个控件(或称对象)。表单集:可包含一张或多张表单的容器。数据环境:在打开或修改一个表单或报表时需要打开的全部表、视图和关系。它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。可以用数据环境设计器来创建和修改表单的数据环境。2.表单设计界面[图例]主要包括:表单向导、表单设计器、表单设计器工具栏、表单控件工具栏、属性窗口3.表单设计中常用的属性、事件与方法介绍属性、事件、方法说明默认值AlwaysOnTop属性控制表单是否总是处在其他打开窗口之上假(.F.)AutoCenter属性控制表单初始化时是否让表单自动地在VisualFoxPro主窗口中居中假(.F.)BackColor属性决定表单窗口的颜色255,255,255BorderStyle属性决定表单是否有边框,若有边框,是单线边框、双线边框,还是系统边框。如果BorderStyle为3(系统),用户可重新改变表单大小3Caption属性决定表单标题栏显示的文本FormlClosable属性控制用户是否能通过双击“关闭”框来关闭表单真(.T.)MaxButton属性控制表单是否具有最大化按钮真(.T.)MinButton属性控制表单是否具有最小化按钮真(.T.)Movable属性控制表单是否能移动到屏幕的新位置真(.T.)WindowState属性控制表单是最小化、最大化还是正常状态0正常WindowType属性控制表单是非模式表单(默认)还是模式表单。如果表单是模式表单,用户在访问应用程序用户界面中任何其他单元前必须关闭该表单0非模式Activate事件当激活表单时发生Click事件在控制上单击鼠标左键时发生DblClick事件在控制上双击鼠标左键时发生Destroy事件当释放一个对象的实例时发生Init事件在创建表单对象时发生Error事件当某方法(过程)在运行出错时发生KeyPress事件当按下并释放某个键时发生Load事件在创建表单对象前发生Unload事件当对象释放时发生RightClick事件在单击鼠标右键时发生AddObject方法运行时,在容器对象中添加对象Move方法移动一个对象Refresh方法重画表单或控制,并刷新所有值Release方法从内存中释放表单Show方法显示一张表单7.2创建表单可以用表单向导、表单设计器、表单生成器、编程四种方法创建表单。1.利用向导创建表单(1)创建单张表的表单:打开文件菜单→新建→表单→向导[或从常用工具栏上选择表单(F)]→选择表单向导→选取字段→选择样式→选择排序记录→选择保存方式→给出合适的文件名和保存位置。(2)创建多个相关表的表单:打开文件菜单→新建→表单→向导[或从常用工具栏上选择表单(F)]→选择一对多表单向导→选取父表字段→选取子表字段→选定关系→选择样式→选择排序记录→选择保存方式→给出合适的文件名和保存位置。注意:用向导创建的表单一般含有一组标准的命令按钮。表单保存后系统会产生两个文件:表单文件:扩展名为.SCX表单备注:扩展名为.SCT2.利用表单生成器创建表单文件菜单→新建→表单→新文件→表单菜单→快速表单命令→选择字段和样式并确定之。注意:用生成器创建的表单不能直接产生一些命令按钮。3.利用设计器创建表单文件菜单→新建→表单→新文件→在表单设计器中,用表单设计器和表单控件工具条上的按钮创建所需的表单→保存表单→给出文件名和保存位置。注意:用设计器创建的表单,用户必须为控件设置有关的属性及事件处理代码。4.利用编程的方法创建表单按照面向对象设计的方式,先可视化地利用类来创建表单,再将类代码复制到程序窗口,适当添加部分设置系统环境的代码,以程序文件的形式保存。5.运行表单从常用工具栏上单击运行按钮(!)或从表单菜单中选择运行表单命令或从命令窗口中输入:DOFORM表单文件名。7.3向表单中添加控件1.常用控件的作用标签:用于保存不希望用户改动的文本,常用来为添加的控件写标。文本框:用于输入或编辑表中的非备注型字段,框中一般是单行的文本。编辑框:用于输入或编辑长字段或备注字段,框中可以有多行并有垂直滚动条。列表框:用于显示一组预定的、供用户选择的值,可以是一列或多列,可通过滚动条浏览列表信息。组合框:一种下拉式的列表框,可以从中选择一项或人工输入一个值,兼有列表框和文本框的功能复选框:用来显示多个选项,可以选择其中的一项或多项。表格:一个按浏览窗口样式显示数据的容器,常用来显示一多关系中的子表。页框:一种用于创建选项卡式对话框的容器类,一个页框可以包含多个页面,但每次只能有一个活动页面。微调控制:用于接受给定范围内的数据输入。命令按钮:常用来启动一个事件。命令按钮组:用来把相关的命令按钮编成组。选项按钮组:用于显示多个选项,只允许从中选择一项。计时器:可以在指定时间或按照设定的间隔运行进程,此控件在运行时不可见。2.用生成器向表单中添加控件:打开所需表单,进入表单设计器→从表单控件工具栏上选择生成器锁定按钮→从该工具栏上选择所需控件并放在表单上→在生成器的选项卡中填上有关信息。3.利用数据环境在表单中创建控件:从数据环境中直接将所需字段或表拖到正在设计的表单中,VFP会自动生成符合要求的控件。若要创建一个将下面的项拖动到表单表格表复选框逻辑型字段编辑框备注型字段OLE绑定型控制通用型字段文本框其他类型的字段4.自定义方式创建控件打开表单设计器→根据需要从工具栏上单击某个控件→用鼠标直接在表单上画出控件外形→在属性窗口设置该控件的各项属性。5.使用类浏览器向表单中添加控在表单设计器中打开表单→在类浏览器中打开类库文件,其中应包含有添加到表单中的对象的类→从类列表中,选择类名,然后把类图标拖放到表单上。类图标位于类列表的上方。附注:如果要把类添加到表单的容器对象上,则需把类图标拖放到表单中一个区域,然后把对象剪切并粘贴到所要的容器上。6.控件常用的属性、事件与方法属性说明AutoSize属性指定控件是否依据其内容自动调节大小ButtonCount属性指定命令组或选项组中的按钮数Caption属性指定在对象标题中显示的文本ControlCount属性指定容器对象中控件的数目ControlSource属性指定与对象绑定的数据源Enabled属性指定对象能否响应用户引发的事件Filter属性排除不满足条件的记录。筛选条件由给定表达式指定Increment属性单击上箭头或下箭头时,微调控件中数值增加或减少的量InputMask属性指定控件中数据的输入格式和显示方式MoverBars属性指定是否在列表框控件中显示移动按钮Name属性指定在代码中引用对象时所用的名称Parent属性引用一个控件的容器对象ReadOnly属性指定是否可以编辑控件或者更新与临时表对象相关联的表或视图RecordSourceType属性指定如何打开填充表格控件的数据源RowSource属性指定组合框或列表框控件中值的来源ToolTipText属性为一个控件指定作为“工具提示”出现的文本Value属性指定控件的当前状态Click事件在控件上单击鼠标左键时方生DblCick事件在控件上双击鼠标左键时方生Destroy事件当释放一个对象的实例时发生Init事件在创建对象时发生InteractiveChange事件当更改控件的值时发生Load事件在创建对象前发生RightClick事件在单击右键时发生Addobject方法运行时在容器对象中添加对象Clear方法清除组合框或列表框控件的内容Refresh方法重画表单或控件,并刷新所有值KeyPress事件当按下并释放某个键时发生7.4修改表单布局打开表单,进入表单设计器,用表单设计器工具栏或显示菜单中的各命令修改表单。1.选择、移动和缩放控件选择:用鼠标单击所需控件移动:选定控件,用鼠标拖动到新位置或从编辑菜单中选择剪切再在新位置粘贴缩放:选定控件,用鼠标拖动尺寸柄直至所需大小松开2.复制和删除表单控件复制:选定表单上现有的控件→从编辑菜单中选择复制→从编辑菜单中选择粘贴。删除:选定表单上现有的控件→按Delete键。3.控件的布局可利用布局工具栏使表单上的所有控件排列整齐、大小合理、对称美观。7.5定制表单1.改变文本的字体和大小打开表单,进入表单设计器→选择要修改的控件→打开属性窗口→设置字体大小和字形,如FontName、FontSize、FontBold。2.向表单中添加线条和形状选择工具栏上的线条或形状按钮,在表单中所需位置拖动鼠标,画出线条或图形,图形界于正方形和圆形、长方形和椭圆形之间(属性窗口中的Curvature值从0~99)。线条和形状的颜色可以在属性窗口中设定。3.向表单中添加图形从表单控件工具栏中选择图象→在属性窗口中选择Picture属性单击该栏的…按钮→在打开对话框中找到所需的图象文件→确定4.设置一个表单的前景和背景颜色用调色板工具栏或通过属性窗口中的ColorSource属性来设置。5.创建表单集启动表单设计器→从表单菜单中选择创建表单集→设计第一张表单→从表单菜单中选择添加新表单→设计另一张表单→添加新表单→设计另一张表单……7.6设计自定义表单的一般方法1.与数据表绑定型表单(1)生成基本表单:新建→表单→新文件→进入表单设计器→表单菜单→快速表单→选定数据库(表)→选定输出字段→选定样式→确定。(2)修改基本表单:1)用鼠标拖动来调整各字段的布局(排列位置、大小、对齐等);2)在属性窗口中设置表单中各对象的属性:表单(form1):caption:输入表单的中文标题backcolor:设置表单背景颜色autocenter:使表单运行时自动处于屏幕中央visible:设置表单在运行时是否可见,一般采用.T.各字段控件:autosize:根据所容纳的内容自动调整大小,常采用.T.backstyle:字段标题一般可设为透明,其它可设为不透明caption:输入中文的字段标题fontname:设置控件字体fontsize:设置字体大小forecolor:设置字体颜色(3)根据需要添加控件:1)利用数据环境:打开基本表单→单击鼠标右键→从快捷菜单中选择数据环境→将所需字段拖到表单中→用标签控件为字段添加标题(先画出标签控件再更改标签的caption属性)。2)利用表单控制工具栏:打开基本表单→单击工具栏中所需控件→在表单中画出控件→选定控件→单击鼠标右键→从快捷菜单中选择生成器…→在对话框中选好所需各项→确定。4.添加命令按钮根据需要添加适当数量的命令按钮(用单个命令按钮或用命令组均可),设置命令组时要利用命令组生成器(单击右键,从中选择生成器)。更改命令按钮的标题,需用热键时在标题后加上(\A)即可。如:Caption中为:退出(\X),按钮上则显示退出(X)5.为命令按钮编写事件代码根据命令按钮的标题所代表的功能在代码窗口中填写代码。几个常用按钮的代码如下表。上一个If.not.bof()Skip-1EndifThisform.refresh下一个If.not.eof()SkipEndifThisform.refresh第一个GotopThisform.refresh最后一个GobottomThisform.refresh退出Thisform.release2.与数据表无关型表单新建→表单→新文件→进入表单设计器→添加控件→设置属性→编写代码。