第七章 
This presentation is the property of its rightful owner.
Sponsored Links
1 / 80

第七章  表单设计与应用 PowerPoint PPT Presentation


  • 93 Views
  • Uploaded on
  • Presentation posted in: General

第七章  表单设计与应用 . 1. 面向对象的概念. 2. 创建表单. 3. 常用表单控件. 4. 综合应用. 目录. 7.1 面向对象的概念 . 当前计算机程序设计基本上可以分为两种:一种是前面第六章所讲的结构化程序设计。在结构化程序设计中,程序的开发者处于完全支配状态。程序执行的流程遵从程序员预先规定的路径。程序的开发者把一个待求解的问题自上到下进行分解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。

Download Presentation

第七章  表单设计与应用

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


2997019

第七章 表单设计与应用


2997019

1

面向对象的概念

2

创建表单

3

常用表单控件

4

综合应用

目录

Visual FoxPro程序设计


2997019

7.1 面向对象的概念

  • 当前计算机程序设计基本上可以分为两种:一种是前面第六章所讲的结构化程序设计。在结构化程序设计中,程序的开发者处于完全支配状态。程序执行的流程遵从程序员预先规定的路径。程序的开发者把一个待求解的问题自上到下进行分解,以便形成一个个相对简单独立的子问题,然后用子程序或函数来解决这些子问题,用子程序或函数之间的数据通信来模拟这些子问题间的联系,最后把这些子程序或函数装配起来以形成解决问题的完整程序。

  • 另一种方法就是面向对象的分析与设计。在面向对象的程序设计(Object-Oriented Programming)中,对象是组成程序的构件,就好像是在面向过程的结构化程序设计方法中的子程序和函数一样。在面向对象的程序设计方法中,程序设计人员不是完全按照过程对求解问题进行分解,而是按照面向对象的观点来描述问题、分解问题,最后选择一种支持面向对象方法的程序语言来解决问题。在这种方法中,设计人员直接用一种称之为“对象”的程序构件来描述客观问题中的“实体”,并用“对象”间的“消息”来模拟实体间的联系,这样讲“对象”有机的结合在一起,便构成了面向对象的应用程序。

Visual FoxPro程序设计


7 1 1

7.1.1 对象与类

  • 一、对象(Object)

  • 客观世界里的任何实体都可以被看作是对象。每个对象都具有其区别其它对象的独特存在状态和客观行为。对象可以是现实世界中的任何物体,例如一辆汽车、一张桌子、一台计算机,也可以指某些概念。对象都具有一定的属性、特征,并可以产生一定的行为。属性实际上就是描述该对象的一系列数据,如一张桌子有材料、规格、尺寸、颜色等描述数据。而行为则是对该对象施加的操作,如对一张桌子要进行放置、擦洗等动态操作行为。

  • 在Visual FoxPro中,表单是对象,标签是对象,命令按钮是对象,界面上几乎所有事物都是对象,每个对象都有自己的属性和方法。一个对象具有状态、行为和标识,对象的状态包括它的属性和这些属性的当前值。

Visual FoxPro程序设计


7 1 11

7.1.1 对象与类

  • 二、类(Class)

  • “类”是具有相同属性特性和行为规则的 “对象”的集合。从程序设计的角度来讲,“类”是一个数据模式和若干个程序过程经过封装而形成的一个整体,它是对现实世界的一种模拟与抽象,类就象是一类对象的模板,而“对象”则是“类”的一个具体实例,“类”的功能只有通过产生一个对象并且引用该对象才能实现。例如:可以把“球”看作是一个类。它具有“种类”、“形状”等特性,以及进行运动、游戏等操作。每一个具体的“篮球”、“足球”都可以看作是“球”类中的对象。

  • 类决定了对象的特征,所有对象的属性、事件和方法程序在定义类时被指定。有了类的定义后,就可以基于类生成这类对象的任何一个对象。由同一个类生成的对象虽然采用了相同的属性来表示对象的状态,但它们的属性取值可以完全不同,因而它们有着不同的状态,彼此保持相对独立。

Visual FoxPro程序设计


7 1 12

7.1.1 对象与类

  • 三、类的特点

  • 1.封装性

  • 类的封装性是指将类的特性及其方法程序加以隐蔽,全部封装在类的内部,不让其复杂性暴露在外面。程序开发人员在使用类时无需知道类中的具体技术代码,不用对它进行控制和干预,只需直接使用从类派生出来的对象即可。

  • 2.继承性

  • 继承是面向对象中的一个重要概念,是指在基于现有的类创建新类时,新类继承了现有的类的属性和方法,此外,新类中还可以有自己所特有的新的属性和方法。它表达了从一般到特殊的进化过程。在使用子类或对象时,可以直接调用父类的属性和方法。对父类的修改可以影响其所有的子类,这种自动更新机制大大节省了开发人员的时间和精力,减少了维护代码的难度。

  • 3.多态性

  • 多态性是指允许不同类的对象对同一消息作出响应。也就是说,在类等级中的不同层次可以共享(公用)一个方法名,但不同层次中的各个类却各自按照自己的需要来实现这个方法。

Visual FoxPro程序设计


7 1 2 visual foxpro

7.1.2 Visual FoxPro中的类与对象

  • 一、基类与子类

  • Visual FoxPro为了方便用户使用,提供了大量已经定义的类,这些类称为基类。每个基类都有自己的属性、事件和方法。用户很容易从基类中生成一个类,从基类派生出来的类称为子类,也称作自定义类。基类称为父类。一个子类还可以作为父类进一步派生出新的子类。类还可以细化为子类,就像“球”可以派生出“大球”子类和“小球”子类,而“球”是这两个子类的父类。“大球”还可以派生出“篮球”、“足球”等。一个子类可以继承父类中的全部功能,还可以在此基础上添加新的属性和方法。

Visual FoxPro程序设计


7 1 2 visual foxpro1

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 foxpro2

