VisualFoxPro程序设计幻灯片第6章.ppt_第1页
VisualFoxPro程序设计幻灯片第6章.ppt_第2页
VisualFoxPro程序设计幻灯片第6章.ppt_第3页
VisualFoxPro程序设计幻灯片第6章.ppt_第4页
VisualFoxPro程序设计幻灯片第6章.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 表单,表单是VFP创建应用程序与应用程序界面的重要途径之一,是可视化操作与面向对象的程序设计思想有机的结合。 表单设计器是设计表单的工具,它提供了设计应用程序界面的各种控件、相应属性、事件。它运用了面向对象的程序设计和事件驱动机制,使开发者能直观,方便,快捷的完成应用程序的设计与界面设计的开发工作。,6.1 表单概述,表单(Form)类似于Windows中的各种标准窗口与对话框,它是一种容器类,可以包含多个控件对象,用于处理各种数据,或相应用户/系统事件以完成信息的处理。 在VFP中,既可以用编程的方法创建表单也可以使用可视化界面创建表单,其中可视化的方法又分为两种: (1)利用表单向

2、导创建表单 (2)利用表单设计器创建或修改表单,6.2 用表单向导设计表单,利用表单向导,可以很方便地创建基于一个表(视图),或基于具有一对多关系的二个表(或视图)的表单。这类表单主要用于查看、编辑修改或打印表(视图)中的数据 。,6.2.1 建立基于一个表(视图)的表单,第一步,在项目管理器中选择“文档”选项卡,然后点击“新建” 第二步,选择利用表单向导创建 第三步,选择表单向导 第四步,(1)字段选取(2)表单样式选取(3)排序次序(4)完成 当表单保存后,在磁盘上产生两个文件,即表单文件和表单的备注文件,扩展名为:SCX和SCT。,6.2.2利用向导创建一对多表单,利用表单向导可以创建基

3、于两个表的表单,这两个表必须是一对多的关系,如xs表和cj表,其中xs是“父表”而cj是“子表”。 创建“一对多表单”的步骤: (1) 在“文档”选项卡中选择表单,点击新建 (2)在新建对话框中选择利用向导创建 (3)在向导选取对话框中选择“一对多表单向导” (4)选择字段,建立表之间的关系,选择表单样式,排序次序,完成。 注意:表单向导只能创建表单,不能修改表单,如果要修改只能利用“表单设计器”。,6.3 表单设计器,用表单向导设计表单,固然简单方便又不需要编写代码,但表单向导设计出的表单是有一定的固定模式,功能也有限。如果想设计无固定模式,多功能的表单,表单向导是无法实现的。VFP提供了表

4、单设计器这个面向对象编程的可视化工具,用以满足开发者设计风格各异,功能齐全的表单。,6.3.1 表单设计器概述,1、打开表单设计器 在“项目管理器”中选定“表单”,并选择【新建】按钮。 在【文件】菜单中选择【新建】命令,再选定“表单”,再选择【新建文件】按钮。 使用CREATE FORM命令,如果表单存在可用Modify命令。 格式: CREATE FORM |? MODIFY FORM |?,在新表单(Form1)上可以可视化地添加控件并进行属性、方法程序设计。,2、表单设计器环境,(1)表单菜单,显示“新建属性对话框”可以向表单(集)添加属性,显示“新建方法对话框”可以向表单(集)添加方法

5、,显示“编辑属性/方法”对话框,创建一个表单集,删除现有的表单集,如果表单集中只有一个表单可以使用,向表单集中添加一个表单,从表单集删除一个表单,运行表单,(2)表单设计器工具栏 1)设置Tab键次序 2)数据环境 3)属性窗口 4)代码窗口 5)表单控件工具栏 6)调色板工具栏 7)布局工具栏 8)表单生成器 9)自动格式,(3)”属性”窗口 通过“属性”窗口可以查看和设置选中对象的属性。“属性”窗口包含选定的表单,数据环境或控件的属性、事件和方法,可在设计或编程时对这些属性进行设置或更改。,对象列表,选项卡,取消按钮确定按钮,属性设置框,表达式生成器按钮,属性/事件/方法列表,所选属性/事

