《911第7章 表单的设计与应用.ppt》由会员分享,可在线阅读,更多相关《911第7章 表单的设计与应用.ppt(63页珍藏版)》请在三一办公上搜索。
1、第7章 表单的设计与应用,本 章 要 点,面向对象的概念 建立表单管理表单 运行表单常用表单控件,面向对象程序设计基础,面向过程的程序设计 在传统的应用程序中,应用程序自身控制了执行哪一部分代码和按何种顺序执行代码,一般从第一行代码执行程序并按应用程序中预定的路径执行,必要时调用过程。,例1 假设有一个旅馆服务表文件GFU.DBF,利用传统的程序设计方法,编制一个主控程序,使它能提供以下功能:退出、查询、登记、消账、结算。,传统的程序设计如下:do while.t.clear?SPACE(10)+*?旅馆服务主菜单?*?SPACE(10)+*0退出旅馆前台服务*?SPACE(10)+*1查询*
2、?SPACE(10)+*2登记*?SPACE(10)+*3消账*?SPACE(10)+*4结算*?SPACE(10)+*WAIT 请选择04号菜单:TO A1,这是传统的程序设计方法,退出、查询、登记、消账、结算等5个功能分别由EXIT命令和CX、DJ、XZ、JS等4个子程序实现,然后再被主控程序调用。程序执行中所需要的所有数据、主菜单出现的位置、装饰符号“*”等必须全部在程序中加以说明和控制。,DO CASECASE A1=0 EXITCASE A1=1 messagebox(你选择了1)CASE A1=2messagebox(你选择了2)CASE A1=3 messagebox(你选择了3
3、)CASE A1=4messagebox(你选择了4)ENDCASEenddo,面向对象的程序设计,各个命令按钮有高度、宽度、背景色、按钮标题、按钮相对表单的位置、按钮标题颜色等属性,这些属性值就是描述命令按钮的一系列的数据,它们可以在按钮设计时进行设置,并可马上看到设置的效果,不需要经过编译运行修改再编译再运行这个过程,所以是可视化的。属性值(数据)也可以在程序运行时进行设置,即和按钮的操作程序写在一起。所以对程序员来说一个命令按钮的属性值(数据)和操作程序是一个整体,程序员把它们看成是一个实体,可以一起被删除、复制等,在VFP中称为一个对象,即对象是程序和数据的封装体,这种编程方法称为面向
4、对象的程序设计方法。,在面向对象的程序设计中,程序代码不是按照预定的路径执行的,而是在响应不同的事件时执行不同的代码片段,即受“事件驱动”。事件可以由用户操作触发,也可以由来自操作系统或其它应用程序的消息触发,甚至由应用程序本身的消息触发。这些事件的顺序决定了代码执行的顺序,因此应用程序每次运行时所经过的路径都是不同的。面向对象程序设计的两个基本特点是:(1)它是可视化的编程方式。(2)程序运行没有一定的顺序,由事件驱动。,幸运7游戏,看一个例子:,什么是对象?对象:是具有某些特性的具体事物的抽象例如:一个球、一辆汽车、一个控件、一个窗体 每个对象都有自己的特征和行为,类 是同种对象的集合与抽
5、象 它是创建对象实例的模板 类与对象的关系 类是对象的定义 对象是类的一个实例,对象和类,VFP中的基类和对象,1基类(1)容器类:可以容纳其他对象,并允许访问所包含的对象。(2)控件类:不能容纳其他对象。由控件类创造的对象是不能单独使用和修改的,它只能做为容器类中的一个元素,通过由容器类创造的对象修改或使用。2.用户创建的类,Visual Foxpro基类 列表,对象的属性、事件和方法,属性:,描述对象特性的参数,设置:在属性窗口中直接修改 在代码窗口中利用赋值语句修改 THISFORM.对象名.属性=参数值例如:THISFORM.Command1.Caption=“确定”,对象:VFP中主
6、要指表单和控件,Caption和Name两个属性的区别,所有对象都有自己的属性。它们是用来描述和反映对象特征的参数。例如:控件名称(Name)、标题(Caption)、颜色(Color)、字体(FontName)等属性决定了对象展现给用户的界面具有什么样的外观及功能,对别的表单操作可用表单名,事件,系统预先设定的,能被对象识别和响应的动作例如:常用事件有Click和DblClick等,对象的属性、事件和方法,事件驱动程序设计:系统等待事件发生 执行已发生的事件过程,方法:,一种专门的子程序或函数,是对象自身可以完成的一定动作,语法:thisform.对象名.方法参数名,例如:Form1.Cls
7、 FORM2.SHOW,对象的属性、事件和方法,do form jsqjsq.hidewaitjsq.show,1.属性:,每种对象有若干个属性,不同对象的属性类型和属性个数是不完全相同,2.方法:,决定了对象可以直接完成的动作。一般用动词,语法:对象名.方法参数,3.事件:,能被对象识别的动作。一般也用动词,可以在事件中编写程序,用来描述对象特征的一些数据。一般用名词,语法:THISFORM.对象名.属性=参数值,属性、方法与事件的比较,1.表单设计(界面设计)2.属性设置3.代码设计4.保存和运行程序,创建应用程序的基本步骤,练习:在表单上添加一个命令按钮,标题为“单击我”,单击按钮时,标
8、题为“你单击了我”.,1.This:引用当前对象 如:this.enabled=.t.2.Thisform:当前的表单 如:mand1.enabled=.t.3.parent属性:用于指定引用控件的容器对象如:假设当前操作的对象是一个表单上的命令按钮this.parent.backcolor=RGB(0,0,255)&将当前的命令按钮所在的表单的背景颜色设置为蓝色,对象的引用,表7-2,Visual FoxPro中常用事件,Load:当表单或表单集被加载到内存中时发生的事件。Unload:从内存中释放表单或表单集时发生的事件。Init:创建对象时发生的事件。Destroy:从内存中释放对象时发
9、生的事件。Click:鼠标左键单击对象时发生的事件。Dbclick:鼠标左键双击对象时发生的事件。Rightclick:鼠标右键单击对象时发生的事件。GotFocus:对象接收到焦点时发生的事件。LostFocus:对象失去焦点时发生的事件。KeyPress:当用户按下或释放键时发生的事件。,用户界面设计基础,表单,表单就是一个容器,它可以容纳多个控件。,表单的创建是一个全新的领域。创建表单的过程,就是定义控件的属性,确定事件或方法、代码的过程。,使用表单向导,启动表单向导有以下四种途径:(1)打开“项目管理器”,选择“文档”选项卡,从中选择“表单”。然后单击“新建”按钮。在弹出的“新建表单”
10、对话框中单击“表单向导”按钮。(2)在系统菜单中选择【文件】|【新建】命令,或者单击工具栏上的“新建”按钮,打开“新建”对话框,在文件类型栏中选择“表单”。然后单击“向导”按钮。(3)在系统菜单中选择【工具】|【向导】|【表单】命令。(4)直接单击常用工具栏上的“表单向导”图标按钮。按步骤依照“表单向导”完成一对多表表单的设计,创建表单的操作步骤,文件,新建,表单,表单设计器,显示,表单控件,属性,代码,保存,运行,用表单设计器创建表单,还可以使用命令:Create form.scx,创建表单,修改表单,表单一旦创建完成,表单及表单中对象的属性、方法和事件已确定。如果对已有的属性、方法和事件还
11、有更多的需求,可以对其进行修改。Modify Form.scx,运行表单,在表单设计器打开时,用系统主菜单或快捷菜单方式可以运行表单;另外以命令方式也可以运行表单。Do form.scx,数据环境,1打开数据环境设计器表单设计器环境下,单击“表单设计器”工具栏上的“数据环境”按钮,或选择【显示】|【数据环境】命令,即可打开“数据环境设计器”窗口,此时,系统菜单栏上将出现“数据环境”菜单。2数据环境的常用属性常用的两个数据环境属性是AutoOpenTables和AutoCloseTables,快速表单,调用表单生成器的方法有以下三种:(1)在系统菜单中选择【表单】|【快速表单】命令。(2)单击“
12、表单设计器”工具栏中的“表单生成器”按钮。(3)右击表单窗口,然后在弹出的快捷菜单中选择“生成器”命令。,1表单常用属性,表单的基本属性,Left,Height,Width,Top,Maxbutton,Minbutton,决定窗体的位置,决定窗体的大小,决定窗体的最大、最小化按钮可用,BorderStyle(边框),Enabled与Visible:设置窗体是否可用和可见的Font:设置直接显示在窗体中的文字的字体Picture:设置窗体中显示的图片,表单的基本属性,ForeColor(前景色),BackColor(背景色),Caption(标题),Icon(图标),(1)Release方法:将
13、表单从内存中释放。ThisForm.Release(2)Refresh方法:刷新表单。(3)Show方法:显示表单。该方法将表单的Visible属性设置为.T.。(4)Hide方法:隐藏表单。该方法将表单的Visible属性设置为.F.。,2表单常用方法,3表单常用事件,(0)LOAD事件:在表单建立之前引发。(1)Init事件:在表单创建时引发.(2)Destroy事件:在表单对象释放时引发。(3)CLICK事件:用鼠标单击表单时引发.(4)RightClick事件:用鼠标右键单击表单时引发.(5)UNLOAD事件:表单释放时最后引发的事件,7.5 常用表单控件,常用控件的公共属性name:
14、控件的名称,它是代码中访问控件的标Fontname:字体名。Fontbold:字体样式为粗体。Fontsize:字体大小。Fontitalic:字体样式为斜体。Forecolor:前景色。Height:控件的高度Width:控件的宽度。Visible:控件是否显示。Enable:控件运行时是否有效。,7.5.13 控件操作与布局,1控件的基本操作(1)选定控件用鼠标单击控件可以选定该控件,被选定的控件四周出现个控点(2)移动控件 先选定控件,然后用鼠标将控件拖动到需要的位置上。也可用方向键对控件进行移动。(3)调整控件大小 选定控件,然后拖动控件四周的某个控点可以改变控件的宽度和高度。也可以按
15、住shift键的同时,用方向键对控件大小进行微调。,(4)复制控件先选定控件,选择【编辑】|【复制】命令,然后选择【编辑】|【粘贴】命令,最后将复制产生的新控件拖动到需要的位置。(5)删除控件选定不需要的控件,然后按Delete键或选择【编辑】|【剪切】命令,控件布局,7.5.13 控件操作与布局,7.5.2 标签(Label)控件,1标签控件的功能标签主要用于显示固定的文本信息。2标签控件常用属性caption:指定标签的显示文本。autosize:autosize如果为真,标签在表单中的大小由caption属性中的文本长度决定,否则其大小由WIDTH和HEIGHT属性决定。forecolo
16、r:设置标题的字体颜色。backstyle:设置标签的背景是否透明,0透明,1不透明,默认为不透明。name:标签对象的名称,是程序中访问标签对象的标识。,7.5.3 文本框(TextBox)控件,1文本框控件的功能:(1)用于显示或接收单行文本信息(不设置ControlSource属性),默认输入类型为字符型,最大长度为256个字符。(2)用于显示或编辑对应变量或字段的值(设置ControlSource属性为已有变量或字段名)。,ControlSource:设置文本框的数据来源。Value:保存文本框的当前内容,如果没有为ControlSource属性指定数据源,可以通过该属性访问文本框的内
17、容。它的初值决定文本框中值的类型。PassWordChar:设置输入口令时显示的字符。Readonly:确定文本框是否为只读,为“.T.”时,文本框的值不可修改。,2文本框控件常用属性,7.5.4 命令按钮(CommandButton)控件,1命令按钮控件功能命令按钮典型地用来启动某个事件代码、完成特定功能,如关闭表单、移动记录指针、打印报表等。,2命令按钮控件常用属性 Default:命令按钮的Default属性默认值为.F.,如果该属性设置为.T.,在该按钮所在的表单激活的情况下,按Enter,可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Default属性为真
18、。Cancel:命令按钮的Cancel属性默认值为.F.,如果设置为.T.,在该按钮所在的表单激活的情况下,按Esc键可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Cancel 属性为真。Caption:设置按钮的标题。Enabled:确定按钮是否有效,如果按钮的属性Enabled为.F.,单击该按钮不会引发该按钮的单击事件。对命令按钮的使用最重要的是编写Click事件代码。,【例】创建一个如图7-14所示的登录窗口,并将表单保存为FORM2。,在登录按钮的单击事件中输入如下代码:if thisform.text1.value=”user1”and thisform
19、.text2.value=”123456”messagebox(“欢迎使用本系统”)thisform.backcolor=rgb(255,128,128)else messagebox(“密码或用户名错误”)endif,计时器控件(timer)“计时器”控件主要是利用系统时钟来控制某些具有规律性、周期性任务的定时操作。“计时器”控件不能单独使用,必须与表单、容器类或者控件类一同使用。在设计时可见,在运行时不可见。,7.5.5 命令按钮组(CommandGroup)控件,1命令按钮组功能 命令按钮组是包含一组命令按钮的容器控件,用户可以单个或作为一组来操作其中的按钮。,Buttoncount:命
20、令按钮组中命令按钮的数目。Value:默认情况下,命令按钮组中的各个按钮被自动赋予了一个编号,如1,2,3,等,当运行表单时,一旦用户单击某个按钮,则Value将保存该按钮的编号,于是在程序中通过检测Value的值,就可以为相应的按钮编写特定的程序代码。,2命令按钮组常用属性,命令按钮组示例,实验书P70的第3题:设计一个背景变色表单。,This.parent.backcolor,Rgb()R:redG:greenB:blue,7.5.6 编辑框(EditBox)控件,1编辑框控件的功能用于显示或编辑多行文本信息。编辑框实际上是一个完整的简单字处理器,在编辑框中能够选择、剪切、粘贴以及复制正文
21、,可以实现自动换行,能够有自己的垂直滚动条。,ControlSource:设置编辑框的数据源,一般为数据表的备注字段。Value:保存编辑框中的内容,可以通过该属性来访问编辑框中的内容。Scrollbars:指定编辑框是否具有滚动条,当属性值为时,编辑框没有滚动条,当属性值为(默认值)时,编辑框包含垂直滚动条。,2编辑框常用属性,7.5.7 复选框(CheckBox)控件,1复选框的功能 用于标识一个两值状态,如真(.t.)或假(.f.)。当处于“真”状态时,复选框内显示一个对勾,当处于“假”状态时复选框内为空白。,Caption:用来显示复选框旁边的文字Value:用来指明复选框的当前状态,
22、如下表,if this.value=1thisform.label1.fontunderline=.t.elsethisform.label1.fontunderline=.f.Endif 文字格式变化,2复选框常用属性,7.5.8 选项组(OptionGroup)控件,1选项组控件的功能选项组又称为选项按钮组,是包含选项按钮的一种容器。一个选项组中往往包含若干个选项按钮,但用户只能从中选择一个按钮。当用户单击某个选项按钮时,该按钮即成为被选中状态,而选项组中的其他选项按钮,不管原来是什么状态,都变为未选中状态,被选中的选项按钮中会显示一个圆点。,2选项组常用属性 ButtonCount:指定
23、选项组中选项按钮的数目。Value:用于指定选项组中哪个选项按钮被选中。ControlSource:指定选项组数据源。Buttons:用于存取选项组中每个选项的数组。,n=this.valuedo casecase n=1thisform.label1.forecolor=rgb(255,0,0)case n=2thisform.label1.forecolor=rgb(0,255,0)case n=3thisform.label1.forecolor=rgb(0,0,255)case n=4thisform.label1.forecolor=rgb(255,255,255)case n=5t
24、hisform.label1.forecolor=rgb(int(rand()*255),int(rand()*255),int(rand()*255)Endcase 文字格式变化,7.5.9 列表框(ListBox)控件,1列表框的功能 列表框提供一组条目(数据项),用户可以从中选择一个或多个条目,一般情况下,列表框显示其中的若干条目,用户可以通过滚动条浏览其他条目。,2常用属性:RowSourceType属性指明列表框数据源的类型 RowSource属性指定列表框的数据源 ListCount属性:列表框中数据条目的数目 Value属性:返回列表框中被选中的条目 ListIndex:选定数据
25、项的索引值,3.常用方法:AddItem(数据项)添加列表框条目RemoveItem(索引值)删除列表框条目,【例】列表框的应用:按下图设计一个表单。,删除:thisform.list2.removeitem(thisform.list2.listindex),添加:thisform.list2.additem(thisform.list1.value),7.5.10 组合框(comboBox)控件,组合框:一个文本框和一个列表框的组合对下拉组合框,用户既可以从列表中选择,也可以在编辑区输入。,组合框和和列表框的主要区别在于:(1)对于组合框来说,通常只有一个条目是可见的。用户可以单击组合框上的下拉箭头按钮打开条目列表,以便从中选择。(2)组合框有两种形式:下拉组合框(Style属性为0)和下拉列表框(Style属性为2)。,2常用属性:RowSourceType属性指明列表框数据源的类型 RowSource属性指定列表框的数据源 Value属性:返回列表框中被选中的条目,组合框举例:文字格式变化,7.5.11 表格(Grid)控件,1表格控件的功能:表格控件用于浏览或编辑多行多列数据。,2表格控件常用属性RecordSourceType指明表格数据源的类型RecordSource属性指定数据的来源,表格举例:,