7.1.2 Visual FoxPro中的类与对象

  • (3)对象的引用层次

  • 对象之间包含与被包含的关系,产生了对象的层次关系,这与类的层次概念是不同的。类的层次关系体现了类之间继承与被继承的关系,对象的层次关系体现了包含与被包含的关系。容器内的对象还可以再作为其他对象的容器,不同的容器所能包含的对象也不同。

  • 在面向对象程序设计时,往往要引用容器中某个特定对象,这时就要,就要指明对象在容器嵌套层次中的位置,引用格式中用点“.”分隔。

  • 对象的引用有两种方式:绝对引用和相对引用。绝对引用:指从最上层开始,一层层向下,提供完整的对象地址。

  • 【例7-1】设置图中命令按钮Commandl的标题为“退出”

  • 程序代码:

  • Formset.Form.commandgroup.commandI.caption="退出”

  • 即表单集.表单.命令按钮组.命令按钮1.caption="退出”

  • 相对引用对象:从当前对象出发,逐层向高一层或低一层起到另一对象的引用称为相对引用。

Visual FoxPro程序设计


7 1 3

7.1.3、属性、事件和方法

  • 1.属性(Attribute)

  • 属性即对象的特性,是对象的外观及行为的特征。例如一辆汽车的大小、颜色、品牌,汽车的停止和行驶的两种状态,这些都是一辆汽车的属性。基本属性是在相应的类中定义好的,当然每个对象也有自己的一些特性,例如同样是轿车,有的可以自动换档,有的只能手工换档。

  • 在Visual FoxPro中,各种对象具有70多个属性,如对象的标题(Caption)、文字的对齐方式(Alignment)等就是对象的属性。

  • 从功能上看,各种对象的属性可以分为布局和修饰属性、数据属性、状态属性和其他属性四大类。

Visual FoxPro程序设计


7 1 31

7.1.3、属性、事件和方法

  • 属性值既能在设计时、也能在运行时进行设置。在设计时对对象进行属性设置是通过属性窗口完成的,而在运行时对对象进行属性设置是通过编制程序代码并将之放在事件代码或方法代码中完成的。

  • 在程序中设置或修改属性的命令格式:

  • Container.Object.Property=Value

  • 即:容器.对象.属性=属性值

  • 在程序中引用属性值的命令格式:

  • 变量名=[表单集名.]表单名.属性名

Visual FoxPro程序设计


7 1 32

7.1.3、属性、事件和方法

  • 2.事件(Event)

  • 事件是对象可以识别和响应的行为与操作,由用户或者系统激活,用户可以编写相应的代码对此进行响应。一个事件有一个事件名,一个事件与一个事件程序相关联,当作用在一个对象上的事件发生时,与这个事件相关联的程序就获得一次运行。例如,事件可以由用户的一个动作产生,如单击鼠标或按下一个键盘按键;也可以由于程序代码或系统产生,如计数器溢出事件等。

  • 在Visual FoxPro中事件集是固定的,用户不能再创建新的事件。对象可以响应系统提供的50多个事件,有的事件具有通用性,多个控件都能触发,如Click事件;有的事件只适用于专门的控件,如Interactivechange事件只适应用于列表框和组合框。

Visual FoxPro程序设计


7 1 33

7.1.3、属性、事件和方法

  • 编写事件代码时注意两条原则:

  • (1)每个对象独立地接收自己的事件;

  • (2)容器事件和控件事件互相独立。只要控件本身编写事件代码,无论是一般容器还是组容器,都先执行控件自己的事件代码;如果控件本身没有编写事件代码,且控件是在组容器中,执行父容器的同名事件代码,如果控件是在一般容器中,则控件不执行任何操作。

  • 注:组容器指的是命令按钮组和选项按钮组。

Visual FoxPro程序设计


7 1 34

7.1.3、属性、事件和方法

  • 3.方法(Method)

  • 方法是对象可以执行的动作,是封装在对象内部的,在任何时候都不能独立存在于对象之外。例如,对表单对象打开(open)和关闭(close)的操作是表单所具有的方法。用户无需再自己编写打开和关闭的程序代码。表单所具有的内置的代码或缺省的代码将告诉Visual FoxPro如何打开和关闭它们。在Visual FoxPro中提供了50多种不同的方法,每种方法都有自己的名称,称为方法名。

  • Visual FoxPro中不同的对象具有不同的方法,与事件不同的是,方法程序集合可以无限扩展,除了在各个类中已定义的方法外,可以根据需要自定义方法(向类中添加新方法),以完成相应的操作,新建的方法属于表单或表单集。

Visual FoxPro程序设计


7 1 35

7.1.3、属性、事件和方法

  • 方法的调用格式:

  • [变量名=]=[表单集名].表单名.对象名.方法名(参数表)

  • Visual FoxPro中不同的对象具有不同的方法,与事件不同的是,用户可以定义新的方法,新建的方法属于表单。

  • 以下列出几个常用的方法功能及使用:

  • (1)Hide方法

  • 功能:隐藏表单、表单集或工具栏。

  • 适用范围:表单、表单集、SCREEN、工具栏。

  • 语法格式:对象.Hide

Visual FoxPro程序设计


7 1 36

7.1.3、属性、事件和方法

  • (2)Refresh方法

  • 功能:重画表单或控件并刷新所有值。

  • 适用范围:Visual FoxPro中所有的对象,包括复选框、列、组合框、命令按钮、命令组、容器对象、控件对象、编辑框、表单、表单集、表格、标头、列表框、OLE绑定型控件、OLE容器控件、选项按钮、选项组、页面、页框、SCREEN、微调、文本框和工具栏。

  • 语法格式:对象.Refresh

  • 说明

  • 一般地,画表单或控件是在没有事件发生时自动处理的。需要立刻更新表单或控件时可用Refresh方法。刷新表单的同时,也刷新表单上所有的控件;刷新页框时,只刷新活动的页。

  • (3)Release方法

  • 功能:释放表单集或表单。

  • 适用范围:表单、表单集、SCREEN。

  • 语法格式:对象.Release。

Visual FoxPro程序设计


7 1 37

7.1.3、属性、事件和方法

  • (4)SetFocus方法

  • 功能:为一个控件指定焦点,确定当前的操作对象。

  • 适用范围:复选框、列、组合框、命令按钮、容器对象、控件对象、编辑框、表格、列表框、OLE绑定型控件、OLE容器控件、选项按钮、微调和文本框。

  • 语法格式:对象.SetFocus

  • (5)Show方法

  • 功能:显示表单、表单集或工具栏。

  • 适用范围:表单、表单集、_SCREEN和工具栏。

  • 语法格式:对象.Show

Visual FoxPro程序设计


2997019

