800 likes | 938 Views
第七章 表单设计与应用 . 1. 面向对象的概念. 2. 创建表单. 3. 常用表单控件. 4. 综合应用. 目录. 7.1 面向对象的概念 . 当前计算机程序设计基本上可以分为两种:一种是前面第六章所讲的结构化程序设计。在结构化程序设计中,程序的开发者处于完全支配状态。程序执行的流程遵从程序员预先规定的路径。程序的开发者把一个待求解的问题自上到下进行分解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。
E N D
1 面向对象的概念 2 创建表单 3 常用表单控件 4 综合应用 目录 Visual FoxPro程序设计
7.1 面向对象的概念 • 当前计算机程序设计基本上可以分为两种:一种是前面第六章所讲的结构化程序设计。在结构化程序设计中,程序的开发者处于完全支配状态。程序执行的流程遵从程序员预先规定的路径。程序的开发者把一个待求解的问题自上到下进行分解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。 • 另一种方法就是面向对象的分析与设计。在面向对象的程序设计(Object-Oriented Programming)中,对象是组成程序的构件,就好像是在面向过程的结构化程序设计方法中的子程序和函数一样。在面向对象的程序设计方法中,程序设计人员不是完全按照过程对求解问题进行分解,而是按照面向对象的观点来描述问题、分解问题,最后选择一种支持面向对象方法的程序语言来解决问题。在这种方法中,设计人员直接用一种称之为“对象”的程序构件来描述客观问题中的“实体”,并用“对象”间的“消息”来模拟实体间的联系,这样讲“对象”有机的结合在一起,便构成了面向对象的应用程序。 Visual FoxPro程序设计
7.1.1 对象与类 • 一、对象(Object) • 客观世界里的任何实体都可以被看作是对象。每个对象都具有其区别其它对象的独特存在状态和客观行为。对象可以是现实世界中的任何物体,例如一辆汽车、一张桌子、一台计算机,也可以指某些概念。对象都具有一定的属性、特征,并可以产生一定的行为。属性实际上就是描述该对象的一系列数据,如一张桌子有材料、规格、尺寸、颜色等描述数据。而行为则是对该对象施加的操作,如对一张桌子要进行放置、擦洗等动态操作行为。 • 在Visual FoxPro中,表单是对象,标签是对象,命令按钮是对象,界面上几乎所有事物都是对象,每个对象都有自己的属性和方法。一个对象具有状态、行为和标识,对象的状态包括它的属性和这些属性的当前值。 Visual FoxPro程序设计
7.1.1 对象与类 • 二、类(Class) • “类”是具有相同属性特性和行为规则的 “对象”的集合。从程序设计的角度来讲,“类”是一个数据模式和若干个程序过程经过封装而形成的一个整体,它是对现实世界的一种模拟与抽象,类就象是一类对象的模板,而“对象”则是“类”的一个具体实例,“类”的功能只有通过产生一个对象并且引用该对象才能实现。例如:可以把“球”看作是一个类。它具有“种类”、“形状”等特性,以及进行运动、游戏等操作。每一个具体的“篮球”、“足球”都可以看作是“球”类中的对象。 • 类决定了对象的特征,所有对象的属性、事件和方法程序在定义类时被指定。有了类的定义后,就可以基于类生成这类对象的任何一个对象。由同一个类生成的对象虽然采用了相同的属性来表示对象的状态,但它们的属性取值可以完全不同,因而它们有着不同的状态,彼此保持相对独立。 Visual FoxPro程序设计
7.1.1 对象与类 • 三、类的特点 • 1.封装性 • 类的封装性是指将类的特性及其方法程序加以隐蔽,全部封装在类的内部,不让其复杂性暴露在外面。程序开发人员在使用类时无需知道类中的具体技术代码,不用对它进行控制和干预,只需直接使用从类派生出来的对象即可。 • 2.继承性 • 继承是面向对象中的一个重要概念,是指在基于现有的类创建新类时,新类继承了现有的类的属性和方法,此外,新类中还可以有自己所特有的新的属性和方法。它表达了从一般到特殊的进化过程。在使用子类或对象时,可以直接调用父类的属性和方法。对父类的修改可以影响其所有的子类,这种自动更新机制大大节省了开发人员的时间和精力,减少了维护代码的难度。 • 3.多态性 • 多态性是指允许不同类的对象对同一消息作出响应。也就是说,在类等级中的不同层次可以共享(公用)一个方法名,但不同层次中的各个类却各自按照自己的需要来实现这个方法。 Visual FoxPro程序设计
7.1.2 Visual FoxPro中的类与对象 • 一、基类与子类 • Visual FoxPro为了方便用户使用,提供了大量已经定义的类,这些类称为基类。每个基类都有自己的属性、事件和方法。用户很容易从基类中生成一个类,从基类派生出来的类称为子类,也称作自定义类。基类称为父类。一个子类还可以作为父类进一步派生出新的子类。类还可以细化为子类,就像“球”可以派生出“大球”子类和“小球”子类,而“球”是这两个子类的父类。“大球”还可以派生出“篮球”、“足球”等。一个子类可以继承父类中的全部功能,还可以在此基础上添加新的属性和方法。 Visual FoxPro程序设计
7.1.2 Visual FoxPro中的类与对象 • 二、容器与控件 • Visual FoxPro中的基类分为两大类型:容器类和控件类。 • (1)容器类 • 容器类可以包含其他对象,并且允许访问这些对象。无论在设计时刻还是在运行时刻,容器类对象和它所包含的对象都被当作一个独立的对象进行操作。在对象的层次中,容器中被包含的对象处于容器对象的下一层。表7-1 Visual FoxPro的容器类和能包含的对象 • 容器能包含的对象容器(Container) 任意控件表单集(FonnSet) 表单、工具栏表单(Form) 页框、任意控件、容器或自定义对象表格(Odd) 表格列表格列(Column) 表头和除表单集、表单、工具栏、计时器和其他以外的其余对象页框(PageFrame)页面页面(Page) 任意拄件、容器和自定义对象工具栏(ToolBar) 任意控件、页框和容器选项按钮组(OptionButtonCn'oup) 选项按钮命令按钮组(CommandButtonGroup) 命令按钮(2)控件类 • 控件类是一个相对独立的整体,不能包含其他对象。包括标签、文本框、编辑框、命令按钮、复选框、列表框、组合框、微调按钮、图像、计时器、ActiveX控件、线条、形状和分页符等。控件类比容器类封装得更为严密,但也因此丧失了一些灵活性。 Visual FoxPro程序设计
7.1.2 Visual FoxPro中的类与对象 • (3)对象的引用层次 • 对象之间包含与被包含的关系,产生了对象的层次关系,这与类的层次概念是不同的。类的层次关系体现了类之间继承与被继承的关系,对象的层次关系体现了包含与被包含的关系。容器内的对象还可以再作为其他对象的容器,不同的容器所能包含的对象也不同。 • 在面向对象程序设计时,往往要引用容器中某个特定对象,这时就要,就要指明对象在容器嵌套层次中的位置,引用格式中用点“.”分隔。 • 对象的引用有两种方式:绝对引用和相对引用。绝对引用:指从最上层开始,一层层向下,提供完整的对象地址。 • 【例7-1】设置图中命令按钮Commandl的标题为“退出” • 程序代码: • Formset.Form.commandgroup.commandI.caption="退出” • 即表单集.表单.命令按钮组.命令按钮1.caption="退出” • 相对引用对象:从当前对象出发,逐层向高一层或低一层起到另一对象的引用称为相对引用。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 1.属性(Attribute) • 属性即对象的特性,是对象的外观及行为的特征。例如一辆汽车的大小、颜色、品牌,汽车的停止和行驶的两种状态,这些都是一辆汽车的属性。基本属性是在相应的类中定义好的,当然每个对象也有自己的一些特性,例如同样是轿车,有的可以自动换档,有的只能手工换档。 • 在Visual FoxPro中,各种对象具有70多个属性,如对象的标题(Caption)、文字的对齐方式(Alignment)等就是对象的属性。 • 从功能上看,各种对象的属性可以分为布局和修饰属性、数据属性、状态属性和其他属性四大类。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 属性值既能在设计时、也能在运行时进行设置。在设计时对对象进行属性设置是通过属性窗口完成的,而在运行时对对象进行属性设置是通过编制程序代码并将之放在事件代码或方法代码中完成的。 • 在程序中设置或修改属性的命令格式: • Container.Object.Property=Value • 即:容器.对象.属性=属性值 • 在程序中引用属性值的命令格式: • 变量名=[表单集名.]表单名.属性名 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 2.事件(Event) • 事件是对象可以识别和响应的行为与操作,由用户或者系统激活,用户可以编写相应的代码对此进行响应。一个事件有一个事件名,一个事件与一个事件程序相关联,当作用在一个对象上的事件发生时,与这个事件相关联的程序就获得一次运行。例如,事件可以由用户的一个动作产生,如单击鼠标或按下一个键盘按键;也可以由于程序代码或系统产生,如计数器溢出事件等。 • 在Visual FoxPro中事件集是固定的,用户不能再创建新的事件。对象可以响应系统提供的50多个事件,有的事件具有通用性,多个控件都能触发,如Click事件;有的事件只适用于专门的控件,如Interactivechange事件只适应用于列表框和组合框。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 编写事件代码时注意两条原则: • (1)每个对象独立地接收自己的事件; • (2)容器事件和控件事件互相独立。只要控件本身编写事件代码,无论是一般容器还是组容器,都先执行控件自己的事件代码;如果控件本身没有编写事件代码,且控件是在组容器中,执行父容器的同名事件代码,如果控件是在一般容器中,则控件不执行任何操作。 • 注:组容器指的是命令按钮组和选项按钮组。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 3.方法(Method) • 方法是对象可以执行的动作,是封装在对象内部的,在任何时候都不能独立存在于对象之外。例如,对表单对象打开(open)和关闭(close)的操作是表单所具有的方法。用户无需再自己编写打开和关闭的程序代码。表单所具有的内置的代码或缺省的代码将告诉Visual FoxPro如何打开和关闭它们。在Visual FoxPro中提供了50多种不同的方法,每种方法都有自己的名称,称为方法名。 • Visual FoxPro中不同的对象具有不同的方法,与事件不同的是,方法程序集合可以无限扩展,除了在各个类中已定义的方法外,可以根据需要自定义方法(向类中添加新方法),以完成相应的操作,新建的方法属于表单或表单集。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • 方法的调用格式: • [变量名=]=[表单集名].表单名.对象名.方法名(参数表) • Visual FoxPro中不同的对象具有不同的方法,与事件不同的是,用户可以定义新的方法,新建的方法属于表单。 • 以下列出几个常用的方法功能及使用: • (1)Hide方法 • 功能:隐藏表单、表单集或工具栏。 • 适用范围:表单、表单集、SCREEN、工具栏。 • 语法格式:对象.Hide Visual FoxPro程序设计
7.1.3、属性、事件和方法 • (2)Refresh方法 • 功能:重画表单或控件并刷新所有值。 • 适用范围:Visual FoxPro中所有的对象,包括复选框、列、组合框、命令按钮、命令组、容器对象、控件对象、编辑框、表单、表单集、表格、标头、列表框、OLE绑定型控件、OLE容器控件、选项按钮、选项组、页面、页框、SCREEN、微调、文本框和工具栏。 • 语法格式:对象.Refresh • 说明 • 一般地,画表单或控件是在没有事件发生时自动处理的。需要立刻更新表单或控件时可用Refresh方法。刷新表单的同时,也刷新表单上所有的控件;刷新页框时,只刷新活动的页。 • (3)Release方法 • 功能:释放表单集或表单。 • 适用范围:表单、表单集、SCREEN。 • 语法格式:对象.Release。 Visual FoxPro程序设计
7.1.3、属性、事件和方法 • (4)SetFocus方法 • 功能:为一个控件指定焦点,确定当前的操作对象。 • 适用范围:复选框、列、组合框、命令按钮、容器对象、控件对象、编辑框、表格、列表框、OLE绑定型控件、OLE容器控件、选项按钮、微调和文本框。 • 语法格式:对象.SetFocus • (5)Show方法 • 功能:显示表单、表单集或工具栏。 • 适用范围:表单、表单集、_SCREEN和工具栏。 • 语法格式:对象.Show Visual FoxPro程序设计
7.2创建表单 • 表单是用户与Visual FoxPro8.0应用程序之间进行数据交换的界面,是最为常用的数据显示及编辑方式,它可以包含各种不同的控件,用户通过可视化的设计方法,利用这些控件制作不同的按钮、下拉框、选项框等,使用户能利用友好、美观的人机交互界面进行数据的接收、显示和编辑,实现与应用程序的连接。表单是Visual FoxPro8.0的特色所在,它克服了浏览、查询、视图等交互界面的呆板和不够丰富。表单是以文件形式保存其内容,表单文件扩展名为.SCX。 • 根据表单数据来源的不同,可将表单分为以下几种类型: • (1)简单表单,该表单的数据来源于某一个表或某一个视图。 • (2)复杂表单,该表单的数据来源于多个表或多个视图。 • (3)一对多表单,该表单的数据来源于两个表,这两个表必须是按一对多的关系连接起来,其中一个为父表,另一个为子表。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • 1.简单报表的创建 • “表单向导”对于初学者来说特别适用,用户不需要编写程序代码便可生成简单的表单程序。 • 【例7-1】以student表为数据来源,制作显示学生信息的表单(student.scx)。 图7-1项目管理器图 图7-2“新建表单”对话框 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • 操作步骤: • (1)打开“项目管理器”,选择文档标签,然后选择“表单”项。单击“新建”按钮,出现“新建表单”对话框。或者在Visual FoxPro菜单栏中,选择“文件”菜单栏中的“新建”选项。在弹出的“新建”对话框中指定文件类型为“表单”。(2)在“新建表单”对话框中选取“表单向导”按钮或者在“新建”对话框中选取“向导”按钮,出现 “向导选取”对话框。 • (3)在“向导选取”对话框中有“表单向导”和“一对多表单向导”两个列表选项,其中“表单向导”用来创建单个表或单个视图的表单:“一对多表单向导”用来创建一组父表记录及其相关子表记录的表单。本例选择的是“表单向导”。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • (4)单击“确定”按钮后,出现表单向导的第一个对话框。这一步主要选择数据库表或自由表中的全部“字段”或部分“字段”,作为表单的显示对象。本例选择“student”数据表中字段名为学号、姓名、性别、出生日期、系科、总分等六个字段。 • (5)单击“下一步”按钮后,出现表单向导第二个对话框,该步骤主要用来选择表单的显示格式,从样式选项框中选中一个样式后,对话框左上角的放大镜中显示出该样式的运行效果。向导系统提供了九种格式供用户选择,它们分别是标准式、凹陷式、阴影式、边框式、浮雕式、新奇式、石墙式、亚麻式、彩色式。本例选择的是标准式。 • 在对话框的按钮类型选框中,有文本按钮、图片按钮、无按钮和定制4种类型,本例选择的是文本按钮,表示表单将自动生成一组以文本表示的命令按钮。 • (6)单击“下一步”按钮,出现表单向导第三个对话框。该对话框主要用来选择排序关键字,并确定升序排序还是降序排序,本例选择的是“读者编号”作为关键字,按升序排序。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • (7)单击“下一步”按钮后,出现表单向导第四个对话框,在该对话框中,要求用户输入表单标题,系统默认值为“读者”,下而的三个单选项和三个复选项主要用来询问在创建完这个表单后要做的工作。如选择单选项“保存表单以备将来使用”,则可将创建好的表单保存以备今后使用;如果选择单选项“保存并运行表单”,则可将表单保存,然后立即运行;如果选择单选项“保存表单并用表单设计器修改表单”,则会在表单保存后弹出表单设计器。为了对当前设置的表单进行预览,可单击右面的‘‘预览’’按钮。预览后,单击“返回向导”按钮即可回到表单向导。如果不满意,可以回到上一步进行修改。 • (8)保存表单。单击“完成”按钮,系统弹出一个“另存为”对话框,要求用户选择表单文件保存的磁盘路径,输入新的表单文件名,并在“保存类型”下拉表中选取“表单”类型。单击“保存”按钮,该表单就保存到了磁盘上。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • (9)在表单设计器窗口,选择“表单”菜单中的“运行”命令,或直接单击工具栏中的运行按钮,则得到表单的运行结果,单击“下一个”按钮可查看下一位同学的信息。 • 注意 • 这种方法必须先进入表单设计器窗口,并且确认已打开了要运行的表单。一般在表单设计或修改时使用,显得方便、直接,便于对表单进行编辑修改。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • 2、一对多表单的创建 • 创建一对多表单主要是显示表与表之间的相互关系,在实际应用中运用很广泛。 • 【例7-2】在学生成绩管理系统中,运用student表和assign表查阅某位学生的成绩情况,创建表单(学生成绩.scx)。 • 操作步骤: • 步骤(1),步骤(2)与例7-1相同。 • (3)在“向导选取”对话框中,选择“一对多表单向导”,如图7-13所示。 图7-13选择“一对多表单向导” 图7-14从父表中选取字段对话框 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • (4)单击“确定”按钮,出现对话框。从父表中选取所需字段,这些字段将显示在表单的上半部。本例选择的是“学生成绩管理系统”数据库中“student”表的部份字段。对话框右面的按钮可选取其它数据库或表来作为父表。 • (5)单击“下一步”按钮,出现对话框,在对话框中选择与父表有直接关系的子表,从子表中选择要在表单中显示的字段,这些字段在表单中将显示在父表下的表格中。本例选择的是“学生成绩管理系统”数据库下“assign”表的全部字段。 • 注意 • 在创建一个一对多表单时,两个数据表之间应该可以建立连接关系,否则无法创建一对多表单。 • (6)单击“下一步”按钮,出现对话框。该对话框为一对多表单中的两个数据表之间建立关系。本例选择的是“学号”作为“student”表与“assign”表之间的关键字段。 • (7)单击“下一步”按钮,出现对话框,该对话框用来选择表单样式和按钮类型,在这里选择的是“标准式”表单样式,而按钮类型选择的是“图片按钮”。 Visual FoxPro程序设计
7.2.1 用表单向导创建简单表单 • (8)单击“下一步”按钮,出现对话框,该对话框用来选择父表中的排序关键字。与创建一对一表单时选择的排序字段相同,在这里选取“学号”字段作为父表升序排序的关键字。 • (9)单击“下一步”按钮,出现对话框,该对话框用来输入表单标题名,并选取“保存表单以备将来使用”单选项。 • (10)单击“预览”按钮后,出现如图7-19所示的“读者借书查询”表单窗口。点击“返回向导”按钮,则返回到图7-18所示的对话框,然后单击“完成”按钮,对所建表单进行保存。 • (11)运行该表单后,用户可通过读者借书查询表单提供的按钮,对表单中的数据进行查询、打印、编辑、删除等操作,其中搜索时仅用于父表中记录的筛选;删除时仅用于父表的当前记录。 图7-19读者借书查询表单预览窗口 图7-18 完成一对多表单的对话框 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 表单向导创建的表单功能较为固定,不能满足复杂的功能要求。在实际应用中,运用表单设计器可以完全按照自己的意图来创建表单。表单设计器是Visual FoxPro提供的一个操作简单、灵活方便的界面设计工具。在表单设计器中使用表单控件工具栏可以向表单中添加控件对象,使用调色板工具栏可以为表单及其中的控件对象进行着色。使用布局工具栏可以排列和调整表单中的控件对象的位置尺寸。使用数据环境设计器可以为表单添加数据环境。 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 1.创建普通表单 • 【例7-3】利用表单设计器设计如图所示的“学生成绩管理系统”的封面表单。 • 操作步骤: • 1.在主菜单栏下,单击“文件”菜单项下的“新建”项,也可直接单击工具栏中的“新建”按钮,在“新建”对话框中选择“表单”单选按钮。 • 2.单击“新建文件”按钮,出现一个标题为“Form1”的空表单,该窗口中的空白区域用来布置表单控件,同时VFP工具栏中增加了窗体设计器工具栏,如图7-21所示。 图 7-21 窗体设计器工具栏 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 3.选择菜单“显示->属性”命令(或直接单击上面提到的属性窗口按钮),弹出“属性”窗口,如图7-22所示。 4.在表单设计器中单击表单,使其成为当前对象,在属性窗口中定义Form1的属性如下: Caption:学生成绩管理系统封面 Top:0 Left:0 WindowState:2 图7-22 属性窗口 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 5.在属性窗口选中“Picture”,点击按钮进入打开文件对话框,选择准备好的一张图片,如图7-23所示,单击“确定”,回到属性窗口,选中的图片“bg.jpg”就成为表单的背景图片。 图7-23 属性窗口 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 6.在表单设计器中添加三个新标签,可以调整三个控件的大小和位置。按照表7-4设置三个控件的属性。 表7-4 三个标签的属性设置 7.选择菜单“文件->保存”,保存为“main.frx”,单击按钮 将运行该表单. Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 2.设计能读取表中数据的表单 • 要设计一个表单用于从数据表读取或写入数据,需要用到数据环境设计器。数据环境是表单设计的数据来源,每个表单都包含一个数据环境。数据环境是一个包含表、视图以及表之间关联的容器对象。引入数据环境的目的在于: • 打开或者运行表单时自动打开表和视图(通过设置数据环境的相应属性)。 • 可以通过数据环境中的所有字段来设置控件的ControlSource属性。 • 关闭或者释放表单时自动关闭表和视图。 • 【例7-4】利用表单设计器为“学生成绩管理系统”的数据表student.dbf创建一个记录浏览表单。 • 1.如上例的步骤1和2进入表单设计器窗口。 • 2.添加一个标签Label1,属性设置如下: • Caption:学生信息浏览 • Fontsize:18 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 3.选择菜单“显示->数据环境”,或将鼠标指向表单设计器窗口的空白处,单击右键弹出快捷菜单,选择“数据环境”命令,打开“数据环境设计器”窗口,如图7-25所示。当数据环境激活时,在菜单栏中将显示“数据环境”菜单项,用于完成视图和表的添加、移去和浏览功能。 图7-25 数据环境设计器 图7-26 “添加表或视图”对话框 4.在“数据环境”空白区域中单击鼠标右键,在弹出的快捷菜单中选择“添加”。 在弹出的“添加表或视图”对话框中选择需要的表或视图,这里我们选择表 student,如图7-27所示。 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 5.如图7-27(a)所示,选中数据环境设计器中的表student中的字段“学号”,拖动到表单中,在表单中自动建立了一个标签对象和一个文本框对象,重复这一操作将姓名、性别、出生日期、系科、总分字段拖动到表单中,适当调整各个控件的位置和大小,结果如图7-27(b)所示。 图7-27 将数据环境设计器中的表的字段拖动到表单中 • 7.在“表单控件”栏中,用鼠标左键单击命令按钮控件,在表单的底部位置上拖放或单击鼠标左键,将命令按钮加入到表单中,系统默认命名为command1。 Visual FoxPro程序设计
对 象 名 属 性 7.2.2用表单设计器创建表单 • 8.单击选中command1,按右键弹出快捷菜单,选择“复制”,再在表单空白处选择“粘贴”,增加一个命令按钮command2,用同样的方法再增加一个命令按钮command3。 • 9.移动按钮的位置,使三个按钮对齐。 • 10.逐个选定三个命令按钮,如表7-6所示,分别定义其属性。 表7-6 三个命令按钮的属性设置 Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 11.选择菜单“显示->代码”,弹出代码窗口。 • 12.在对象列表框中选定“command1”,在“过程”列表框中选定“Click”,在代码窗口中输入代码。 • 程序代码: • skip -1 • if bof() • this.enabled=.F. • thisform.command2.enabled=.T. • else • this.enabled=.T. • thisform.command2.enabled=.T. • endif Visual FoxPro程序设计
7.2.2用表单设计器创建表单 • 13.同样,定义command2的Click事件代码如下: • skip • if eof() • this.enabled=.F. • thisform.command1.enabled=.T. • else • this.enabled=.T. • thisform.command1.enabled=.T. • endif • 定义command3的Click事件代码如下: • thisform.release • 14.关闭代码窗口,将该表单保存为“学生信息.SCX”,然后运行该表单,运行结果如图7-30所示。单击上一条、下一条,表单中数据将随之变化。单击退出将退出该表单,回到表单设计器窗口。 Visual FoxPro程序设计
7.3常用表单控件 • 在表单中,控件是用来显示数据、执行命令的图形对象,是表单设计的主角,使表单具有友好的界面和交互功能。在Visual FoxPro中,可以有两种类型控件:绑定型控件和非绑定型控件。绑定型控件是指控件在设计时与表或视图中的字段相连接,通过绑定型控件可以向表或视图中的字段输入数据,或者从表或视图中的字段选择数据:非绑定型控件就是指在设计时与表或视图没有任何联系,是独立的。下面介绍Visual FoxPro提供的一些常用控件的使用方法。 Visual FoxPro程序设计
7.3.1标签控件 • 标签是最常用的一种控件,用来显示文本,顾名思义标签只能用作输出信息,而不能接受输入或进行编辑。标签的一般功能是显示各种文本类型的提示信息,因此标签可以用作标题、栏目,或者用于对输入或输出区域的标识。标签控件的常用属性如表7-9所示。 表7-9 标签的常用属性 Visual FoxPro程序设计
7.3.2命令按钮 • 命令按钮通常用来进行某一个操作、执行某个事件代码、完成特定的功能,如关闭一个表单、查询一条记录、打印报表等,是最常用的控件之一。命令按钮的常用属性如表7-10所示。 • 命令按钮的常用事件是Click事件,当单击命令按钮时,就触发了该事件。命令按钮的常用方法是Seffocus方法,其功能是使命令按钮得到焦点。 表7-10 命令按钮的常用属性 Visual FoxPro程序设计
7.3.2命令按钮 • 【例7-7】设计一个表单,利用单击按钮改变标签字体的颜色为红色,界面如图7-31所示。 • 操作步骤: • (1)选择控件 • 本例中使用标签控件和命令按钮控件。 • (2)属性设置 • 表单的Caption属性改为“设置标签文字颜色”。 • 标签的Fontsize属性改为16。 • 命令按钮的Fontsize属性改为10,Caption属性改为“改变颜色”。 • (3)编写代码 • 选择命令按钮,双击打开代码窗口,在Click事件中输入如下代码: • Thisform.Label1.ForeColor=RGB(255,0,0) • Thisform.Refresh • (4)保存并运行表单,单击“改变颜色”按钮,文字“欢迎使用学生成绩管理系统”将变为红色。 图7-31 改变标签字体颜色 Visual FoxPro程序设计
7.3.3命令按钮组 • 命令按钮组是包含多个命令按钮的容器对象,它将预定义的命令组提供给用户。组中按钮可以单独操作,也可以作为一个组来统一操作,这在表单的设计中经常用到。当一个事件在组中的某个按钮上发生时,命令按钮组的Value属性应指明该事件发生在哪个按钮上。 • (1)命令按钮组的常用属性如表7-11所示。 表7-11 命令按钮组的常见属性 Visual FoxPro程序设计
7.3.3命令按钮组 • (2)命令按钮组的常用事件 • 命令按钮组最常用的事件就是Click事件,当用户单击命令按钮组时,就触发该事件。 • (3)选择命令按钮组中的命令按钮 • 命令按钮组是Visual FoxPro中的一个基类控件,无论命令按钮组中设置了多少个按钮,它总是以一个整体作为一个对象放置在表单中,其属性指它的整体属性。但每个命令按钮执行的操作往往不同,所以设置每个按钮的属性或编写每个按钮的事件代码时需要分别进行。因此,需要把每个按钮“拆分”开,然后为每个按钮单独进行属性设置,编写事件代码,其过程如下: • 用鼠标右键单击命令按钮组,弹出快捷菜单 • 在快捷菜单中选择“编辑”命令,则用户用鼠标可以选中任一个按钮进行“编辑”,进行属性设置和代码的编写工作。 • 也可以在属性窗口的对象框中直接选择某个命令按钮进行“编辑”。 Visual FoxPro程序设计
7.3.3命令按钮组 • 【例7-8】在表单上有一个命令按钮和命令按钮组,该命令按钮组包括3个命令按钮。 • 当单击命令按钮组中某个按钮时,命令按钮组的背景色变成相应按钮指定的颜色;单击还原命令按钮,命令按钮组背景色还原成默认的颜色,其界面如图7-32所示。 图7-32 设置命令按钮组的背景颜色 Visual FoxPro程序设计
7.3.3命令按钮组 • 操作步骤: • (1)选择控件 • 本例中使用一个命令按钮组控件和一个命令按钮控件。 • (2)属性设置 • 命令按钮组默认的命令按钮个数为2个,如果要添加更多命令按钮,方法如下。 • a.用鼠标右键单击命令按钮组 • b.在属性窗口中设置Buttoncount属性,本例中设为3 • Commandgroupl中的3个命令按钮的标题属性和Commandl的标题属性设置如图7-36所示。 Visual FoxPro程序设计
7.3.3命令按钮组 • (3)编写代码 • 选择命令按钮和命令按钮组的Click事件来完成相应的功能,代码如下: • D0 Case • Case This.Value=1 • This.Backcolor=Rgb(255,0,0) • Case This.Value=2 • This.Backcolor=Rgb(255,255,0) • Case This.Value=3 • This.Backcolor=Rgb(0,0,255) • Case This.Value=4 • This.Backcolor=Rgb(255,255,255) • Endcase • Thisform.Refresh • 还原命令按钮的Click事件代码: • Thisform.Commandgroupl.Backcolor=Rgb(192,192,192) • Thisform.Refresh Visual FoxPro程序设计
7.3.4文本框 • 与标签不同,文本框有自己的数据源,并可以进行输入和修改,主要用于编辑或显示文本变量或字段的值。相对于标签固定的文本信息,文本框通常以表的一个字段或一个内存变量作为自己的数据源。文本框一般只包含单行数据。文本框几乎可以编辑任何类型的数据,如数值型、字符型、逻辑型、日期型等。 • 【例7-9】设置密码对话框。表单中要有一个接收用户信息的控件,并且对输入的密码应保密,密码是否正确也应有相应的提示。 • 操作步骤: • (1)选择控件。 • 本例中使用标签控件和文本框控件,如图7-33所示。其中一个标签放在文本框前,说明文本框的操作,文本框接收从键盘的输入值,第二个标签提示登录成功与否的信息。 图7-33 控件的选取和属性设置 Visual FoxPro程序设计
7.3.4文本框 • (2)属性设置。 • 表单的Caption属性设为“登录”。 • 按钮的Caption属性设为“登录”。 • 标签1的Caption属性设为请输入密码。 • 标签2的Visible属性设为.F.。 • 文本框的Passwordchar属性设为* 。 • (3)编写代码。 • 双击按钮,打开代码窗口,在Click事件中输入如下代码: • Thisform.Label2.ViSible=.T. • If Thisform.Text1.Value="123456" then • Thisform.Label2.Caption=“欢迎登录学生成绩管理系统!” • Else • Thisform.Label2.Caption=“你输入的密码错误!” • Endif • Thisform.Refresh Visual FoxPro程序设计
7.3.5编辑框 • 文本框只能编辑一行文本,在使用上有一定的局限性,在编辑框中允许编辑长字段或备注字段文本,允许自动换行并能用方向键、PageUp键和PageDown键以及滚动条来浏览文本。编辑框的与文本框的使用方法基本一致。 Visual FoxPro程序设计
7.3.6复选框 • 复选框可以用来指定一个逻辑状态,可提供两个值的选择一“真”或“假”。复选框被选中时在方框内显示一个“√”,否则方框内为空。但有时问题不能简单地分为“真”或“假”,如不确定,可以用NULL来表示,此时复选框变为灰色。其常用属性如表7-17所示。 表7-17 复选框常用属性 Visual FoxPro程序设计