6、件/方法的说明,注意: 如果属性的值为一个函数或表达式,则必须以等号(=)开头。如,某文档框的Value属性值为当前系统日期,则设置时可输入:=Date()。 如果需要将属性的值设置为默认值,可以点右键选择“重置为默认值”。 (4)新建属性和方法 利用系统菜单“表单”-“新建属性”或“新建方法”,可以为表单集或单独的表单添加任意多个新的属性或方法。新建的属性默认值为逻辑值“假” 在新建窗口中有两个选项:Access方法程序和Assign方法程序。 Access方法程序:查询该属性的值的时候执行程序。 Assign方法程序:更改该属性的值的时候执行程序。,6.3.2事件与方法的代码设置,表单(集

7、)及其所有的对象都有与之相关的事件和方法程序。那么如何为某一个对象(控件)的某一个事件的处理程序编写代码呢? (1)执行系统菜单命令“显示”-“代码” (2)在“属性”窗口中双击某事件或方法 (3)在“表单设计器”窗口中双击表单或某控件,在事件代码中可以编程处理所发生的事件,在事件代码中也可以引用某个控件对象,如设置其属性或调用其方法。 格式: Objectvariable.Form.Control.Property=Setting 或者 with endwith 或者 Container.SetAll(cProperty,Value,cClass) 如,Form1.Grid1.SetAll(

8、“BackColor”,RGB(255,0,0),”Column”),例子,编写一个用户登陆界面,当输入的用户名为“张三”并且密码为“123”时,输出“张三你好!”,否则输出“用户名或密码错误”。,6.3.3 数据环境,表单的数据环境包括了与表单交互的表和视图,以及表之间的关系。也就是说从数据环境中的表或视图中获取数据显示到表单上。 数据环境要在表单打开的情况下使用,当表单关闭或释放时它就关闭。 1、打开数据环境设计器 2、向数据环境设计器中添加表或视图 3、数据环境中关系的设置 4、从数据环境设计器中移去表或视图 5、向表单中添加字段,控件与数据的关系 根据控件与数据环境中数据关系,控件可以

9、分为两类:数据绑定型控件和非数据绑定型控件。 绑定型控件:可以将数据绑定到控件的value值上,如,文本框,组合框,列表,表等 非绑定型控件:不能将数据表中的数据绑定到控件上,如线条,标签,命令按钮组等。 有些控件可以使用ControlSource属性绑定数据,如文本框,而另一些控件需要使用RecordSourceType属性和RecordSource属性绑定数据,如组合框,列表框等。,6.3.4 使用表单设计器修改表单,利用表单设计器可以对已建立的表单进行修改。方法是:在项目管理器中选择该表单,然后选择“修改”。 1.修改表单布局 选择控件 移动控件 缩放控件 复制控件 删除控件,2.修改表

10、单的外观 表单的外观主要指表单的样式、表单及其中控件的颜色,以及显示文本的字体和大小等。 (1)表单的样式 表单的标题 最大化和最小化按钮 表单边框样式,为1或2时,表单的边框不可调整。 AutoCenter属性,决定表单是否自动居中。 (2)颜色与背景 背景颜色 背景图片,(3) 改变文本的字体和大小 FontName属性:指定文字的字体,默认为宋体 FontSize属性:指定字体的大小 FontBold、FontItalic、FontStrikethru和FontUnderline属性:用于指定文本是否为粗体、斜体、删除线或下划线等效果 Enabled属性:指定表单或控件是否可用,是一个逻

11、辑值 Visible属性:指定表单或控件是否可见。,3.控件生成器 系统提供的生成器有自动格式生成器和控件生成器,主要用于设置控件的样式。,2.表单的保存与运行 使用DO FORM命令运行表单。DO FORM命令的基本语法为: DO FORM FormNameNAME MemVarName WITH cParameterList TO MemVarName 其中: FormName是指定要运行的表单的名称; Name MemVarName指定一个内存变量或数组元素,可通过它们引用表单。 WITH cParameterList用于指定参数 TO MemVarName将运行结果保存到内存变量中,6