7.2创建表单

  • 表单是用户与Visual FoxPro8.0应用程序之间进行数据交换的界面,是最为常用的数据显示及编辑方式,它可以包含各种不同的控件,用户通过可视化的设计方法,利用这些控件制作不同的按钮、下拉框、选项框等,使用户能利用友好、美观的人机交互界面进行数据的接收、显示和编辑,实现与应用程序的连接。表单是Visual FoxPro8.0的特色所在,它克服了浏览、查询、视图等交互界面的呆板和不够丰富。表单是以文件形式保存其内容,表单文件扩展名为.SCX。

  • 根据表单数据来源的不同,可将表单分为以下几种类型:

  • (1)简单表单,该表单的数据来源于某一个表或某一个视图。

  • (2)复杂表单,该表单的数据来源于多个表或多个视图。

  • (3)一对多表单,该表单的数据来源于两个表,这两个表必须是按一对多的关系连接起来,其中一个为父表,另一个为子表。

Visual FoxPro程序设计


7 2 1

7.2.1 用表单向导创建简单表单

  • 1.简单报表的创建

  • “表单向导”对于初学者来说特别适用,用户不需要编写程序代码便可生成简单的表单程序。

  • 【例7-1】以student表为数据来源,制作显示学生信息的表单(student.scx)。

图7-1项目管理器图 图7-2“新建表单”对话框

Visual FoxPro程序设计


7 2 11

7.2.1 用表单向导创建简单表单

  • 操作步骤:

  • (1)打开“项目管理器”,选择文档标签,然后选择“表单”项。单击“新建”按钮,出现“新建表单”对话框。或者在Visual FoxPro菜单栏中,选择“文件”菜单栏中的“新建”选项。在弹出的“新建”对话框中指定文件类型为“表单”。(2)在“新建表单”对话框中选取“表单向导”按钮或者在“新建”对话框中选取“向导”按钮,出现 “向导选取”对话框。

  • (3)在“向导选取”对话框中有“表单向导”和“一对多表单向导”两个列表选项,其中“表单向导”用来创建单个表或单个视图的表单:“一对多表单向导”用来创建一组父表记录及其相关子表记录的表单。本例选择的是“表单向导”。

Visual FoxPro程序设计


7 2 12

7.2.1 用表单向导创建简单表单

  • (4)单击“确定”按钮后,出现表单向导的第一个对话框。这一步主要选择数据库表或自由表中的全部“字段”或部分“字段”,作为表单的显示对象。本例选择“student”数据表中字段名为学号、姓名、性别、出生日期、系科、总分等六个字段。

  • (5)单击“下一步”按钮后,出现表单向导第二个对话框,该步骤主要用来选择表单的显示格式,从样式选项框中选中一个样式后,对话框左上角的放大镜中显示出该样式的运行效果。向导系统提供了九种格式供用户选择,它们分别是标准式、凹陷式、阴影式、边框式、浮雕式、新奇式、石墙式、亚麻式、彩色式。本例选择的是标准式。

  • 在对话框的按钮类型选框中,有文本按钮、图片按钮、无按钮和定制4种类型,本例选择的是文本按钮,表示表单将自动生成一组以文本表示的命令按钮。

  • (6)单击“下一步”按钮,出现表单向导第三个对话框。该对话框主要用来选择排序关键字,并确定升序排序还是降序排序,本例选择的是“读者编号”作为关键字,按升序排序。

Visual FoxPro程序设计


7 2 13

7.2.1 用表单向导创建简单表单

  • (7)单击“下一步”按钮后,出现表单向导第四个对话框,在该对话框中,要求用户输入表单标题,系统默认值为“读者”,下而的三个单选项和三个复选项主要用来询问在创建完这个表单后要做的工作。如选择单选项“保存表单以备将来使用”,则可将创建好的表单保存以备今后使用;如果选择单选项“保存并运行表单”,则可将表单保存,然后立即运行;如果选择单选项“保存表单并用表单设计器修改表单”,则会在表单保存后弹出表单设计器。为了对当前设置的表单进行预览,可单击右面的‘‘预览’’按钮。预览后,单击“返回向导”按钮即可回到表单向导。如果不满意,可以回到上一步进行修改。

  • (8)保存表单。单击“完成”按钮,系统弹出一个“另存为”对话框,要求用户选择表单文件保存的磁盘路径,输入新的表单文件名,并在“保存类型”下拉表中选取“表单”类型。单击“保存”按钮,该表单就保存到了磁盘上。

Visual FoxPro程序设计


7 2 14

7.2.1 用表单向导创建简单表单

  • (9)在表单设计器窗口,选择“表单”菜单中的“运行”命令,或直接单击工具栏中的运行按钮,则得到表单的运行结果,单击“下一个”按钮可查看下一位同学的信息。

  • 注意

  • 这种方法必须先进入表单设计器窗口,并且确认已打开了要运行的表单。一般在表单设计或修改时使用,显得方便、直接,便于对表单进行编辑修改。

Visual FoxPro程序设计


7 2 15

7.2.1 用表单向导创建简单表单

  • 2、一对多表单的创建

  • 创建一对多表单主要是显示表与表之间的相互关系,在实际应用中运用很广泛。

  • 【例7-2】在学生成绩管理系统中,运用student表和assign表查阅某位学生的成绩情况,创建表单(学生成绩.scx)。

  • 操作步骤:

  • 步骤(1),步骤(2)与例7-1相同。

  • (3)在“向导选取”对话框中,选择“一对多表单向导”,如图7-13所示。

图7-13选择“一对多表单向导”

图7-14从父表中选取字段对话框

Visual FoxPro程序设计


7 2 16

7.2.1 用表单向导创建简单表单

  • (4)单击“确定”按钮,出现对话框。从父表中选取所需字段,这些字段将显示在表单的上半部。本例选择的是“学生成绩管理系统”数据库中“student”表的部份字段。对话框右面的按钮可选取其它数据库或表来作为父表。

  • (5)单击“下一步”按钮,出现对话框,在对话框中选择与父表有直接关系的子表,从子表中选择要在表单中显示的字段,这些字段在表单中将显示在父表下的表格中。本例选择的是“学生成绩管理系统”数据库下“assign”表的全部字段。

  • 注意

  • 在创建一个一对多表单时,两个数据表之间应该可以建立连接关系,否则无法创建一对多表单。

  • (6)单击“下一步”按钮,出现对话框。该对话框为一对多表单中的两个数据表之间建立关系。本例选择的是“学号”作为“student”表与“assign”表之间的关键字段。

  • (7)单击“下一步”按钮,出现对话框,该对话框用来选择表单样式和按钮类型,在这里选择的是“标准式”表单样式,而按钮类型选择的是“图片按钮”。

