570 likes | 671 Views
数据库原理与应用. 非计算机应用专业教材. 浙江广播电视大学 李明 科学出版社. 学习目标. 了解面向对象、类和事件的相关概念 了解子类与继承相关概念 掌握表单创建、修改、运行的方法 掌握表单中的主要控件,包括标签、文本、按钮等控件. 目 录. 8.1 面向对象的概念 8.2 Visual FoxPro 基类的简介 8.3 创建表单 8.4 修改表单 8.5 运行表单 8.6 表单控件. 8.1 面向对象的概念. 8.1. 对象与类 对象和类是面向对象的两个最基本概念。 1 .对象( Object )
E N D
数据库原理与应用 非计算机应用专业教材 浙江广播电视大学 李明 科学出版社
学习目标 • 了解面向对象、类和事件的相关概念 • 了解子类与继承相关概念 • 掌握表单创建、修改、运行的方法 • 掌握表单中的主要控件,包括标签、文本、按钮等控件
目 录 • 8.1 面向对象的概念 • 8.2 Visual FoxPro基类的简介 • 8.3 创建表单 • 8.4 修改表单 • 8.5 运行表单 • 8.6 表单控件
8.1 面向对象的概念 • 8.1. 对象与类 • 对象和类是面向对象的两个最基本概念。 • 1.对象(Object) • 客观世界里的任何实体都可以被看作是对象。对象可以是具体的物,也可以指某些概念,如一个班级、一个学生、一台计算机、一个Visual FoxPro表单都可看作一个对象。每个对象都具有一定的属性和状态,如一个班级有30名学生、一台计算机配有一个显示器等;每个对象同时具有自己的行为和方法,如每个学生到期末要参加考试、每个表单在程序开始时启动。
2.类(Class) • 类是对一类相似对象的性质描述,这些对象具有相同种类的属性以及方法。类和对象是两个不同的概念,类如同是一类对象的模板,类确定之后,基于类就可以生成这类对象中的任何一个对象,每个对象拥有相同的属性来表示对象状态,但对象状态的取值可以不同,因此一个对象相当于一个类的一个实例。
8.1.2 子类与继承 • 在面向对象的方法里,继承是指在基于现有的类创建新类时,新类继承了现有类里的方法和属性。此外,可以为新类添加新的方法和属性。我们把新类称为现有类的子类,而把现有类称为新类的父类。 • 一个子类的成员一般包括: • 1)继承的属性和方法。 • 2)由子类自己定义的属性和方法。
用CREATEOBJECT函数来直接生成基于某个类的对象。该函数的格式如下:用CREATEOBJECT函数来直接生成基于某个类的对象。该函数的格式如下: • CREATEOBJECT(<类名>[,<参数1>,<参数 2>,……]) • 对象属性访问以及对象方法调用可采用如下语句: • <对象引用>,<对象属性>或<对象引用>,<对象方法>[(参数列表)]
例8.1 基于Visual FoxPro的FORM类生成一个对象,然后访问该对象的一些属性和方法。 • Oform=CREATEOBJECT(“Form”)&&生成一个空白表单 • Oform.show &&显示表单 • Oform.caption="演示"&&修改表单的标题 • ?“这是一个生成对象的演示程序“&&在表单上输出字符串 • Oform.release
8.2.2 容器与控件 • Visual FoxPro中的类一般可分为两种类型:容器类和控件类。相应地,可分别生成容器(对象)和控件(对象)。 • 容器对象的引用主要分为两大类: • 1)绝对引用:从最高容器开始逐层向下直到某个对象为止的引用称为绝对引用。 • 2)相对引用:从正在为编写事件代码的对象出发,通过逐层向高一层或低一层直到另一对象的引用称为相对引用。
8.2.3 事 件 • 事件是一种由系统预先定义而由用户或系统发出的动作。事件作用于对象,对象识别事件并作出相应反应。事件可以由系统引发,如生成对象时,系统就引发一个Init事件,对象识别该事件,执行相应的Init事件代码;事件也可以由用户引发,如用户用鼠标单击程序界面上的一个命令按钮就引发了一个Click事件,命令按钮识别该事件并执行相应的Click事件代码。
8.3 创建表单 • 表单(Form)是Visual FoxPro提供的用于建立应用程序界面的最主要的工具之一,相当于WINDOWS应用程序的窗口。表单可以属于某个项目,也可以游离于任何项目之外,它是一个特殊的磁盘文件,其扩展名为scx。 • 创建表单一般有两种途径: • 1)使用表单向导创建简易的数据表单。 • 2)使用表单设计器创建或修改任何形式的表单
1.使用表单向导创建表单 • 启动表单向导有以下4种途径: • 1)打开“项目管理器”,选择“文档”选项卡,从中选择“表单”。然后,单击“新建”按钮。在弹出的“新建表单”对话框中单击“表单向导”按钮。 • 2)在系统菜单中选择“文件”中的“新建”命令,或者单击工具栏上的“新建”按钮,打开“新建”对话框,在文件类型栏中选择“表单”。然后,单击“向导”按钮。
3)在系统菜单中选择“工具”下的“向导”命令,选择该命令中的“表单”命令。3)在系统菜单中选择“工具”下的“向导”命令,选择该命令中的“表单”命令。 • 4)直接单击常用工具栏上的“表单向导”图标按钮。按步骤依照“表单向导”完成一对多表表单的设计。
2.使用表单设计器创建表单 • 启动表单设计器主要有3种方法: • 1)菜单方法:若是新建表单,在系统菜单中选择“文件”的“新建”命令,在文件类型对话框中选择“表单”,单击“新建文件”按钮;若是修改表单,则选择“文件”的“打开”命令,在打开对话框中选择要修改的表单文件名,单击“打开”按钮。
2)命令方法:在COMMAND窗口输入如下命令: • CREATE FORM <文件名> &创建新的表单。 • 3)项目管理器方法:在“项目管理器”窗口中选择“文档”标签,然后选择“表单”图标,单击“新建”按钮,系统弹出“新建表单”对话框,单击“新建表单”图标按钮。
8.4 修改表单 • 1)菜单方法:选择“文件”菜单里的“打开”命令,然后在“打开”对话框中选择需要修改的表单文件。 • 2)命令方法:在命令窗口输入命令MODIFY FORM<表单文件名>。
8.5 运行表单 • 在设计时可采用以下方法运行表单文件: • 1)在项目管理器窗口中,选择要运行的表单,然后单击“运行”按钮。 • 2)在表单设计器窗口中,在系统菜单中选择“表单”中的“执行表单”命令,或单击常用工具栏上的“运行”按钮。
3)菜单中选择“程序”中的“运行”命令,打开“运行”对话框,然后在运行对话框中选择要运行的表单文件,单击“运行”按钮。3)菜单中选择“程序”中的“运行”命令,打开“运行”对话框,然后在运行对话框中选择要运行的表单文件,单击“运行”按钮。 • 4)在命令窗口输入命令:DO FORM <表单文件名> 。
在表单上添加或修改控件对象一般使用表单控件工具栏,如图8.3所示。为了便于说明,先给出图8.3中从左到右的工具按钮的简单功能描述,下文将较为详细地介绍主要控件的特点。在表单上添加或修改控件对象一般使用表单控件工具栏,如图8.3所示。为了便于说明,先给出图8.3中从左到右的工具按钮的简单功能描述,下文将较为详细地介绍主要控件的特点。
8.6.1 标签控件 • 1.标签控件的功能 • 标签主要用于显示固定的文本信息。 • 2.标签控件常用属性 • Caption:指定标签的显示文本。 • Autosize:Autosize如果为真,标签在表单中的大小由Caption属性中的文本长度决定,否则其大小由WIDTH和HEIGHT属性决定。 • Forecolor:设置标题的字体颜色。 • Backstyle:设置标签的背景是否透明,0-透明,1-不透明,默认为不透明。 • Name :标签对象的名称,是程序中访问标签对象的标识。
8.6.2 文本框控件 • 1.文本框控件的功能 • 1)用于显示或接收单行文本信息(不设置ControlSource属性),默认输入类型为字符型,最大长度为256个字符。 • 2)用于显示或编辑对应变量或字段的值(设置ControlSource属性为已有变量或字段名)。
2.文本框控件常用属性 • ControlSource:设置文本框的数据来源。一般情况下,可以利用该属性为文本框指定一个字段或内存变量。 • Value:保存文本框的当前内容,如果没有为ControlSource属性指定数据源,可以通过该属性访问文本框的内容。它的初值决定文本框中值的类型。如果为ControlSource属性指定了数据源,该属性值与ControlSource属性指定的变量或字段的值相同。 • PassWordChar:设置输入口令时显示的字符。 • Readonly:确定文本框是否为只读,为“.T.”时,文本框的值不可修改。
8.6.3 命令按钮控件 • 1.命令按钮控件功能 • 命令按钮典型地用来启动某个事件代码、完成特定功能,如关闭表单、移动记录指针、打印报表等。 • 2.命令按钮控件常用属性 • Default:命令按钮的Default属性默认值为.F.,如果该属性设置为.T.,则在该按钮所在的表单激活的情况下,按Enter,可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Default属性为真。
Cancel:命令按钮的Cancel属性默认值为.F.,如果设置为.T.,在该按钮所在的表单激活的情况下,按Esc键可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Cancel属性为真。Cancel:命令按钮的Cancel属性默认值为.F.,如果设置为.T.,在该按钮所在的表单激活的情况下,按Esc键可以激活该按钮,并执行该按钮的Click事件代码。一个表单只能有一个按钮的Cancel属性为真。 • Caption:设置按钮的标题。 • Enable:确定按钮是否有效,如果按钮的属性Enable为.F.,单击该按钮不会引发该按钮的单击事件。 • 对命令按钮的使用最重要的是编写Click事件代码。
例8.2 创建一个如图8.5所示的登录窗口,并将表单保存为FORM2。
在确定按钮的单击事件中输入如下代码: • if thisform.text1.value="user1“ and thisform.text2.value="123456" • do form mainform • form2.release • else • messagebox("密码或用户名错误",0,"提示") • endif
在取消按钮的单击事件中输入如下代码: • nAnswer=messagebox("你决定退出系统吗?",4,"提示") • DO CASE • CASE nAnswer = 6 • thisform.release • CASE nAnswer = 7 • messagebox("请输入用户名和密码",0,"提示") • ENDCASE
8.6.4 编辑框控件 • 1.编辑框控件的功能 • 用于显示或编辑多行文本信息。编辑框实际上是一个完整的简单字处理器,在编辑框中能够选择、剪切、粘贴以及复制正文,可以实现自动换行,能够有自己的垂直滚动条。
2.编辑框常用属性 • ControlSource:设置编辑框的数据源,一般为数据表的备注字段。 • Value:保存编辑框中的内容,可以通过该属性来访问编辑框中的内容。 • SelText:返回用户在编辑区内选定的文本,如果没有选定任何文本,则返回空串。 • SelLength:返回用户在文本输入区中所选定字符的数目。 • Readonly:确定用户是否能修改编辑框中的内容。 • Scroolbars:指定编辑框是否具有滚动条,当属性值为0时,编辑框没有滚动条;当属性值为1时,编辑框包含水平滚动条;当属性值为2(默认值)时,编辑框包含垂直滚动条。
8.6.5 单选按钮控件 • 1.单选框的功能 • 用于标识一组选项按钮的选中状态,即选项组按钮控件。一组选项按钮中,仅有一个按钮在某一时刻被选中。 • 2.单选框常用属性 • Value:用来指定第几个选项被选中,如2表示第二个选项被选中。 • ButtonCount:用来指定选项组的可选按钮数量,如2表示有两个按钮可供选择。
8.6.6 复选按钮控件 • 1.复选框的功能 • 用于标识一个两值状态,真(.t.)或假(.f.)。当处于“真”状态时,复选框内显示一个对勾,当处于“假”状态时复选框内为空白。 • 2.复选框常用属性 • Value:用来指明复选框的当前状态,如表8.6所示。 • ControlSource属性:用于指定复选框的数据源。
8.6.7 列表框控件 • 1.列表框的功能 • 列表框提供一组条目(数据项),用户可以从中选择一个或多个条目,一般情况下,列表框显示其中的若干条目,用户可以通过滚动条浏览其他条目。
2.选项组常用属性 • RowSourceType属性与RowSource属性:RowSourceType属性指明列表框数据源的类型,RowSource属性指定列表框的数据源。 • List属性:用以存取列表框中数据条目的字符串数组。例如,LIST[1]代表列表框中的第一行(第一个数据项)。 • ListCount属性:列表框中数据条目的数目。 • ColumnCount属性:指定列表框的列数。 • Value属性:返回列表框中被选中的条目。
ControlSource属性:该属性在列表框中的用法与在其他控件中的用法有所不同,在这里,用户可以通过该属性指定一个字段或变量用以保存用户从列表框中选择的结果。ControlSource属性:该属性在列表框中的用法与在其他控件中的用法有所不同,在这里,用户可以通过该属性指定一个字段或变量用以保存用户从列表框中选择的结果。 • Selected属性:该属性是一个逻辑型数组,第N个数组元素代表第N个数据项是否为选定状态。 • MultiSelect属性:指定用户能否在列表框控件内进行多重选定。
例8.3 列表框的应用:按如图8.6所示设计一个表单。要求表单运行时,LIST1列表框显示STUD表的所有字段,单击左箭头按钮时,LIST1中选择的字段加入到LIST2中。
操作步骤: • 1)按如图8.7所示在表单中加入二个列表框、二个标签、二个命令按钮。 • 2)在表单的INIT事件中加入如下代码: • thisform.list1.value=0 • thisform.list2.value=0 • open database student • use stud • for i=1 to fcount() • thisform.list1.additem(fields(i)) • next • close database
(3)在左箭头按钮(COMMAND1)的CLICK事件中加入如下代码:(3)在左箭头按钮(COMMAND1)的CLICK事件中加入如下代码: • thisform.list2.addlistitem(thisform.list1.listitem[thisform.list1.value]) • thisform.list1.removeitem[thisform.list1.value] • 右箭头按钮(COMMAND2)的CLICK事件代码请读者自己编写。
8.6.8 组合框控件 • 组合框与列表框类似,也是用于提供一组条目供用户从中选择,组合框和和列表框的主要区别在于: • 1)对于组合框来说,通常只有一个条目是可见的。用户可以单击组合框上的下拉箭头按钮打开条目列表,以便从中选择。
2)组合框不提供多重选择的功能,没有MultiSelect属性。2)组合框不提供多重选择的功能,没有MultiSelect属性。 • 3)组合框有两种形式:下拉组合框(Style属性为0)和下拉列表框(Style属性为2)。对下拉组合框,用户既可以从列表中选择,也可以在编辑区输入。对下拉列表框,用户只可从列表中选择。
8.6.9 表格控件 • 1.表格控件的功能 • 表格控件用于浏览或编辑多行多列数据。
2.表格控件常用属性 • RecordSourceType和RecordSource属性:RecordSourceType指明表格数据源的类型,RecordSource属性指定数据的来源。 • ColumnCount:指定表格的列数。 • LinkMaster:用于指定表格控件中所显示的子表的父表名称。 • ChildOrader:指定子表的索引。 • RelationalExpr:确定基于主表字段的关联表达式。 • AllowAddNew:若为真,运行时允许添加新记录;否则,不能添加新记录。 • AllowRowSizing:若为真,运行时用户可改变行高。 • AllowHeaderSizing:若为真,运行时用户可改变列宽。
3.常用的列属性 • ControlSource:指定在列中显示的数据源。 • CurrentControl:指定列对象中显示和接收数据的控件。 • Sparse:用于确定CurrentControl属性影响列中的所有单元格还是只影响活动单元格。 • 注意:设计时要设置列对象的属性,首先得选择列对象,选择列对象有两种方法: • 1)从属性窗口的对象列表中选择相应列。 • 2)右击表格,在弹出的快捷菜单中选择“编辑”命令,这时表格进入编辑状态(表格的周围有一个粗框),读者可单击选择列对象。
4.常用的标头(Header)属性 • 列标头也是一个对象,有它自己的属性、方法和事件,设计时要设置标头对象的属性,首先得选择标头对象,选择标头对象的方法与选择列对象的方法类似。 • Caption属性:指定标头对象的标题文本,显示于列顶部。默认为对应字段的字段名。 • Alignment属性:指定标题文本在对象中显示的对齐方式。 • 5.调整表格的行高和列宽 • 一旦指定了表格的列的具体数目,就可以有两种方法来调整表格的行高和列宽。 • 1)设置表格的HeaderHeight和RowHeight属性调整行高,设置列对象的Width属性调整列宽。
6.使用表格生成器设计表格 • 用鼠标左键右击表格,在弹出的快捷菜单中选择“生成器”命令,打开“表格生成器”对话框,如图8.7所示。