12、.3.6用表单集扩展表单,通过将多个表单包含在一个表单集(FormSet)中,可以将多个表单作为一个组来操纵。表单集具有FormCount属性显示其中表单的数目。使用表单集有以下优点: 可以同时显示或隐藏表单集中的表单 能够可视化得排列表单,控制表单的位置 可以使多个表单中的数据记录指针同步。,6.3.7创建单文档界面和多文档界面,VFP中允许创建两种类型的应用程序:单文档界面和多文档界面。 单文档界面:只有一个独立的窗口 多文档界面:有一个主窗口,其中可以包含多个子窗口。,单文档界面,多文档界面,为了支持这两种类型的文档界面,在VFP中可以创建以下三种类型的表单: 子表单:包含在其他表单中的

13、表单,它不能移出父表单。 浮动表单:由子表单变化而来的表单,该表单属于父表单的一部分,可以不位于父表单中。 顶层表单:独立的、无模式的、无父表的表单。,6.4 控件的创建与使用6.4.1 标签控件,标签控件属于输出类控件,用于显示文本,最多为256个字符。它的常用属性如表所示。,6.4.2 文本框控件,文本框控件是基本控件,可以输入,编辑数据。它可以处理除备注字段类型的数据,一般包含一行数据,在接受字符型数据时,最多255个字符。 表6.9 文本框常用属性,例6.6 求n!,6.4.5 编辑文本框,编辑框可用于输入、显示、编辑数据。它只能编辑字符型数据,可编辑长的字符型字段数据,备注字段数据,

14、字符型内存变量数据,它可以编辑单行与多行数据。它最多能接受2147483647个字符。 它的常用属性如表6.10所示。,6.4.8 列表框控件,列表框是用于显示项目的列表,用户可以在列表框中选择一项或多项。列表框也有生成器。打开方法选中控件的快捷菜单中生成器即可。 1、列表框常用属性如下表所示:,2、常用方法,例子,在以下界面中显示两个列表框,在左边列表框中,显现出xs表中的结构,当在该列表框中双击某一个列表项时,将其添加到列表框2中,并从列表框1中将其删除。,代码 为列表框1的双击事件编写代码: thisForm.list2.AddItem(thisForm.list1.value) for

15、 i=1 to thisForm.list1.listCount if thisform.list1.selected(i) thisform.list1.RemoveItem(i) thisForm.list1.selected(i)=.T. exit endif endfor,6.4.9 组合框,组合框是一种列表框,有两种形式:一种是下拉式列表框与列表框一样,另一种为下拉式组合框。下拉式组合框可以在列表框中选项,也可以输入一个值。组合框所常用的属性与方法与列表框基本相同,但组合框没有多选择属性,即没有MultiSelect属性。它有一个重要属性就是style,用途如下表所示:,例子,在下面

16、界面中编写一个下拉列表框,和一个列表框,数据环境为js和zc表,其实现的功能为当用户在下拉列表框中选择一个职称后,在列表框中显示出拥有该职称的教师。,设置数据源,并建立js和zc表之间的关系 为下拉列表框的InteractiveChange事件编写代码: public x x=this.value thisform.list1.rowsourcetype=3 thisform.list1.rowsource=select xm from js where zcdh in(select zcdh from zc where zc=x) into cursor temp2 thisForm.Ref

17、resh,6.4.5选项按钮组,它是一个容器控件,包含多个选项按钮,用于在多种功能或多种条件下,用户只能选择其中的一个功能或条件。选项组控件有生成器,通过生成器对各按钮属性设置。常用属性如下表所示。,例子,在下面界面中添加一个选项按钮组和一个列表框,实现功能:在选项按钮组中选择某一个按钮后,在列表框中显示出相应职称的教师。,设置数据环境 为选项按钮组的InteractiveChange事件编写代码 thisForm.list1.RowSourceType=3 do case case this.value=1 thisForm.list1.RowSource=select xm from js

18、 where zcdh in(select zcdh from zc where zc=教授) into cursor temp2 case this.value=2 thisForm.list1.RowSource=select xm from js where zcdh in(select zcdh from zc where zc=副教授) into cursor temp2 case this.value=3 thisForm.list1.RowSource=select xm from js where zcdh in(select zcdh from zc where zc=讲师)