Visual FoxPro程序设计


7 2 17

7.2.1 用表单向导创建简单表单

  • (8)单击“下一步”按钮,出现对话框,该对话框用来选择父表中的排序关键字。与创建一对一表单时选择的排序字段相同,在这里选取“学号”字段作为父表升序排序的关键字。

  • (9)单击“下一步”按钮,出现对话框,该对话框用来输入表单标题名,并选取“保存表单以备将来使用”单选项。

  • (10)单击“预览”按钮后,出现如图7-19所示的“读者借书查询”表单窗口。点击“返回向导”按钮,则返回到图7-18所示的对话框,然后单击“完成”按钮,对所建表单进行保存。

  • (11)运行该表单后,用户可通过读者借书查询表单提供的按钮,对表单中的数据进行查询、打印、编辑、删除等操作,其中搜索时仅用于父表中记录的筛选;删除时仅用于父表的当前记录。

图7-19读者借书查询表单预览窗口

图7-18 完成一对多表单的对话框

Visual FoxPro程序设计


7 2 2

7.2.2用表单设计器创建表单

  • 表单向导创建的表单功能较为固定,不能满足复杂的功能要求。在实际应用中,运用表单设计器可以完全按照自己的意图来创建表单。表单设计器是Visual FoxPro提供的一个操作简单、灵活方便的界面设计工具。在表单设计器中使用表单控件工具栏可以向表单中添加控件对象,使用调色板工具栏可以为表单及其中的控件对象进行着色。使用布局工具栏可以排列和调整表单中的控件对象的位置尺寸。使用数据环境设计器可以为表单添加数据环境。

Visual FoxPro程序设计


7 2 21

7.2.2用表单设计器创建表单

  • 1.创建普通表单

  • 【例7-3】利用表单设计器设计如图所示的“学生成绩管理系统”的封面表单。

  • 操作步骤:

  • 1.在主菜单栏下,单击“文件”菜单项下的“新建”项,也可直接单击工具栏中的“新建”按钮,在“新建”对话框中选择“表单”单选按钮。

  • 2.单击“新建文件”按钮,出现一个标题为“Form1”的空表单,该窗口中的空白区域用来布置表单控件,同时VFP工具栏中增加了窗体设计器工具栏,如图7-21所示。

图 7-21 窗体设计器工具栏

Visual FoxPro程序设计


7 2 22

7.2.2用表单设计器创建表单

  • 3.选择菜单“显示->属性”命令(或直接单击上面提到的属性窗口按钮),弹出“属性”窗口,如图7-22所示。

4.在表单设计器中单击表单,使其成为当前对象,在属性窗口中定义Form1的属性如下:

Caption:学生成绩管理系统封面

Top:0

Left:0

WindowState:2

图7-22 属性窗口

Visual FoxPro程序设计


7 2 23

7.2.2用表单设计器创建表单

  • 5.在属性窗口选中“Picture”,点击按钮进入打开文件对话框,选择准备好的一张图片,如图7-23所示,单击“确定”,回到属性窗口,选中的图片“bg.jpg”就成为表单的背景图片。

图7-23 属性窗口

Visual FoxPro程序设计


7 2 24

7.2.2用表单设计器创建表单

  • 6.在表单设计器中添加三个新标签,可以调整三个控件的大小和位置。按照表7-4设置三个控件的属性。

表7-4 三个标签的属性设置

7.选择菜单“文件->保存”,保存为“main.frx”,单击按钮

将运行该表单.

Visual FoxPro程序设计


7 2 25

7.2.2用表单设计器创建表单

  • 2.设计能读取表中数据的表单

  • 要设计一个表单用于从数据表读取或写入数据,需要用到数据环境设计器。数据环境是表单设计的数据来源,每个表单都包含一个数据环境。数据环境是一个包含表、视图以及表之间关联的容器对象。引入数据环境的目的在于:

  • 打开或者运行表单时自动打开表和视图(通过设置数据环境的相应属性)。

  • 可以通过数据环境中的所有字段来设置控件的ControlSource属性。

  • 关闭或者释放表单时自动关闭表和视图。

  • 【例7-4】利用表单设计器为“学生成绩管理系统”的数据表student.dbf创建一个记录浏览表单。

  • 1.如上例的步骤1和2进入表单设计器窗口。

  • 2.添加一个标签Label1,属性设置如下:

  • Caption:学生信息浏览

  • Fontsize:18

Visual FoxPro程序设计


7 2 26

7.2.2用表单设计器创建表单

  • 3.选择菜单“显示->数据环境”,或将鼠标指向表单设计器窗口的空白处,单击右键弹出快捷菜单,选择“数据环境”命令,打开“数据环境设计器”窗口,如图7-25所示。当数据环境激活时,在菜单栏中将显示“数据环境”菜单项,用于完成视图和表的添加、移去和浏览功能。

图7-25 数据环境设计器

图7-26 “添加表或视图”对话框

4.在“数据环境”空白区域中单击鼠标右键,在弹出的快捷菜单中选择“添加”。

在弹出的“添加表或视图”对话框中选择需要的表或视图,这里我们选择表

student,如图7-27所示。

Visual FoxPro程序设计


7 2 27

7.2.2用表单设计器创建表单

  • 5.如图7-27(a)所示,选中数据环境设计器中的表student中的字段“学号”,拖动到表单中,在表单中自动建立了一个标签对象和一个文本框对象,重复这一操作将姓名、性别、出生日期、系科、总分字段拖动到表单中,适当调整各个控件的位置和大小,结果如图7-27(b)所示。

图7-27 将数据环境设计器中的表的字段拖动到表单中

  • 7.在“表单控件”栏中,用鼠标左键单击命令按钮控件,在表单的底部位置上拖放或单击鼠标左键,将命令按钮加入到表单中,系统默认命名为command1。

Visual FoxPro程序设计


7 2 28

