《第七章 表单课件》由会员分享,可在线阅读,更多相关《第七章 表单课件(176页珍藏版)》请在金锄头文库上搜索。
1、封面,表单是数据库应用系统的主要工作界面。它提供给用户一个友好的操作界面,用于数据的输入、修改、浏览和查询,以及系统流程的控制。表单的设计是进行面向对象可视化编程的基础,表单设计,7.1 面向对象基本概念,面向对象程序设计(Objec-Oriented Programming)是一种新的程序设计方法,是当前程序设计的主流方向。 面向对象程序设计,侧重考虑如何将一个复杂的应用程序分解成简单的对象,然后创建对象,定义每个对象的属性和行为。,面向对象基本概念,客观世界里的任何实体都可以被看作是对象。例如,一本图书、一名学生、一辆汽车、一部手机等,都可以将其作为一个对象。 在VFP中,如图7.1所示,
2、表单上的容器、组合框、标签、文本框、命令按钮等都是对象。甚至表单本身也是一个对象。它们具有自己的状态和行为。 对象的状态用数据来表示,称为属性。对象的行为用代码来实现,称为对象的方法。在面向对象的程序设计中,对象被定义为由属性和相关方法组成的包。,7.1.1 对象,对象,每个对象都有自己的属性,属性是用来表示它的外观和描述它的特征。例如,一部手机是一个对象,手机的颜色是白色的、滑盖式样、重量100克、有摄像头就是它的属性。 在VFP中,表单的宽度是420象素,高度是300象素,标题是系统登录,背景色为灰色,就是此表单的属性。一般来说,VFP中对象的大部分属性都采用系统设置的默认值,只有部分属性
3、需要用户设置。,对象的属性,所谓事件,是由VFP预先定义好的,能够被对象识别的、用户或系统触发的一个特定动作。 事件可以由系统触发,例如,当生成对象时,系统就引发一个Init事件,对象识别该事件并执行相应的Init事件代码。 事件也可以由用户触发,例如,当用户用鼠标单击命令按钮,命令按钮识别该事件,并执行相应的Click事件代码。,对象的事件,用户可以为对象的事件编写相应的过程。该事件一旦被触发,系统就马上执行与该事件对应的过程。待事件过程执行完毕,系统又处于等待某事件发生的状态,这就是面向对象编程的事件驱动工作方式。 如果用户没有为触发的事件编写程序,则事件发生时系统不会发生任何操作。 除了
4、由用户或系统触发,也可以在程序中编写代码来触发对象的事件。,对象的事件,方法是附属于对象的行为和动作,是与对象相关联的过程,是对象能够执行的操作。 例如,手机的拨打、接听、照相、发短信等操作,就是系统为手机对象设定的方法。 在VFP中,方法程序是VFP为对象内定的通用过程,能使对象执行一个操作。例如,表单的Release方法就是从内存中释放表单,Refresh方法就是重画表单,刷新所有的值。,对象的方法,方法过程代码由VFP预先定义,对用户是不可见的,但用户可以在代码窗口修改方法过程。当用户在代码编辑窗口写入代码,相当于为该方法程序增加了功能,而VFP为该方法程序定义的原有功能并不清除。,对象
5、的方法,编写程序实现以下功能:数据库中用户表如图7.2所示,该数据表有用户名和密码两个字段,记录了使用该系统的用户信息。在如图7.1所示的系统登录表单中,当用户单击“登录”按钮时,系统检查用户在组合框选择的用户名和文本框输入的密码是否正确。若密码正确,则执行表单“主界面”;若密码错误,则提示用户密码错误,并将文本框的文本清除,将光标定位到此文本框。 已知,此表单中,表单的名称为Form1,容器的名称为Container1,用户名的组合框的名称为Combo1,输入密码的文本框的名称为Text1。,例题:属性、事件、方法实例,IF 密码= ALLT(THISFORM.Container1.Text
6、1.VALUE) &判断文本框输入的密码与数据表中的密码是否相同 Thisform.RELEASE &若找到符合条件的记录,调用表单的Release方法,释放此表单 DO FORM 主界面 &运行主界面表单 ELSE MESSAGEBOX(密码错误,0+16+0) &否则,打开对话框显示提示信息 Thisform.Container1.Text1.VALUE= &将Text1文本框的值的属性设为空字符,即清除文本框中输入的密码 Thisform.Container1.Text1.SETFOCUS&调用Text1文本框的Setfocus方法,将光标定位到此控件 ENDIF,例题:属性、事件、方法
7、实例,类是具有相同种类的属性和方法的对象的抽象。 类和对象关系密切,但并不相同。类是用来创建对象的模板,而对象是类的实例。 Visual FoxPro提供了一系列基本对象类,简称基类。用户可以在基类的基础上创建各种所需的对象,还可以在基类的基础上创建自己的子类。 Visual FoxPro的基类分成两大类:容器类和控件类。,7.1.2 VFP基类简介,控件通常存在一个容器内,是一个图形化的、能与用户进行交互的对象。,控件类,容器类对象是可以容纳其他对象的对象,用户可以单独地访问或处理容器中包含的任一个对象。,容器类,在面向对象的程序设计中,对某个对象的操作是通过对该对象的引用来实现的。 访问对
8、象的属性采用.的形式,调用对象的方法采用.的形式。,7.1.3 对象的引用,对象的引用有两种方式:绝对引用和相对引用。 绝对引用是从外层的容器对象开始逐层向下直到某个对象为止。例如,在例7.1中,绝对引用文本框Text1的方式为:Form1.Contianer1.Text1。 相对引用是从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到要引用的对象。,对象的引用,例如,在表单中相对引用文本框Text1的方式为This. Contianer1.Text1, 在容器中相对引用文本框Text1的方式为This.Text1。在命令按钮中相对引用文本框Text1的方式为This.Parent.
9、Text1。 当然,表单中的任何对象要相对引用文本框Text1,都可使用 Thisform. Contianer1.Text1。,对象的引用,7.2 表单的建立与运行,在VFP中,创建表单通常有两种途径:使用表单向导或使用表单设计器创建表单。 不管使用哪种方法建立表单,在磁盘上会产生一个扩展名为SCX的表单文件和一个扩展名为SCT的表单备注文件。,表单的建立与运行,表单向导是以简单的方式,引导用户快捷地建立表单。用户只需要依次回答对话框中一系列简单的问题,就可以自动地创建一个表单。表单中包含一些控件显示数据表中的数据,还提供按钮以实现对数据的浏览、查找、添加、编辑和删除等操作。,使用表单向导创
10、建表单,在TSGL项目中使用表单向导创建一个能维护读者表的表单。,例题,通过菜单修改表单,修改表单,通过项目管理器修改表单,命令修改表单 MODIFY FORM ,启动表单设计器后运行表单,运行表单,通过项目管理器运行表单,通过菜单运行表单,DO FORM WITH ,如果有WITH短语,则在运行表单时,系统会将各实参的值传递给表单的Init事件代码中用Parameters所定义的形式参数。 表单运行时,可以通过单击“常用”工具栏的“修改表单”按钮,切换到表单设计器窗口来修改表单。,通过命令运行表单,7.3 表单设计器,建立表单的步骤,启动表单设计器,通过项目管理器建立表单,通过菜单建立表单,
11、通过命令建立建立表单 CREATE FORM ,启动表单设计器,设置数据环境,每一个表单都可以设置自己的数据环境。 数据环境中包含表单所需要的一些数据表或视图以及表之间的关联。 通常情况下,数据环境中的数据表或视图会随着表单的运行而打开,并随着表单的释放而关闭。 设置数据环境后,用户还可以直观地设置表单控件中与数据相关的属性。,在表单设计器上按鼠标右键,选择数据环境命令 单击表单设计器工具栏上的数据环境按钮,设置数据环境,在数据环境中添加表或视图 从数据环境中移去表或视图 在数据环境中设置表的关联,设置数据环境,在TSGL项目中建立一个表单,在此表单的数据环境中添加“用户”数据表。,例题,向表
12、单中添加控件,在表单控件工具栏中单击需要的控件按钮,将鼠标指针移动到表单上,然后单击表单放置控件或把控件拖至所需大小即可,向表单中添加控件,在例7.3所建立的表单中,建立一个容器对象。在容器对象中建立两个标签,一个文本框,一个组合框和两个命令按钮。,例题,选定控件 选定一个控件 选定多个控件 取消控件的选定 调整控件大小 移动控件 删除控件 复制控件,控件的基本操作,控件的布局,控件的TAB键次序,所谓Tab键次序,就是运行表单时按Tab键时光标经过表单中控件的顺序。表单控件的默认Tab 键次序是控件添加到表单时的次序。 单击“表单控件”工具栏的 “设置Tab 键次序”按钮 ;或选择“显示”菜
13、单的“Tab 键次序”命令 鼠标指向在表单运行时应第一个具有焦点的控件,双击此控件,则此控件的Tab键顺序被设置为1。 按运行时所要求的Tab 键次序,依次单击其他控件。 单击控件外的任何地方,完成设置。,为表单和控件设置属性,在设计表单时,当用户要设置表单或控件的属性,应在属性窗口进行。,在表单设计器上按鼠标右键,选择属性命令 单击表单设计器工具栏上的属性按钮,设置属性,设置属性,在例7.4所建立的表单中,将表单的标题设为“系统登录”,宽度设为420,高度设为300。将标签1的标题设为“用户”,标签2标题设为“密码”,命令按钮1标题设为“登录”,命令按钮2标题设为“退出”。将四个控件的字号设
14、为12,加粗,自动大小。将组合框的源数据设为来源于用户数据表的用户名字段,文本框的显示字符设为“*”。,例题,常用的表单属性,常用的表单属性,数据环境的属性,为表单和控件编写代码,打开代码窗口,在表单设计器窗口中,右击鼠标,在快捷菜单中选择“代码”命令 在表单或其他对象上双击鼠标 单击“表单设计器”工具栏的“代码窗口”按钮 选择“显示”菜单的“代码”命令 在属性窗口中选择“方法程序”选项,在“属性列表”中双击,打开代码窗口,在例7.4所建立的表单中,对表单的Init事件编写代码,使组合框的值为用户数据表中第一条记录的用户名。对“登录”按钮的Click事件编写代码,代码内容如例7.1所示。对“退
15、出”按钮的Click事件编写代码,释放表单。,例题,表单常用的事件,表单常用的事件,在表单运行时,首先触发Load事件。由于此时其他对象还未建立,在Load事件的代码中不能引用表单中其他的控件对象。然后,触发Init事件。系统先触发表单中各个控件的Init事件,再触发表单的Init事件。 在表单关闭时,首先触发表单的Destroy事件,再触发表单中各个控件的Destroy事件,最后触发表单的Unload事件。,表单常用的方法,Show:显示表单,使表单可见,并成为活动对象 Hide:隐藏表单,使表单不可见。 Release:将表单从内存释放。 Refresh:刷新表单。重新绘制表单或控件,并刷
16、新它的所有值。当表单被刷新时,表单上的所有控件都被刷新。表单上的控件也有刷新方法。,在表单中快速添加数据绑定控件,表单上添加与数据绑定的控件,表单上的控件通常分为两类:没有与数据表的字段绑定的控件和与数据表的字段绑定的控件。 对于与数据表的字段绑定的控件,在运行表单时,该控件会显示数据表的指定字段的值。若用户修改控件的值,被修改的值将会保存到数据表中。,表单常用的方法,在表单中建立与数据表的字段绑定的控件有两种方法。 一种是通过“表单控件”工具栏建立一个控件(例如文本框、组合框),再将此控件的ControlSource属性设置为数据表的字段。对于表格对象,则将表格的RecordSource属性设置为数据表。,表单常用的方法,还有一种快捷方便的方法, 在设计表单时,直接将数据环境的字段拖动到表单中。如果拖动的是字符型或数值型字段,系统将在表单中产生一个文本框控件,并自动把文本框控件与拖动的字段绑定在一起。如果拖动的是备注型字段,系统将产