19、 into cursor temp2 case this.value=4 thisForm.list1.RowSource=select xm from js where zcdh in(select zcdh from zc where zc=助教) into cursor temp2 endcase thisForm.Refresh,6.4.6 复选框,用于在软件中提供给用户一种或多种选择,以便满足用户的要求。复选框是一个逻辑框,它只有两种状态值:一种为 .T.,表示选上;一种为 .F.,表示没选上。,例子,在下列界面上添加一个列表框和一个复选框,点击复选框时在列表框中显示出教师的工号和姓

20、名。,设置数据源 为复选框的InteractiveChange事件编写代码 if this.value=1 thisForm.list1.columncount=2 thisform.list1.rowsource=js.gh,xm else thisForm.list1.columncount=1 thisform.list1.rowsource=js.gh endif thisform.refresh,6.4.7 微调框,该控件用于实现用户在一定范围内输入数值。用户通过单击微调的上下箭头改变数值,也可以直接在微调中输入数值。,例子,用微调输入x值,计算x*x,6.4.8 表格,表格是一种容

21、器对象,它是按行列显示数据,外观与浏览窗口相似。表格控件包含列(Column)控件,而列控件又由标头(Header)控件和显示数据的控件(默认为文本框控件)。表格,列,标头和显示数据的控件都有自己的属性、事件和方法。,常用属性如下表所示。,GridLines属性,GridLineColor属性和GridLineWidth属性:确定是否在表格控件中显示水平和垂直线,以及线的颜色和宽度。 ReadOnly属性:指定表格中的数据是否只读。 AllowAddNew属性:指定是否可以将表格中的新纪录添加到表中。默认为.F. 列的属性: 以“Dynamic”开头的属性。如DynamicBackColor属

22、性用于设置列的背景颜色。 This.SetAll(“DynamicBackColor”,”iif(MOD(RECNO(),2)=0),; RGB(255,255,255),RGB(0,255,0)”,”Column”) &白色和绿色交替 CurrentControl属性:指定列对象中包含的哪个控件用于显示活动单元的值 Sparse属性:指定CurrentControl属性是否影响列对象中所有的单元。,例子,在下面界面中添加一个Grid控件,显示教师表(js)中的信息,并将系代号(xdh)列的数据显示控件设置为下拉列表框 。,6.4.9 计时器,计时器是用于在程序中按一定时间间隔触发某一事件,它

23、的时间是由系统时钟控制的,它在执行时是不可见的。 (1)常用属性,(2)常用事件 Timer事件为计时器常用事件,当经过由Interval属性指定的毫秒数时触发,一般是在此事件中编制周期性的动作执行程序。采用Reset()方法可以重置计时器。,例子,在下面界面上显示当前的时间,代码: thisForm.label1.caption=现在时间是:+TTOC(datetime(),6.4.10 线条与形状,1.线条 该控件用于画一个水平线条、垂直线条或对角线。常用属性如下表。,2、形状(shape),该控件用来画圆、矩形、椭圆。常用属性如下表。,6.4.11 命令按钮与命令按钮组,1.命令按钮 命

24、令按钮用来触发事件,完成特定的功能 ,常用属性如下表所示。,6.4.3 命令组,1、常用属性 命令组是容器控件,常用属性如图6.8所示。,对于命令按钮组,可以为每一个按钮单独编写事件处理代码,也可以为命令按钮组编写同一的代码来响应每个按钮的事件。 例子,编写如下的界面,实现浏览学生信息的功能。,命令按钮组的Click事件处理代码: do case case this.value=1 goto top case this.value=2 if !eof() skip endif case this.value=3 if !bof() skip-1 endif case this.value=4 goto bottom endcase thisForm.refresh,6.4.12 页框控件,页框是一种容器对象,页框中包含页面即页,而页中又可以包含其它控件。其实页框就是选项卡对话框。页框对表单的有限空间进行了扩展。常用属性如下表。,例子,在以下界面中添

温馨提示

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

评论

0/150

提交评论