7.2.2用表单设计器创建表单

  • 8.单击选中command1,按右键弹出快捷菜单,选择“复制”,再在表单空白处选择“粘贴”,增加一个命令按钮command2,用同样的方法再增加一个命令按钮command3。

  • 9.移动按钮的位置,使三个按钮对齐。

  • 10.逐个选定三个命令按钮,如表7-6所示,分别定义其属性。

表7-6 三个命令按钮的属性设置

Visual FoxPro程序设计


7 2 29

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 210

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程序设计


2997019

7.3常用表单控件

  • 在表单中,控件是用来显示数据、执行命令的图形对象,是表单设计的主角,使表单具有友好的界面和交互功能。在Visual FoxPro中,可以有两种类型控件:绑定型控件和非绑定型控件。绑定型控件是指控件在设计时与表或视图中的字段相连接,通过绑定型控件可以向表或视图中的字段输入数据,或者从表或视图中的字段选择数据:非绑定型控件就是指在设计时与表或视图没有任何联系,是独立的。下面介绍Visual FoxPro提供的一些常用控件的使用方法。

Visual FoxPro程序设计


7 3 1

7.3.1标签控件

  • 标签是最常用的一种控件,用来显示文本,顾名思义标签只能用作输出信息,而不能接受输入或进行编辑。标签的一般功能是显示各种文本类型的提示信息,因此标签可以用作标题、栏目,或者用于对输入或输出区域的标识。标签控件的常用属性如表7-9所示。

表7-9 标签的常用属性

Visual FoxPro程序设计


7 3 2

7.3.2命令按钮

  • 命令按钮通常用来进行某一个操作、执行某个事件代码、完成特定的功能,如关闭一个表单、查询一条记录、打印报表等,是最常用的控件之一。命令按钮的常用属性如表7-10所示。

  • 命令按钮的常用事件是Click事件,当单击命令按钮时,就触发了该事件。命令按钮的常用方法是Seffocus方法,其功能是使命令按钮得到焦点。

表7-10 命令按钮的常用属性

Visual FoxPro程序设计


7 3 21

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

7.3.3命令按钮组

  • 命令按钮组是包含多个命令按钮的容器对象,它将预定义的命令组提供给用户。组中按钮可以单独操作,也可以作为一个组来统一操作,这在表单的设计中经常用到。当一个事件在组中的某个按钮上发生时,命令按钮组的Value属性应指明该事件发生在哪个按钮上。

  • (1)命令按钮组的常用属性如表7-11所示。

表7-11 命令按钮组的常见属性

Visual FoxPro程序设计


7 3 31

7.3.3命令按钮组

  • (2)命令按钮组的常用事件

  • 命令按钮组最常用的事件就是Click事件,当用户单击命令按钮组时,就触发该事件。

  • (3)选择命令按钮组中的命令按钮

  • 命令按钮组是Visual FoxPro中的一个基类控件,无论命令按钮组中设置了多少个按钮,它总是以一个整体作为一个对象放置在表单中,其属性指它的整体属性。但每个命令按钮执行的操作往往不同,所以设置每个按钮的属性或编写每个按钮的事件代码时需要分别进行。因此,需要把每个按钮“拆分”开,然后为每个按钮单独进行属性设置,编写事件代码,其过程如下:

  • 用鼠标右键单击命令按钮组,弹出快捷菜单

  • 在快捷菜单中选择“编辑”命令,则用户用鼠标可以选中任一个按钮进行“编辑”,进行属性设置和代码的编写工作。

  • 也可以在属性窗口的对象框中直接选择某个命令按钮进行“编辑”。

Visual FoxPro程序设计


7 3 32

7.3.3命令按钮组

  • 【例7-8】在表单上有一个命令按钮和命令按钮组,该命令按钮组包括3个命令按钮。

  • 当单击命令按钮组中某个按钮时,命令按钮组的背景色变成相应按钮指定的颜色;单击还原命令按钮,命令按钮组背景色还原成默认的颜色,其界面如图7-32所示。

图7-32 设置命令按钮组的背景颜色

Visual FoxPro程序设计


7 3 33

7.3.3命令按钮组

  • 操作步骤:

  • (1)选择控件

  • 本例中使用一个命令按钮组控件和一个命令按钮控件。

  • (2)属性设置

  • 命令按钮组默认的命令按钮个数为2个,如果要添加更多命令按钮,方法如下。

  • a.用鼠标右键单击命令按钮组

  • b.在属性窗口中设置Buttoncount属性,本例中设为3

  • Commandgroupl中的3个命令按钮的标题属性和Commandl的标题属性设置如图7-36所示。

Visual FoxPro程序设计


7 3 34

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.3.4文本框

  • 与标签不同,文本框有自己的数据源,并可以进行输入和修改,主要用于编辑或显示文本变量或字段的值。相对于标签固定的文本信息,文本框通常以表的一个字段或一个内存变量作为自己的数据源。文本框一般只包含单行数据。文本框几乎可以编辑任何类型的数据,如数值型、字符型、逻辑型、日期型等。

  • 【例7-9】设置密码对话框。表单中要有一个接收用户信息的控件,并且对输入的密码应保密,密码是否正确也应有相应的提示。

  • 操作步骤:

  • (1)选择控件。

  • 本例中使用标签控件和文本框控件,如图7-33所示。其中一个标签放在文本框前,说明文本框的操作,文本框接收从键盘的输入值,第二个标签提示登录成功与否的信息。

图7-33 控件的选取和属性设置

Visual FoxPro程序设计


7 3 41

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

7.3.5编辑框

  • 文本框只能编辑一行文本,在使用上有一定的局限性,在编辑框中允许编辑长字段或备注字段文本,允许自动换行并能用方向键、PageUp键和PageDown键以及滚动条来浏览文本。编辑框的与文本框的使用方法基本一致。

Visual FoxPro程序设计


7 3 6

7.3.6复选框

  • 复选框可以用来指定一个逻辑状态,可提供两个值的选择一“真”或“假”。复选框被选中时在方框内显示一个“√”,否则方框内为空。但有时问题不能简单地分为“真”或“假”,如不确定,可以用NULL来表示,此时复选框变为灰色。其常用属性如表7-17所示。

表7-17 复选框常用属性

Visual FoxPro程序设计


7 3 61

7.3.6复选框

表7-18 复选框Value属性的设置值

