1、第2章 面向对象程序设计 概念与入门,(时间:4次课,8学时),第2章 面向对象程序设计概念与入门,教学提示:在这一章里,我们将学习面向对象程序设计的基本概念,认识程序的核心是由对象和响应各种事件的代码组成的。本章主要介绍:表单与一些基本控件的特点、创建方法和使用方法。对象的三要素:属性、事件和方法。面向对象的程序设计就是从这三要素入手,设置属性、使用方法、编制事件过程代码以驱动程序运行。,第2章 面向对象程序设计概念与入门,2.1 对 象 和 类 2.2 对象的属性、事件和方法 2.3 表 单 2.4 表单上的常用控件 2.5 上 机 指 导 2.6 习 题,2.1 对 象 和 类,2.1.
2、1 对象 2.1.2 类,2.1.1 对象,日常生活中对象的例子:一辆汽车一张桌子一台电脑在可视化编程中,对象是应用程序的基本元素,常见的对象有表单、文本框、列表框等。 。从可视化编程的角度来看,对象是一个具有属性(数据)和方法(行为方式)的实体。,主板 CPU内存 显示器,2.1.2 类,类的概念类(Class)是对一组对象的属性和特征的抽象描述,即是对于拥有数据和一定行为特征的对象集合的描述。 类是抽象的,而对象是具体的,它们既有区别又有联系。 2. 类的特征 类是对象的抽象,是具有相同属性和特征的对象的集合,类是一个模板,对象由它生成。 (1)类的继承性 (2)类的封装性 (3)类的多态
3、性,2.2 对象的属性、事件和方法,2.2.1 对象的属性 2.2.2 方法 2.2.3 事件,2.2.1 对象的属性,每个对象都有其特征,在计算机程序语言中叫做属性(Property)。 设置对象的属性一般有两条途径: (1)如果在程序设计时设置对象的属性,则需要使用属性窗口。,2.2.1 对象的属性,(2)如果要在程序运行中更改对象的属性,可以使用Visual FoxPro的赋值语句。 格式为: =,2.2.2 方法,对象中除了属性之外,还包含一些控制对象的动作或功能。以气球为例,假设气球这个对象有3个动作,分别是充气(用氢气充满气球)、放气(排出气球中的气体)、上升(放手让气球飞走)。这
4、3个动作都是气球这个对象所提供的功能,以程序设计术语来说,就是对象所提供的方法(Method)。 Visual FoxPro的方法用于完成某种特定功能。Visual FoxPro的方法也属于对象的内部函数,如添加对象(AddObject)方法、绘制矩形(Box)方法、释放表单(Release)方法等。方法被“封装”在对象之中,不同的对象具有不同的内部方法。Visual FoxPro提供了百余个内部方法供不同的对象调用。 在程序中调用对象方法的格式如下: =(),2.2.3 事件,1. 事件的概念 对于对象而言,事件(Event)就是发生在该对象上的事情。 Visual FoxPro中提供了许多
5、对象,让用户利用它们来设计应用程序。不同的对象能够识别不同的事件 。 事件过程 处理事件的步骤就是事件过程(Event Procedure)。事件过程是针对事件的,而事件过程中的处理步骤在Visual FoxPro程序设计中就是所谓的程序代码。,2.2.3 事件,事件驱动程序设计 程序在执行时会先等待某个事件的发生,然后再去执行处理此事件的事件过程,事件过程要经过事件的触发才会被执行。这种动作模式就称为事件驱动程序设计(Event Driven Programming Model),也就是说,由事件控制整个程序的执行流程。(1)等待事件的发生。(2)事件发生时,执行相应的事件过程。 事件的程序
6、调用 事件过程由事件的激发而调用其代码,也可以在运行中由程序调用其代码,在程序中调用事件代码的格式如下: ,2.3 表 单,2.3.1 表单设计器 2.3.2 表单对象 2.3.3 对象的引用 2.3.4 保存、修改及运行表单,2.3.1 表单设计器,1. 打开【表单设计器】选择【文件】|【新建】或单击常用工具栏上的【新建】按钮,弹出【新建】对话框,选中【表单】单选按钮,然后单击【新建文件】按钮。在命令窗口中使用CREATE FORM命令。2 .【表单设计器】工具栏 【表单设计器】工具栏中包括设计表单时要用的所有工具按钮。把鼠标指针移到工具栏的某按钮上,就会出现该工具按钮的名称。,2.3.1
7、表单设计器,3. 【表单控件】工具栏 单击【表单设计器】工具栏上的【表单控件工具栏】按钮,打开【表单控件】工具栏。,2.3.2 表单对象,表单(Form)是应用程序的用户界面,也是进行程序设计的基础。各种图形、图像、数据等都是通过表单或表单中的对象显示出来的,因此表单是一个容器对象。 1. 表单的结构,2.3.2 表单对象,2.表单的属性,2.3.2 表单对象,3.表单的事件与方法,2.3.3 对象的引用,对象的引用方式就是在过程代码中表示该对象的方法,一般说是通过对象的名称来引用对象,但要注意对象的包含层次。引用时有绝对引用和相对引用之分。 1. 对象的包容层次 Visual FoxPro中
8、的对象根据它们所基于的类的性质可分为两类:容器类对象和控件类对象。 (1)容器类对象:可以包含其他对象,并且允许访问这些对象,例如表单集、表单、表格等。 (2)控件类对象:只能包含在容器对象之中,而不能包含其他对象,例如命令按钮、复选框等。 2. 对象的引用如 (1)绝对引用通过提供对象的完整容器层次来引用对象称为绝对引用。 (2)相对引用 在容器层次中引用对象时,可以通过快捷方式指明所要处理的对象。,2.3.4 保存、修改及运行表单,1.保存表单系统默认的表单文件的扩展名为.scx,表单备注文件的扩展名为.sct。在保存表单文件时系统给出默认文件名“表单1” 。 l 使用菜单:选择【文件】|
9、【保存】命令。 l 使用工具栏:单击常用工具栏上的保存按钮。 关闭表单设计器时,系统会对未作保存的表单给出保存提示。 2.运行表单 l 在表单界面上右击,从弹出的快捷菜单中选择【执行表单】。 l 单击常用工具栏的按钮。 l 在命令窗口中键入“DO FORM ”。 使用菜单:选择【程序】|【运行】命令,在【运行】对话框中选择【文件类型】为【表单】,选中要运行的表单文件,单击【运行】按钮。 3.修改表单,2.3.4 保存、修改及运行表单,3.修改表单 选择【文件】|【打开】命令或单击常用工具栏中的打开按钮,在打开的对话框中选择要修改的表单文件。 在命令窗口中键入命令:“MODIFY FORM ”。
10、 在运行表单后,单击常用工具栏中的按钮,也可对表单进行修改,2.4 表单上的常用控件,2.4.1 对象的基本属性 2.4.2 标签(Label) 2.4.3 命令按钮(Commandbutton) 2.4.4 文本框与编辑框(Textbox,Editbox) 2.4.5 计时器(Timer) 2.4.6 复选框(Check)与选项按钮组(Optiongroup) 2.4.7 组合框(Combo)与列表框(List) 2.4.8 页框(PageFrame)、图像(Image)及其他,2.4.1 对象的基本属性,1. Name属性名称属性:这个属性是所有对象都有的属性,指定在代码中引用对象时所用的
11、对象名。创建对象时Visual FoxPro自动提供一个默认名称该对象的类型加上一个惟一的整数。例如:第一个新建表单对象的名称为Form1,在同一表单上创建的第二个文本框缺省名为Text2。在程序中,对象名称是作为对象的标识在程序中被使用,而不会显示在对象上。该属性在对象设计时可用,运行时可读写。 2. Caption属性标题属性:这个属性决定了对象上显示的内容,属性值为字符型,标题文本需放在西文引号中。,2.4.1 对象的基本属性,3. 布局属性 (1) Height、Width、Top和left属性这四个属性反映了对象的外部尺寸与相对位置,属性值为数值型。,2.4.1 对象的基本属性,(2
12、)AutoCenter属性指定表单对象第一次显示在Visual FoxPro主窗口时,是否自动居中放置。 属性值为逻辑型。当设置为“真”(.T.)时,表单对象置于中央,并且依据当前位置重新设置Top和Left属性值;当设置为“假”(.F.)时(默认值为“假”),表单对象并不置于中央,并且依据Top和Left属性值确定的坐标放置表单对象。 (3)AutoSize属性指定控件是否依据其内容自动调节大小。 属性值为逻辑型。当设置为“真”(.T.)时,控件依其内容自动调节大小;当设置为“假”(.F.)时,当控件内容超过控件区域时,只显示一部分内容,控件大小保持不变。,2.4.1 对象的基本属性,(4)
13、AlwaysOnTop属性指定表单是否可被其他窗口所覆盖。属性值为逻辑型。当设置为“真”(.T.)时,表单总是显示在最顶层(只有AlwaysOnTop属性设为“真”的窗口可显示在表单之上);当设置为“假”(.F.)时,表单可被其他窗口覆盖。该属性在设计时可用,在运行时只读。 (5)Desktop属性指定表单是否放在Visual FoxPro主窗口中。属性值为逻辑型。当设置为“真”(.T.)时,表单可放在Windows桌面的任何位置;当设置为“假”(.F.)时,表单包含在Visual FoxPro主窗口中。该属性在表单设计时可用,运行时只读。,2.4.1 对象的基本属性,4. 修饰属性 (1)F
14、ont系列属性 FontName、FontBold、FontItalic、FontStrikethru、 FontUnderline、FontSize。 (2)BackColor、ForeColor属性指定对象显示文本或图形的背景色或前景色。 (3)BackStyle属性指定一个对象的背景是否透明。 (4)Picture属性指定在控件中显示的位图文件。 (5)Curvature属性指定形状控件的弯角曲率。 (6)BorderStyle属性指定对象的边框样式。,2.4.1 对象的基本属性,4. 状态属性 (1)Enabled属性指定该对象能是否允许操作,是否响应用户触发的事件。 (2)Visib
15、le属性指定对象是可见还是隐藏。 (3)ReadOnly属性指定用户是否可以编辑一个控件或者更新与临时表对象相关联的表或视图。 (4)Default属性按下Enter键,则会有某一个命令按钮作出响应。,2.4.2 标签(Label),标签控件是按一定格式显示在表单上的文本信息,常用来显示表单中各种说明和提示。如文本框(Textbox)和微调按钮(Spinner)这些没有自己的Caption属性的控件,可以用Label标识。标签的特点是不能直接编辑,只能通过Caption属性的设置来改变其显示内容,因此不能用它作为输入信息的界面,它没有数据源。 1主要属性 (1) Caption在Label中实
16、际显示的文本是由Caption属性控制的,该属性可以在设计时在【属性】窗口中设置或在运行时用代码赋值。 (2) Left、Top可以通过这两个属性确定Label的位置。 (3) BackColor、BackStyle、ForeColor和Font系列属性可以通过这些属性改变Label的外观。 (4) AutoSize、WordWrap改变Label尺寸以适应其内容(较长或较短的标题)。,2.4.2 标签(Label),2事件标签经常接收的事件有:单击(Click)、双击(DblClick)、和改变(Change)。但实际上标签仅起到显示文本的作用,一般不需编写事件过程。 3举例 例2.1 设计
17、一个简易表单,其中包含两个标签控件,运行效果如图2.4.2所示。三个对象的属性设置见表2.4.2。,2.4.2 标签(Label),具体步骤简述如下: (1) 创建表单。 (2) 在表单上创建标签控件。 (3) 设置属性。,2.4.2 标签(Label),具体步骤简述如下:(4) 调整标签的位置。 (5) 保存表单。 (6) 运行表单。本例中的两个标签分别设计成背景样式透明和不透明两种,对比可看出效果的不同;Label2使用了WordWrap属性为真的设置,有利于对这一属性的理解,为达到图2.4.2中显示的效果,在Caption文本中加入了空格。,2.4.3 命令按钮(Commandbutto
18、n),使用命令按钮是使用户与应用程序交互的最简便的一个方法。CommandButton 控件可以用来启动、中断或结束一个进程。在应用程序中,命令按钮的应用十分广泛。在程序执行期间,当用户选择某个命令按钮时,就会执行相应的事件过程代码。通常有几种方法可以选中命令按钮:用鼠标单击;按Tab键将焦点移动到相应按钮上,再按回车键;使用快捷键(Alt+有下划线的字母)。 1主要属性 Caption在按钮上显示的文字。 Height、Width、Left、Top可以通过这几个属性确定命令按钮的大小和位置。 Picture可以通过这个属性改变命令按钮的外观,该属性可显示图形文件(.bmp和.ico)。 To
19、olTipText与Picture属性同时使用,设置提示文本。Default 和 Cancel当表单上有多个按钮可选择一个命令按钮作为默认的命令按钮。,2.4.3 命令按钮(Commandbutton),2事件 命令按钮主要接收单击(Click)事件。3举例 例2.2 设计一个简易表单,其中包含四个命令按钮控件,运行效果如图2.4.3所示。要求运行时按下【确定】按钮,调用例2.1所制作的表单,按下【取消】按钮释放表单,按下【图片】按钮使【显示】按钮变灰,不能使用。相关的属性设置见表2.4.3。,2.4.3 命令按钮(Commandbutton),表2.4.3 例2.2属性设置 :,2.4.3
20、命令按钮(Commandbutton),具体步骤与上一例题大致相同,下面简述不同之处: (1) 创建第一个CommandButton控件以后,可以通过选中、复制、粘贴三个步骤,再创建另外两个CommandButton控件,这样就得到了三个标题一样、尺寸相同但名称各异的命令按钮。这种作法的优点是,三个按钮的外观一致。 (2) 利用菜单调整布局方式。先按住Shift键,连续选中Cmd1、Cmd2、Cmd3三个命令按钮,然后选择【格式】|【垂直间距】|【相同距离】命令,把三者间距调好。 (3) 编写事件过程代码。选中要写代码的对象,双击,打开代码窗口,如图2.4.4所示。左边【对象】下拉列表框中显示
21、的是当前选中的按钮控件名,在右边的【过程】下拉列表框中选择Click事件,然后在代码框中书写代码。书写完毕关闭代码窗口。 (4) 保存表单文件,名为vfp0202.scx。 (5) 运行表单时,分别单击四个按钮,观察其运行结果。,2.4.4 文本框与编辑框(Textbox,Editbox),文本框(Textbox)主要用于数据表某些字段的输入、输出,以及从窗口给内存变量赋值等操作。文本框中含有一行文本。编辑框(Editbox)在表单上也是用于接收输入文本或查看文本的控件。编辑框可以包含多行文本。在文本框和编辑框中可以使用标准的编辑功能,如剪切、复制、粘贴等。 1主要属性 Value文本框输入或
22、输出的数据值。 Format指定Value属性的输出格式。 InputMask指定在控件中如何输入和显示数据。 ReadOnly确定文本框中的数据是否只读。 PasswordChar指定用作占位符的符号。 TabIndex指定Tab键的次序,即按Tab键时焦点在控件上移动的顺序。,2.4.4 文本框与编辑框(Textbox,Editbox),SelStart、SelLength、SelText选中文本的起始位置、选中文本的长度、选定文本的内容。这几个属性只能在程序运行中用赋值语句设置。2事件与方法 SetFocus方法获得焦点,执行此方法可把插入点移到此文本框。 GotFocus事件当对象获得
23、焦点时发生。 LostFocus事件当对象失去焦点时发生。 InteractiveChange事件 通过键盘输入或鼠标操作改变文本框的值时即刻发生。 Valid事件该事件发生在控件失去焦点以前(顺序在LostFocus事件之前)。,2.4.4 文本框与编辑框(Textbox,Editbox),ProgrammaticChange事件该事件在赋值语句改变文本框的Value属性时发生。KeyPress事件当用户按下并且释放键盘上的一个键时,引发该事件,每输入一个字符就会引发一次。此事件会返回一个参数nKeyCode到该事件过程中。 3举例例2.3 设计一个表单,在表单上有文本框和编辑框等控件。要求
24、用户输入正确密码以后,激活两个编辑框,用户可由“原文”处选择有用内容复制到“摘要”处,原文显示内容不能被用户修改。按“确定”按钮,接收摘要内容,按“取消”按钮放弃操作。,2.4.4 文本框与编辑框(Textbox,Editbox),运行结果如图2.4.5所示,相关的属性设置见表2.4.4,相关的事件代码见表2.4.5。,2.4.4 文本框与编辑框(Textbox,Editbox),表2.4.4 例2.3的属性设置 :,2.4.4 文本框与编辑框(Textbox,Editbox),表2.4.5 例2.3的事件过程代码 :,2.4.4 文本框与编辑框(Textbox,Editbox),主要步骤和设
25、计要点: (1) 让几个控件尺寸相同可通过复制手段或设置相同Height、Width属性的方法;控件的对齐方式可用【格式】菜单或布局工具栏上按钮调整,前面已讲不再赘述。(2) Text1用于输入密码,密码输入时是不愿被别人看到的,所以使用掩码的形式,将PasswordChar属性设置为“*”;判断密码是否正确,用了IfEndif选择结构,(详见第5.3节),若输入的密码正确,就执行选择结构中的四条语句,若不正确,什么也不做;密码设为“ABCD”,判断条件里用了转换大写字母函数,即认为用户不论输入“ABCD”还是“abcd”都正确;这些代码写在Text1的LostFocus事件中,当用户将焦点移
26、出Text1时(如按回车键时)起作用。,2.4.4 文本框与编辑框(Textbox,Editbox),(3) Edit1和Edit2两个编辑框,初始设为不可用状态,待密码正确时改为可用状态;Edit1用于显示原文,为使之不能被改,设置为只读;为明显区分两个文本框功能和状态的不同,将Edit1的失效时背景色设置为青色。 (4) 为存放原文和摘抄内容,在Form1的Init事件中声明了全局变量txt1,txt2(关于全局变量的概念详见第5.5节),并为txt1赋了值;在Command1的Click代码中,将摘抄内容赋给了txt2,在Command2的Click代码中,将Edit2的值清空。(5)
27、表单中的控件中,Text1的TabIndex设置为1,是为保证运行时焦点落在Text1上,而表单的TabIndex值为1 是默认值,是针对表单集而言的,本例不涉及。,2.4.5 计时器(Timer),计时器是在应用程序中用来处理复发事件的控件。设计时可见,而在运行时不可见。计时器控件与用户的操作独立。它对时间作出反应,可以让计时器以一定的间隔重复地执行某种操作。 1主要属性 IntervalTimer 事件之间的毫秒数。考虑到内部误差,一般将间隔设置为所需精度的一半。但尽量不要设置太小的时间间隔。 Enabled对大多数对象来说,Enabled 属性决定对象是否能对用户引起的事件作出反应。对计
28、时器控件来说,将 Enabled 属性设置为“假”(.F.),会挂起计时器的运行。若想让计时器在表单加载时就开始工作,应将这个属性设置为“真”(.T.),否则应将这个属性设置为“假”(.F.)。也可以选择一个外部事件(如命令按钮的 Click 事件)启动计时器操作。,2.4.5 计时器(Timer),2事件 Timer近似等间隔 (Interval指定的间隔)激活的事件。 3举例 例2.4 设计一个表单,用计时器控件实现两个标签的动画效果。要求:“欢迎使用”四个字闪动,“谢谢惠顾”四个字向左移动,直至消失,再从右侧露出,继续向左移动。两个按钮分别控制动画效果的暂停和恢复。,2.4.5 计时器(
29、Timer),表2.4.6 例2.4的属性设置 :,2.4.5 计时器(Timer),表2.4.7 例2.4的事件过程代码 :,2.4.5 计时器(Timer),主要步骤和设计要点: (1) 创建计时器Timer1和Timer2,把它们放在适当位置,因为运行时它们是不可见的,所以大小、位置并不重要。 Timer1针对Label1,Timer2针对Label2。 (2) Label1的时隐时现的闪动效果是由改变它的前景色来实现的。当把前景色设置为与背景色相同,就形成了“隐”,时间间隔0.3秒以后,让前景色再变回原来的红色,就产生了“现”,往复交错就有了闪动的效果。具体是由Interval属性激活
30、Timer事件来完成。 (3) Label2的移动效果是靠左边界的改变来实现的。每次的Timer事件发生,左边界减少一点。如果Label2的右边界移动到表单的左边界以左,就重设它的左边界等于表单的宽度。,2.4.5 计时器(Timer),主要步骤和设计要点: (4) 两个按钮的单击事件中分别设置了两个计时器的Interval属性,当Interval=0时,就不能激活Timer事件,从而达到了停止的效果。 (5) 在Timer的Init事件中声明了全局变量flag,并设初值为1。每一次执行Timer1的Timer事件,改变它的符号,根据flag的不同值决定Label1的前景色的变化。,2.4.6
31、 复选框(Check) 与选项按钮组(Optiongroup),为用户提供一组预先设定的选项,可以用复选框或选项按钮组。这样可以控制用户的选择,防止存储无效数据。 1主要属性 Caption设置复选框或选项按钮组的文本注释内容,即复选框和选项按钮组边上的文本标题。 Alignment设置标题和按钮相对位置。值为0,表示控件按钮在左边,标题显示在右边(默认值);值为1,表示控件按钮在右边,标题显示在左边。 Value指定复选框或选项按钮组的状态。 l 选项按钮组:值为0表示未被选中;值为1表示被选中。 l 复选框:值为0表示未被选中;值为1表示被选中;值为2表示禁止用户选择(变灰)。 Style
32、指定复选框或选项按钮组的显示方式,用于改善视觉效果。值为0表示标准方式;值为1表示图形方式,外表与按钮相同。,2.4.6 复选框(Check) 与选项按钮组(Optiongroup),2. 事件 Click复选框和选项按钮组都能接收这一事件。当用户单击复选框或选项按钮组的单选按钮时,它们会自动改变状态。 3. 举例 例2.5 设计表单,表单上创建选项按钮组和复选框。要求利用选项按钮组选择大标题的字体,利用复选框选择是否显示副标题,表单的运行效果如图2.4.7所示。,2.4.6 复选框(Check) 与选项按钮组(Optiongroup),主要步骤和设计要点: (1) 用生成器创建选项按钮组。
33、从表单控件工具栏选择选项按钮组控件,放置在表单合适位置上; 右击选项按钮组,选择【生成器】命令; 【选项按钮组生成器】对话框共有三个选项卡,其中【按钮】选项卡、【布局】选项卡如图2.4.8所示,【值】选项卡本例不涉及。 填写选项卡上的相关内容,方便直观地设置属性。其中在【按钮】选项卡上若不选择【标准】而选择【图形】单选按钮,选项按钮组的外观将会变为和命令按钮一样。在图形一栏可设置按钮的Picture属性。,2.4.6 复选框(Check) 与选项按钮组(Optiongroup),主要步骤和设计要点: (2) Optiongroup1是容器类,Option是它包含的对象。若想在表单上选中Opti
34、ongroup1中的某一个选项钮进行设计,应用鼠标指向Optiongroup1后右击弹出快捷菜单,选【编辑】一项,选项按钮组周围出现虚框,此时可单击选中任一选项钮。 (3) Optiongroup1的Value属性值设置为n,是指定第n个按钮是被选中状态,若为0,则没有被选中的单选钮。Option中的Value属性表示该单选钮当前的状态是否被激活,属性值为0或1,若干个单选钮中只能有一个其值为1,其余全都为0。,2.4.6 复选框(Check) 与选项按钮组(Optiongroup),表2.4.8 例2.5主要属性设置 :,2.4.6 复选框(Check) 与选项按钮组(Optiongroup
35、),表2.4.9 例2.5事件过程代码:,2.4.6 复选框(Check) 与选项按钮组(Optiongroup),主要步骤和设计要点: (4) Label2的Visible属性初始设置为.F.,而Check1的Value属性初始设置为0,这是相一致的,不会出现运行初始的矛盾状况。 (5) Optiongroup1的Value属性初始值设置为1,Label1的FontName属性初始值设置为“宋体”,这也是相一致的,不要产生矛盾。Optiongroup1的Value属性初始值设置最好不要设为0,作为单选钮应至少有一个选项被选中。 (6) 选项按钮组和复选框都是有Caption属性的,所以不用设
36、计标签控件为其做解释说明。,2.4.7 组合框(Combo)与列表框(List),列表框用于从列表中选中待选条目;组合框类似于列表框和文本框的组合,既可以在其中输入值又可以从列表中选择条目。通常,如果表单上有足够的空间,并且想强调可选择项,应考虑使用列表框;要想节省空间,并且想强调当前选定的项,则使用下拉列表框更合适。 1主要属性 (1) 列表框 Value数据项的值,可以是数值型,也可以是字符型,默认值为数值型。 ColumnCount列表框的列数。 ControlSource用户从列表中选择的值保存在何处。 MoverBars是否在列表项左侧显示移动钮栏,这样有助于用户更方便地重新安排列表
37、中各项的顺序。 MultiSelect用户能否从列表中一次选择一个以上的项。 RowSource列表中显示的值的来源。 RowSourceType确定 RowSource 是下列哪种类型,一个值、表、SQL 语句、查询、数组、文件列表或字段列表。,2.4.7 组合框(Combo)与列表框(List),1主要属性 (2) 组合框 Style指定组合框类型。其中,0(默认值)为下拉组合框;1为下拉列表框。 DisplayValue组合框或列表框中选定数据项的第一列内容。 ControlSource用于保存用户选择的表字段或输入的表字段。 DisplayCount指定在列表中允许显示的最大项数。 I
38、nputMask指定下拉组合框允许键入的数值类型。 RowSource指定组合框中项的数据源。 RowSourceType指定组合框中数据源类型。参见列表框的该属性。2事件 InteractiveChang通过键盘输入或鼠标操作改变组合框或列表框的选项值时即刻发生。 AddItem 给 RowSourceType 属性为 0 的列表添加一项。 RemoveItem从 RowSourceType 属性为 0 的列表中删除一项。 Requery当 RowSource 中的值改变时更新列表。,2.4.7 组合框(Combo)与列表框(List),3. 举例 例2.6 设计表单,表单上放有列表框和组合
39、框。要求用户选择列表框中某项可改变表单背景颜色,选择组合框中某项或者用户向组合框中输入字体名称,可以改变大标题的字体。表单运行情况如图2.4.9所示。,2.4.7 组合框(Combo)与列表框(List),主要步骤和设计要点: (1)使用组合框生成器和列表框生成器。组合框生成器如图2.4.10所示。,2.4.7 组合框(Combo)与列表框(List),表2.4.10 例2.6主要属性设置及事件过程代码 :,2.4.7 组合框(Combo)与列表框(List),表2.4.10 例2.6主要属性设置及事件过程代码 :,2.4.7 组合框(Combo)与列表框(List),主要步骤和设计要点: (
40、2)在List1中的InteractiveChang事件中用了多分支选择结构(详见第5.3节)。分别考虑用户选择哪项值,即List1的Value值为多少,从而执行不同的设置表单背景色的语句。初始值Value设为0。(3)Check1中的InteractiveChang事件中用Allt()函数是考虑到用户输入时的规范性问题,去掉首尾空格,以保证输入正确。,2.4.8 页框(PageFrame)、图像(Image) 及其他,页框(PageFrame)控件是一个包含页面的容器控件,而它包含的页面又能包含其他控件。页框必须附加于表单之上。页框定义了它所包含的页面的诸多特性,如它们的尺寸、位置、边框样式
41、、哪一页为当前活动页等。页框是包含页面的容器对象(页面又叫作选项卡),每一个页面控件可包含相互独立的控件,因此页框可扩展表单的表面面积。页框、页面及页面上的每一个控件均有各自的属性、事件和方法。一个表单中可包含一个或多个页框,每个页框又可包含多个页面。在一个表单中,只能有一个活动页面。 图像(Image)控件是一种图形控件,可以显示.BMP图片,但不能直接修改图片。图形控件同样具有属性、事件和方法,因此可以响应事件,并可以在运行时动态地改变自己。 形状(Shape)控件用来创建各种形状图形(如各种矩形或圆)的控件。 微调(Spinner)控件能接受给定范围的数值输入。,2.4.8 页框(Pag
42、eFrame)、图像(Image) 及其他,1主要属性 (1) 页框 ActivePage当前活动页面的值。 PageCount页框的计数属性,确定页框中的页面数。默认值为2。 Tabs是否显示页面。默认值为.T.(显示页面)。 TabStretch决定页面标题是否可多行显示。默认值为1(单行显示标题)。 TabStyle决定页面的显示是两端对齐还是非两端对齐。 Picture要显示的图片(.bmp 文件)。 BorderStyle决定图像是否具有可见的边框。 Stretch如果 Stretch 设置为0剪裁,那么超出图像控件范围的那一部分图像将不显示;如果 Stretch 设置为1等比填充,
43、图像控件将保留图片的原有比例,并在图像控件中显示最大可能的图片;如果Stretch设置为2变比填充,将图片调整到正好与图像控件的高度和宽度匹配。,2.4.8 页框(PageFrame)、图像(Image) 及其他,1主要属性 (2) 微调钮 ControlSource用于保存用户选择的表字段或输入的表字段。 Increment用户每次单击向上或向下按钮时增加和减少的数值。 KeyboardHighValue用户能键入到微调文本框中的最高值。 KeyboardLowValue用户能键入到微调文本框中的最低值。 SpinnerHighValue当用户单击向上按钮时,微调控件能显示的最高值。 Spi
44、nnerLowValue当用户单击向下按钮时,微调控件能显示的最低值。,2.4.8 页框(PageFrame)、图像(Image) 及其他,1主要属性 (3) 形状 Curvature从 0(直角)到 99(圆或椭圆)的一个值。 FillStyle确定形状是透明的还是具有一个指定的背景填充方案。 SpecialEffect确定形状是平面的还是三维的。仅当 Curvature 属性设置为 0 时才有效。2事件 UpClick用户单击控件的向上滚动箭头时发生。 DownClick用户单击控件的向下滚动箭头时发生。,2.4.8 页框(PageFrame)、图像(Image) 及其他,3举例 例2.7
45、 设计表单,表单上创建页框,设置两个页面,一个放置微调按钮与图形,另一个放置两张图片。要求选中第一个页面时通过单击微调按钮可以改变图形的大小与曲度。选中第二个页面时,观看图片的不同效果。,2.4.8 页框(PageFrame)、图像(Image)及其他,表2.4.11 例2.7主要属性设置:,2.4.8 页框(PageFrame)、图像(Image)及其他,表2.4.12 例2.7事件过程代码 :,2.4.8 页框(PageFrame)、图像(Image) 及其他,主要步骤和设计要点: (1)在表单上创建页框(Pageframe1),也叫选项卡。若要用鼠标选中页面上的对象,要右击鼠标,在弹出的
46、快捷菜单中选择【编辑】,此时各个页面才能活动。 (2)在页面1上(Pageframe1.Page1)创建三个微调钮(Spinner)和一个形状(Shape1),一个微调钮对应形状的曲度,所以微调钮的上下限设为099。另两个微调钮对应形状的尺寸,它们的上下限是根据页面的布局决定的,选择为10100。 (3)在页面2上(Pageframe1.Page2)创建了两个图像(Image),Picture属性上设置了相同的图片,但Stretch属性不同,一个是等比填充,一个是变比填充。运行表单后可看出效果的不同。,2.5 上 机 指 导,2.5 上机指导,例2.8 创建一个表单,并在表单上放置常用控件,设
47、置控件属性,编写控件的相关事件代码,保存并运行表单,观察各个控件的功能作用。,2.5 上机指导,具体步骤如下: (1) 启动Visual FoxPro系统。选择【开始】|【程序】|Mocrosoft Visual Foxpro 6.0,打开Visual FoxPro主界面。 (2) 创建表单。选择【文件】|【新建】命令选择表单类型,按【新建文件】按钮,打开【表单设计器】。(3) 在表单上创建控件。 (4) 设置控件的属性。设置方法:选择【显示】|【属性】命令,或在【表单设计器】工具栏上单击【属性窗口】按钮,或选中控件并右击,在快捷菜单中选择【属性】命令。,2.5 上机指导,(5) 编写事件代码
48、。方法:选中要编写代码的控件,双击打开文本编辑器。在【过程】下拉列表框中选择相应的事件名,便可编辑事件代码。 (6) 保存表单并运行表单。单击Visual FoxPro常用工具栏上的【保存】按钮,在【另存为】对话框中输入文件名,如:vfp0208,扩展名.scx系统自动加上。选择【程序】|【运行】命令或单击Visual FoxPro常用工具栏上的【运行】按钮,运行表单。,2.6 习 题,一、填空题 1 Visual FoxPro中的对象根据它们所基于的类的性质可分为两类: 、 。 2 现实世界中的每一个事物都是一个对象,对象所具有的固有特征称为 。 3在表单中确定控件是否可见的属性是 。 4假定表单中包含一个命令按钮,那么在运行表单时,下面有关事件的引发次序是:先是 的Load事件,然后是 的Init事件,最后是 的Init事件。 5在Visual FoxPro中,创建对象时发生的事件是 ,从内存中释放对象时发生的事件是 ,用户单击对象时发生的事件是 。 6 如果在表单中不显示【关闭】、【最大化】和【最小化】按钮,应将属性 、 和 设为“假”。 7Visual FoxPro中常用的表单方法有 、 、 和 、 。,