由于复选框Value属性取值范围的特点,用Controlsource属性和复选框

建立连接的数据源类型只能是逻辑型或数字型。在表单运行中如果改变了复

选框的状态,系统会自动把和复选框建立连接的数据源的值进行更新。

【例7-10】在表单上有一个

文本框和三个复选框。当单

击某个复选框时,文本框中

的文字会随之变化,如图

7-36所示。

图7-36 复选框的使用

Visual FoxPro程序设计


7 3 62

7.3.6复选框

  • 操作步骤:

  • (1)选择控件。

  • 本例中使用文本框控件和复选框控件,如图7-36所示。

  • (2)属性设置。

  • 文本框的Value属性设为“欢迎使用VFP”。

  • 复选框1的Caption属性设为“粗体”。

  • 复选框2的Caption属性设为“斜体”。

  • 复选框3的Caption属性设为“下划线”。

  • (3)编写代码。

  • 双击复选框1,打开代码窗口,在Click事件中输入如下代码:

  • IF this.value=1 then

  • thisform.Text1.fontBold=.T.

  • ELSE

  • thisform.Text1.fontBold=.F.

  • Endif

Visual FoxPro程序设计


7 3 63

7.3.6复选框

  • 双击复选框2,打开代码窗口,在Click事件中输入如下代码:

  • IF this.value=1 then

  • thisform.Text1.fontItalic=.T.

  • ELSE

  • thisform.Text1.fontItalic=.F.

  • Endif

  • 双击复选框3,打开代码窗口,在Click事件中输入如下代码:

  • IF this.value=1 then

  • thisform.Text1.fontUnderline=.T.

  • ELSE

  • thisform.Text1.fontUnderline=.F.

  • Endif

  • 程序运行效果如图7-37所示:

图7-37 文字倾斜、加下划线

Visual FoxPro程序设计


7 3 7

7.3.7选项按钮组

  • 选项按钮组是包含多个选项按钮的容器对象,通常用于多项值只能选取其中之一的情形。它将预定义的选项组提供给用户,供用户选择,允许用户从一组指定的操作选项中选择一个,这在表单的设计中经常用到。例如,可以使用选项按钮组来指定将输出的方式。

  • (1)选项按钮及选项按钮组的常用属性

  • 常用属性如表7-19所示。

表7-19 选项按钮及选项按钮组常用属性

Visual FoxPro程序设计


7 3 71

7.3.7选项按钮组

  • (2)选项按钮及选项按钮组的常用事件

  • 选项按钮及选项按钮组的最常用事件就是Click事件,当用户单击选项按钮及选项按钮组时,就触发该事件。

  • 在选项按钮组中选择单个选项按钮的方法同命令按钮组,也是在快捷菜单中选择“编辑”命令,进行选项按钮组的编辑状态。

  • 【例7-11】设计一个表单,该表单上由一个文本框和一个选项按钮组Optiongroupl,共有3个选项按钮,分别代表文本框中文字的三种可选大小,其界面如图7-38所示。

图7-38 选项按钮组

Visual FoxPro程序设计


7 3 72

7.3.7选项按钮组

  • 操作步骤:

  • (1)选择控件

  • 本例中使用一个选项按钮组、一个文本框控件、一个标签控件。设置选项按钮组的Buttoncount属性,设置选项按钮的个数为3,将选项按钮横向排列;标签Labell用来显示选择结果,当在选项按钮中选中某个按钮时,就显示相应的结果。

  • (2)属性设置

  • 文本框的Value属性设为“欢迎使用VFP”。

  • Optiongroupl的Buttoncount属性设为3。

  • (3)编写选项按钮组的Click事件,代码为:

  • IF This.Value=1 then

  • Thisform.Text1.FontSize=8

  • Thisform.label1.Caption="现在的字体大小为8"

  • ELSE

  • IF This.Value=2 then

  • Thisform.Text1.FontSize=18

  • Thisform.label1.Caption="现在的字体大小为18"

  • ELSE

  • Thisform.Text1.FontSize=28

  • Thisform.label1.Caption="现在的字体大小为28"

  • ENDIF

  • ENDIF

  • Thisform.Refresh

Visual FoxPro程序设计


7 3 8

7.3.8列表框

  • 列表框用于显示一系列的数据项,用户可以从中选择一项或多项。列表框和组合框类似,不同的是组合框初始时只显示一个数据项,而列表框显示多个数据项;在列表框中可以选择多个数据项,而在组合框中只能选择一个数据项。另外,列表框不允许用户输入新的数据项。

  • 列表框的常用属性、事件和方法如表7-20和表7-21所示。

表7-20 列表框的常用属性

Visual FoxPro程序设计


7 3 81

7.3.8列表框

表7-21 列表框的事件和方法

  • 【例7-12】设计一表单,可以通过一文本框对列表框进行项目的添加、删除操作,其界面如图7-40所示。

图7-40 表单界面设计

Visual FoxPro程序设计


7 3 82

7.3.8列表框

  • (1)选择控件

  • 在表单上添加一个列表框控件Listl,一个文本框控件Text1和两个按钮控件command1、command2。

  • (2)属性设置

  • Forml的Caption属性设为“课程管理”。

  • Command1的Caption属性设为“添加”。

  • Command1的Caption属性设为“删除”。

  • (3)编写代码

  • 窗体Forml的Init代码如下:

  • thisform.list1.AddItem ("计算机文化基础")

  • thisform.list1.AddItem ("大学英语")

  • thisform.list1.AddItem ("高等数学")

  • 按钮Command1的Click代码如下:

  • kecheng=thisform.text1.Value

  • thisform.list1.additem (kecheng)

  • thisform.text1.Value=""

  • 按钮Command2的Click代码如下:

  • thisform.list1.RemoveItem(thisform.list1.ListIndex )

Visual FoxPro程序设计


7 3 9

7.3.9组合框

  • 组合框兼有列表框和文本框的功能,可以利用组合框,通过选择数据项的方式快捷、准确地进行数据的输入。组合框有两种变现形式,一种是下拉列表框,另一种是下拉组合框,通过设置属性Style值来实现。利用下拉组合框可以通过键盘输入内容,而在下拉列表框中只能选择表中的值,无法进行输入。下面介绍组合框的主要属性、方法和事件。

  • (1)组合框的常用属性

  • 其常用属性如表7-22所示。

  • 通过设置Rowsource属性和Rowsourcetype属性,可以用不同的数据源中的项来填充列表框。Rowsourcetype属性决定列表框或组合框的数据源类型,如数组或表,具体设置值如表7-23所示,设置好Rowsourcetype属性后,设置Rowsource属性可指定列表项的数据源。

Visual FoxPro程序设计


7 3 91

7.3.9组合框

表7-22 组合框的常用属性

表7-23 Rowsourcetype属性的设置值

Visual FoxPro程序设计


7 3 92

7.3.9组合框

表7-24 组合框的事件和方法

  • (2)组合框的常用事件和方法

  • 其常用的事件和方法如表7-24所示。

【例7-13】显示指定学生的所有信息。

表单界面如图7-42所示,要求:在组

合框中选择学生姓名后,在表单右边

显示对应学生的所有信息, 其界面如

图7-43所示。

图7-42 表单界面设计

Visual FoxPro程序设计


7 3 93

7.3.9组合框

  • (1)选择控件

  • 本例中在表单上添加一个组合框控件Combol,其他控件通过数据环境添加。

  • 把学生表添加到表单的数据环境中,然后选中数据环境中表的字段并拖到表单上,系统自动创建标签、复选框、文本框和编辑框控件,可在标签、复选框、文本框、编辑框中显示选中学生的有关内容。

  • (2)属性设置

  • Forml的Caption属性设为“学生基本信息查询”。

  • Combol的Style属性设为0。

  • Combol的Rowsourcetype属性设为6,Rowsource属性设为student.姓名。

  • (3)编写代码

  • 组合框Combol的Interactivechange代码如下:

  • Thisform.Refresh

Visual FoxPro程序设计


7 3 10

7.3.10计时器

  • 计时器控件允许以一定的时间间隔重复地执行某种操作。它通过检查系统时钟,确定是否到了该执行某一任务的时间。注意:在表单设计时,计时器在表单中是可见的,但运行时,计时器是不可见的,因而它的位置和大小都是无关紧要的。其常用属性和事件如表7-25所示。

表7-25 计时器的常用属性和事件

  • 【例7-14】设计一个显示当前系统时间的表单。

  • (1)选择控件

  • 本例中使用标签、文本框和计时器控件。标签控件提示文本框的显示内容,文本框显示当前系统时间,计时器实现系统时间的设置。其界面如图7-44所示。

Visual FoxPro程序设计


7 3 101

7.3.10计时器

  • (2)属性设置

  • Forml的Caption属性设为“时钟”。

  • Label1的Caption属性设为“现在系统时间为”。

  • Timerl的Interval属性设为“1000”。

  • 表单运行时文本框显示系统时间,每秒刷新一次文本框的值,所以要设置计时器的时间间隔属性为1000。

  • (3)编写代码

  • 计时器的Timer事件的代码为:

  • Thisform.Text1.Value=Time()

  • Thisform.Refresh

图7-44 显示当前系统时间

Visual FoxPro程序设计


7 3 11

7.3.11表格

表7-26 表格的常用属性

  • 表格控件又称为网格控件(Grid),它包含了多个列(Column),每列又包含了一个表头(Header)和文本框(Textbox),表头用来显示字段的标题,文本框用来显示字段的内容。每一列还拥有自己的一组属性、事件和方法。利用表格控件,可以在表单或者页面中显示和操作数据表的内容。下面来介绍它的主要属性、事件和方法。

  • (1)表格的常用属性

  • 常用属性如表7-26所示。

  • (2)列的常用属性如表7-28所示。

表7-28 列的常用属性

Visual FoxPro程序设计


7 3 111

7.3.11表格

  • 【例7-15】设计一个显示指定学生信息的表单,表单中有一个文本框Textl和一个表格控件Gridl。当在文本框中输入学号后,如果该学生存在,则表格就显示该生的情况:如果不存在,则显示相应的提示信息。其界面如图7-45所示。

  • (1)选择控件

  • 本例中使用标签、文本框、表格控件、按钮,标签用来说明文本框的作用,表格用来显示查询到的学生的详细信息。在表单上添加了表格控件之后,在其上点右键打开快捷菜单,选择“生成器”,打开表格生成器后,向表格添加需要显示的字段:学号、姓名、系科、是否统招、总分。

图7-45 显示指定学生信息

Visual FoxPro程序设计


7 3 112

7.3.11表格

  • (2)属性设置

  • 按钮Command1的Caption属性设为“查询”。

  • 标签Ladel1的Caption属性设为“输入要查询学生学号”

  • Grid的Recordsourcetype属性设为0-表(注:如果学生.dbf添加到数据环境中,则选:1-别名);Recordsource属性设为学生。

  • (3)编写代码

  • 表格控件的数据源连接到student.dbf,表单运行时将显示student.dbf中的所有数据,而题目要求只显示指定学号的学生记录,考虑将所有的记录先删除,当在Textl中输入指定学号时,只恢复指定学号的记录。所以,在表单初始化时要先设置Set Delete On,忽略所有做过删除标记的记录;在文本框中输入条件后,恢复指定学号的记录,选择文本框Textl的valid事件来实现功能。代码如下:

Visual FoxPro程序设计


7 3 113

7.3.11表格

  • 表单Forml的Init事件代码:

  • Set Delete On &&忽略所有做过删除标记的记录

  • Use student.dbf

  • Delete all

  • 按钮Command1的Click事件代码:

  • IF EMPTY(Thisform.Text1.value)

  • RETURN .F.

  • Else

  • Recall All &&恢复所有学生记录,以便查询重新输入的查询条件

  • Locate For Alltrim(学号)=Alltrim(Thisform.Text1.Value) &&查找指定学号的记录

  • If Found()

  • Delete All

  • Recall For Alltrim(学号)=Alltrim(Thisform.Text1.Value)

  • &&如果找到指定学号的学生,删除所有学生记录,只恢复指定学号的记录

  • Else

  • Delete All

  • Messagebox("查无此人!",0,"提示信息")

  • &&如果没找到指定学号的学生,删除所有学生记录,显示提示信息"查无此人!"

  • Endif

  • RETURN .T.

  • Endif

  • Thisform.Refresh

Visual FoxPro程序设计


2997019

7.4综合应用

  • 通过前面的学习,我们已经介绍了常用控件的属性、方法和事件,掌握了关于表单的设计方法和技巧。下面我们将通过部分实例,进一步的说明表单程序设计的方法和步骤,实现表单程序的综合应用。

  • 【例7-16】任意输入两个1—100之间的整数数字,求两个数之间所有数字的累加和,设计界面如图7-46所示。

图7-46 累加运算

Visual FoxPro程序设计


2997019

7.4综合应用

  • 在“计算”按钮的Click事件里编写代码如下:

  • sum=0

  • x=VAL(thisform.text1.Value)

  • y=VAL(thisform.text2.Value)

  • FOR i=x to y

  • sum=sum+i

  • ENDFOR

  • thisform.text3.Value=sum

  • thisform.refresh

  • 程序运行结果如图7-47所示。

图7-47 运行效果

Visual FoxPro程序设计


2997019

7.4综合应用

  • 【例7-17】设计一表单,界面如图7-48所示,能够使标签在表单中自动的移动,并且在碰到表单的左右边界之后,向相反方向继续运动,直到表单结束运行。

  • (1)属性设置

  • 将标签Label1的Caption属性设为“移动的标签”。

  • 将标签Label1的Borderstyle属性设为1。

  • 将计时器Timer1的Interval属性设为20

  • (2)在表单form1的Init事件中编写代码如下:

  • PUBLIC s

  • s=5

  • 在计时器Timer1的Timer事件中编写代码如下:

  • thisform.label1.Left=thisform.label1.Left+s

  • IF thisform.label1.Left+thisform.label1.Width >=thisform.Width

  • s=-s

  • ENDIF

  • IF thisform.label1.Left<=0

  • s=-s

  • endif

图7-48 左右移动的标签

Visual FoxPro程序设计


2997019

7.4综合应用

  • 【例7-18】制作学生成绩管理系统登录表单如图7-49所示,要求在正确的登录操作后能够进入“顶层表单”,以及在输入有误的情况下进行错误提示,并且在表单的左下脚位置显示系统日期和事件,运行结果如图7-50所示。

图7-49 登录表单

图7-50 运行结果

Visual FoxPro程序设计


2997019

7.4综合应用

  • 在“确定”按钮Command1的Click事件中编写代码如下:

  • username=thisform.combo1.value

  • pwd=alltrim(thisform.text1.value)

  • locate for 用户=username

  • if found() .and. 密码=pwd

  • do form 顶层表单.scx

  • thisform.release

  • else

  • messagebox("操作员密码错!")

  • thisform.text1.setfocus

  • endif

  • 在“退出”按钮Command2的Click事件中编写代码如下:

  • release thisform

  • close all

  • quit

  • 在计时器Timer1的Timer事件中编写代码如下:

  • thisform.label4.caption="日期:"+Alltrim(str(year(date())))+"年"+Alltrim(str(month(date())))+"月"+Alltrim(str(day(date())))+"日"+chr(13)+"时间:"+time()

Visual FoxPro程序设计


2997019

7.4综合应用

  • 【例7-19】设计一个student表的浏览表单,界面如图7-51所示,表单刚运行时,显示第一条记录,且“前一记录”和“首记录”两命令按钮呈灰色;当记录指针移到表头时,“前一记录”和“首记录”两命令按钮变灰色;当记录指针移到表尾时,“后一记录”和“末记录”两命令按钮变灰色;其他按钮则为正常状态。通过“添加”、“删除”按钮还可以实现表中记录的添加和删除操作,运行结果如图7-52所示。

图7-51 程序界面

图7-52 运行界面

Visual FoxPro程序设计


2997019

7.4综合应用

  • 在本例中,student表中的各个字段是直接从数据环境中拖到表单上的,所以文本框以及复选框控件自动绑定数据源。

  • 注意

  • 与表有关的表单设计,可以通过数据环境来绑定数据源,而不必在属性窗口中逐个设置每个控件的数据源属性。

  • 在表单Form1的Init事件中编写代码如下:

  • thisform.command1.Enabled = .F.

  • thisform.command2.Enabled = .F.

  • 在“首记录”按钮Command1的Click事件中编写代码如下:

  • go top

  • thisform.command1.Enabled = .F.

  • thisform.command2.Enabled = .F.

  • thisform.command3.Enabled = .T.

  • thisform.command4.Enabled = .T.

  • thisform.Refresh

Visual FoxPro程序设计


2997019

7.4综合应用

  • 在“前一记录”按钮Command2的Click事件中编写代码如下:

  • SKIP -1

  • IF BOF()

  • thisform.command1.Enabled = .F.

  • thisform.command2.Enabled = .F.

  • ENDIF

  • IF !EOF()

  • thisform.command3.Enabled = .T.

  • thisform.command4.Enabled = .T.

  • ENDIF

  • thisform.Refresh

  • 在“后一记录”按钮Command3的Click事件中编写代码如下:

  • SKIP

  • IF EOF()

  • SKIP -1

  • thisform.command3.Enabled = .F.

  • thisform.command4.Enabled = .F.

  • ENDIF

  • IF !BOF()

  • thisform.command1.Enabled = .T.

  • thisform.command2.Enabled = .T.

  • ENDIF

  • thisform.Refresh

Visual FoxPro程序设计


2997019

7.4综合应用

  • 在“末记录”按钮Command4的Click事件中编写代码如下:

  • go bottom

  • thisform.command1.Enabled = .T.

  • thisform.command2.Enabled = .T.

  • thisform.command3.Enabled = .F.

  • thisform.command4.Enabled = .F.

  • thisform.Refresh

  • 在“添加记录”按钮Command5的Click事件中编写代码如下:

  • APPEND BLANK

  • thisform.Refresh

  • 在“删除记录”按钮Command6的Click事件中编写代码如下:

  • DELETE

  • PACK

  • Thisform.Refresh

Visual FoxPro程序设计


2997019

本章小结

  • 表单是用户与Visual Fox Pro应用程序之间进行数据交换的界面,是最为常用的数据显示及编辑方式。它可以包含各种不同的控件,用户可以通过面向对象的、可视化的程序设计方法利用这些控件制作不同的按钮、下拉框、选项框等,使用户能利用友好、美观的人机交互界面进行数据的接收、显示、和编辑,实现与应用程序的连接。

Visual FoxPro程序设计


2997019

Thank You


  • Login