71
1 FoxPro FoxPro 第9第 第第第第第第第 第第Form 第第 第第第第第第第第第第 第第第 第第第第第第第第第第第第第第第第第第第第第第第第第 ,。 第第第第第第第第第第第第 第第第第第 第第 一, VFP 第第第第第 第第第第 一。

第 9 章 表单和控件设计

Embed Size (px)

DESCRIPTION

第 9 章 表单和控件设计. 表单( Form )是系统中用户见到的主要界面。使用表单,可让用户在熟悉的界面下查看数据或将数据输入数据库。 表单是应用程序中最重要的一部分内容,也是 VFP 程序设计中的一个重点。. 表单概述. 表单( Form )是系统中用户见到的主要界面。使用表单,可让用户在熟悉的界面下查看数据或将数据输入数据库。 表单提供不仅仅是一个界面,它还提供丰富的对象集,这些对象能响应用户(或系统)事件,使用户尽可能方便和直观地完成信息管理工作。 表单的设计是可视化编程的基础。 - PowerPoint PPT Presentation

Citation preview

Page 1: 第 9 章     表单和控件设计

1

FoxProFoxPro

第 9章 表单和控件设计表单( Form )是系统中用户见到的主要界面。使用表单,可让用户在熟悉的界面下查看数据或将数据输入数据库。表单是应用程序中最重要的一部分内容,也是 VFP 程序设计中的一个重点。

Page 2: 第 9 章     表单和控件设计

2

FoxProFoxPro

表单概述 表单( Form )是系统中用户见到的主要界面。使用表单,可让用户在熟悉的界面下查看数据或将数据输入数据库。 表单提供不仅仅是一个界面,它还提供丰富的对象集,这些对象能响应用户(或系统)事件,使用户尽可能方便和直观地完成信息管理工作。 表单的设计是可视化编程的基础。 表单是一种容器类,是一个或多个页面的集合。表单可以包含用以显示并编辑数据的控件。

Page 3: 第 9 章     表单和控件设计

3

FoxProFoxPro

9.1 表单的建立 表单和控件是面向对象的程序设计中最基本的可视

化对象,在建立表单的过程中,要定义它们的属性,编写事件或方法的代码。创建表单可通过表单设计器和表单向导两种途径实现。

9.1.1 使用表单设计器创建表单

Page 4: 第 9 章     表单和控件设计

4

FoxProFoxPro

1 .命令方式 Create Form < 表单文件名 >.scx2 .菜单方式 ⑴ 在主菜单中,选择“文件→新建”,进入新

建窗口; ⑵ 在“新建”窗口中,选择“表单”,单击

“新建文件”按钮。 ⑶ 在“文件”菜单项中,单击“保存”命令,

输入文件名3 .在“项目管理器”中创建表单 在“项目管理器”中选择“文档”标签下的

“表单”,然后单击“新建”按钮。

Page 5: 第 9 章     表单和控件设计

5

FoxProFoxPro9.1.2 利用表单向导创建表单

( 1 )、在 VFP 系统的主菜单中单击“文件”菜单中的“新建”菜单项,进入“新建”窗口。

Page 6: 第 9 章     表单和控件设计

6

FoxProFoxPro第二步

( 2)、在“新建”窗口中单击“表单”按钮,再单击“向导”按钮,进入“向导选取”窗口,如左图所示。

Page 7: 第 9 章     表单和控件设计

7

FoxProFoxPro第三步( 3)、在“向导选取”窗口单击“表单向导”项,进入“表单向导”步骤 1-字段选取窗口,如左图所示。

Page 8: 第 9 章     表单和控件设计

8

FoxProFoxPro第四步( 4)、在字段选取窗口,先选择作为数据资源的数据库或表。最后单击按钮“下一步”,进入“表单向导”步骤 2-选择表单样式窗口,如左图所示。

Page 9: 第 9 章     表单和控件设计

9

FoxProFoxPro第五步( 5)进行样式选择,是来指定表单上控件的外观。

( 6)、在排序次序窗口,可在“可用的字段或索引标识”列表框中选择一到三个字段或一个索引标识来排序记录。

第六步

Page 10: 第 9 章     表单和控件设计

10

FoxProFoxPro

第七步

( 7)、在完成窗口,首先在“请键入表单标题”文本框中,键入表单标题;然后选择表单的保存方式。最后单击“完成”,保存表单。

Page 11: 第 9 章     表单和控件设计

11

FoxProFoxPro

运行表单运行表单

Page 12: 第 9 章     表单和控件设计

12

FoxProFoxPro9.2.2 表单的数据环境

表单上的对象和库中的数据的联系是通过数据环境完成的。数据环境就是指与表单相关的数据的集合,它指明表单的数据的来源,把表单控件对象的 ControlSource 属性设置为表的字段,这样就可以显示该字段的记录。

数据环境操作主要有如下几个内容:1. 打开数据环境;2. 设置数据环境属性;3. 向数据环境添加表;4. 设置数据环境中表的属性;5. 建立数据环境中表的关系。

Page 13: 第 9 章     表单和控件设计

13

FoxProFoxPro

2. 2. 创建一对多数据创建一对多数据表单表单

与前面不同的是: 从父表中

选择字段 丛子表中

选择字段按向导提示步骤操作即可

Page 14: 第 9 章     表单和控件设计

14

FoxProFoxPro

9.1.3 9.1.3 表单的修改及运行表单的修改及运行

在表单设计器中进行修改; 在项目中进行修改; 用命令方式修改: Modify Form < 表单文件名 >.scx

Page 15: 第 9 章     表单和控件设计

15

FoxProFoxPro

9.2 9.2 表单与控件表单与控件VFP 6.0 提供了大量的表单控件,其中大部分控件具有相同的属性、事件和方法,它们既可以通过属性编辑器进行设置或编辑。也可以在程序执行过程中创建或改变控件的属性,调用控件的方法程序

Page 16: 第 9 章     表单和控件设计

16

FoxProFoxPro

表单设计器表单设计器

Page 17: 第 9 章     表单和控件设计

17

FoxProFoxPro

使用表单设计器创建单表表单

表单设计器制作表单的逻辑思路:在表单上建立显示控件,并调整好位置把控件和数据库中的数据绑在一起

Page 18: 第 9 章     表单和控件设计

18

FoxProFoxPro

9.2.1 表单工具栏与快捷菜单

快捷菜单

Page 19: 第 9 章     表单和控件设计

19

FoxProFoxPro

快捷菜单快捷菜单

Page 20: 第 9 章     表单和控件设计

20

FoxProFoxPro

9.2.29.2.2 表单的数据环境表单的数据环境在设计数据库操作表单时,需要为表单建立数据环境。数据环境中包含与表单有联系的表和视图以及表之间的关系,它是链接表单与表或视图文件的通道。一般情况下,添加到数据环境中的表或视图,随着表单的打开或运行而打开,并随着表单的关闭或释放而关闭。可用数据环境设计器来设置表单的数据环境。

Page 21: 第 9 章     表单和控件设计

21

FoxProFoxPro

Page 22: 第 9 章     表单和控件设计

22

FoxProFoxPro

常用属性有:常用属性有:AutoOpenTable :当打开表单集、表单或报表时,是否自动打开数据环境中指定的表和视图,默认值是 .T. 。AutoCloseTable :当关闭表单集、表单或报表时,是否关闭数据环境中指定的表和视图,默认值是 .T. 。DateSourceType :指定数据源的类型。

Page 23: 第 9 章     表单和控件设计

23

FoxProFoxPro

添加表单控件的方法

1. 使用表单控件工具条向表单中添加控件对象2. 用生成器向表单中添加控件对象3. 用表单生成器向表单中添加控件对象4. 利用数据环境向表单中添加控件对象5. 利用项目管理器向表单项中添加控件对象

Page 24: 第 9 章     表单和控件设计

24

FoxProFoxPro

1 、使用表单控件工具条向表单中添加控件对象

如果要建立一个输入文本框 , 按下表单控件条上的 按钮 , 在表单上一划 , 一个输入框就建立了 , 然后调整输入框的大小和在表单上的位置 .如果要建立多个同样的标签控件对象 , 可以用按钮锁定法 , 先按下表单控件工具条上的 按钮 , 再按下表单控件工具条上的 按钮 , 再在表单上重复划动鼠标 .如果某些控件对象要显示数据记录,就需要设置该控件对象的 ContralSource 属性,与字段进行绑定。

Page 25: 第 9 章     表单和控件设计

25

FoxProFoxPro

9.2.3常用表单控件的属性面向对象的程序设计 (OOP)

1 、对象 2 、属性 3 、事件对象引用规则:This 表示当前对象Thisform 表示当前表单Thisformset 表示当前表单集对象引用方法: 如: this.caption thisform.command.caption

Page 26: 第 9 章     表单和控件设计

26

FoxProFoxPro对象的特征对象都具有自己的属性( Property) 、事件(Event) 、方法 (Method) 。不同类产生的对象具有不同的属性事件方法。1 、属性 是指对象的特征,每个对象都有自己的属性如表单具有标题 (Caption) 、背景 (Backcolor) 、可移动 (Movable)等属性。它们有一个对应值,可在属性窗口设置,也可在运行时改变。如: thisform.caption=“数据维护” thisform.movable=.f.

Page 27: 第 9 章     表单和控件设计

27

FoxProFoxPro 属性窗口的使用1 、属性窗口:显示表单中控件的属性、事件、方法等。

2 、对象选择器:在属性窗口的最上方,可以在此选择要设置的对象。对象采用分层方式显示,体现包含关系

3 、对象属性设定框左边三个按钮分别为:取消属性设定,属性设定接受,启用函数按钮属性框的赋值有直接输入、从下拉框中输入或启动对话框等方式

Page 28: 第 9 章     表单和控件设计

28

FoxProFoxPro

表单属性表单属性1 、在表单上点鼠标右键—属性,即出现表单属性框,改变里面的内容即可改变表单2、 Caption: 用来改变表单的标题3、 AlwaysOnTop: 其值为真时,本窗口总是在其它窗口之上4、 BackColor: 其值决定窗口颜色

Page 29: 第 9 章     表单和控件设计

29

FoxProFoxPro

表单属性表单属性5、 Closable:默认为真,即可关闭。当为假时,要小心窗口不能关闭

6、 ControlBox:为真,为假时整个标题栏的控制按钮和图标消失,小心。

7、 Height/Width/Left/Top用来决定窗口位置

8、 Icon:设置标题栏图标9、MaxButton/MinButton/Movable

Page 30: 第 9 章     表单和控件设计

30

FoxProFoxPro

表单属性表单属性10、 Picture:给表单加上图片,一般不在此处加背景图片,因为图片太大或太小时会被剪切

11、 visible:为假时,运行时不可见,编程修改其值可决定表单的可见性

12、WindowState:其值最大时,决定窗口位置的属性设置无效

13、 ShowTips:要使鼠标移到某对象上系统自动蹦出提示,该值必须为真

Page 31: 第 9 章     表单和控件设计

31

FoxProFoxPro

14 、 Fontname: 字体名

15 、 Fontsize :字体大小

16 、 Fontbold :字体加粗

17 、 Forecolor :文本前景色

18 、 Showwindow: 设计表单运行后在屏幕的位置

Page 32: 第 9 章     表单和控件设计

32

FoxProFoxPro

事件

事件是一种预先定义好的特定动作,由用户或系统激活,在多数情况下,是由用户的交互操作产生。事件作用于对象。

如:单击鼠标事件( click) 、调入事件( load) 、初始化事件( init)等。

我们需要对事件编写对应代码,当系统响应用户的动作时,将自动触发事件对应的代码。

9.2.4 9.2.4 表单控件的事件和方法表单控件的事件和方法

Page 33: 第 9 章     表单和控件设计

33

FoxProFoxPro

3 、方法

方法是指对象执行的一个操作,是与对象相关联的过程,它是对象的函数成员。

方法程序可以出现在对象的事件中,也可独立于事件单独存在。如: Box,Circle,Hide,Release等

方法程序可以无限扩展,而事件集合是固定的,用户不能创建新的事件,却可创建新的方法和属性。

方法的表示:如 thisform.release

thisform.show

Page 34: 第 9 章     表单和控件设计

34

FoxProFoxPro常用事件和方法Init 事件 在对象建立时引发Load 事件 在表单对象建立之前引发(最先执

行)Unload 事件 在表单对象释放时引发(最后执行)Destroy 事件 在对象释放时引发GotFocus 对象获得焦点时引发Click 事件 用鼠标单击对象时引发Release 方法 将表单从内存中释放 ( 相当于按了关

闭 )Refresh 方法 重新绘制表单或控件 , 并刷新所有值show 方法 显示表单Hide 方法 隐藏表单Cls 方法 清除表单中的图形和文本

Page 35: 第 9 章     表单和控件设计

35

FoxProFoxPro例 :在表单集中实现两个表单的切换、隐藏。

步骤: 1 、打开表单菜单,点击创建表单集,点击添加两张表单 form1 和 form22 、在表单 form1 和 form2 中各设置一个按钮,用来完成切换功能3 、打开代码窗口,设置 form1 的按钮 click事件代码( thisform.hide 和 thisformset.form2.show) ;再设置 form2 的 click事件代码。4、在其中任意一个表单上添加一按钮,释放两表单。( thisformset.form1.release thisformset.form2.release)

Page 36: 第 9 章     表单和控件设计

36

FoxProFoxPro

本次课的教学内容:

9.3 基本表单控件本次课的教学目的与要求:

1 、标签、文本框、编辑框、微调按钮

2 、列表框、计时器、图像

本次课的教学重点与难点:

重点:属性、事件代码的编写

难点:事件代码的编写

讲授课时: 2学时

Page 37: 第 9 章     表单和控件设计

37

FoxProFoxPro

常用控件

Page 38: 第 9 章     表单和控件设计

38

FoxProFoxPro9.3.1 标签控件

标签用以显示文本。显示内容可通过 Caption属性设置。 一般被设置的属性为:1 、 Caption:可通过代码设置在运行时改变其值,注意数据类型只能是字符型

2 、 Autosize:自动调整标签大小 3 、 Alignment:标签文本在控件中的对齐方式 0:左对齐(默认方式); 1 :右对齐; 2 :居中对齐

Page 39: 第 9 章     表单和控件设计

39

FoxProFoxPro

4、 BackColor:标签背景色5、 BackStyle:设置标签是否透明,如果透 明,则 BackColor 设置无效6、 Font 开头的属性用来设置显示内容的字体属性,如红色宋体字等7、 ForeColor:标签显示内容的颜色8、标签位置设定 Left/Top/Width/Height ,一般用布局工具栏9 、 Visible:标签隐藏否,可编程控制

Page 40: 第 9 章     表单和控件设计

40

FoxProFoxPro

标签控件事件方法标签控件事件方法1、 Click事件 :点击该标签时发生,在里面写上你要执行的代码,

2、 DblClick事件 :双击该标签时发生

3、MouseMove事件 :当鼠标移动到该标签上时发生

Page 41: 第 9 章     表单和控件设计

41

FoxProFoxPro控件布局

左边对齐右边对齐顶边对齐底边对齐垂直居中对齐水平居中对齐相同宽度相同高度相同大小水平居中垂直居中置前置后

选取多个控件时设置

选定单个控件也可设置

Page 42: 第 9 章     表单和控件设计

42

【例 9.1】按图 9-14 所示,设计一个“教师信息管理系统”应用程序开始界面。步骤如下: ⑴ 创建一个新表单;设置其 Caption 属性值为“教师信息管理系统”。 ⑵ 选择“显示→表单控件工具栏”;用鼠标左键单击“标签”按钮,在表单上单击或拖放鼠标,放置三个标签。 ⑶ 在“属性”窗口中分别设置三个标签的属性:Label1 : AutoSize 设置为 .T. ,其作用是指定是否自动调整控件大小以容纳其内容; Caption 设置为“教师信息管理系统”;字体、大小及控件位置依据自己的喜好而定;Label2 : Caption 设置为:版权所有( C ) 2004 ,字体:隶书 12 磅;Label3 : Caption 设置为:洛阳师范学院软件开发小组,字体:楷体 12 磅; ⑷ 执行表单,显示结果如图 9-14 所示。

Page 43: 第 9 章     表单和控件设计

43

FoxProFoxPro

Page 44: 第 9 章     表单和控件设计

44

9.3.29.3.2 文本框控件文本框控件

“ 文本框”控件( TextBox )和“标签”控件有相似之处,但二者使用时有很大区别。“文本框”控件是变量输入输出的焦点区域。在数据表操作中,主要用于对非备注型和通用型字段的输入输出,或给内存变量赋值等操作,它有自己的数据源( ControlSource )。它的数据源可以是表中的字段或内存变量,用户若要通过文本框对字段变量或内存变量进行操作,必须在 ControlSource 属性中指定与它联系的变量作为数据源。

Page 45: 第 9 章     表单和控件设计

45

FoxProFoxPro

利用它可在内存变量、数组元素或非备注字段中输入或编辑数据。一般被设置的属性为:ControlSource:为文本框指定一个字段或变量。运行时显示变量值,也可修改。Value:用户输入的值,如果要限制输入类型,设计时先赋初值。如初值为 {},则只能输入日期PasswordChar: 若文本框输入密码,输入时不想让别人知道,可输入指定字符。如“ *”,真正内容保存在 Value 中。

Page 46: 第 9 章     表单和控件设计

46

FoxProFoxPro

InputMask:指定在一个文本框中如何输入和显示数据,即模式匹配格式。如此处输入 6个“ !”,则只能输入 6个大写字母。

Centruy、 Hours 、 Seconds 和 DateFormat 设置日期格式

Page 47: 第 9 章     表单和控件设计

47

FoxProFoxPro

文本框控件事件文本框控件事件1、When事件:当光标进入文本框时发生

2、 Valid事件:当光标离开文本框时发生

3、 SetFocus事件:使文本框获得焦点

Page 48: 第 9 章     表单和控件设计

48

FoxProFoxPro例 2 设计一个登录界面,指定用户名为 user1,password为: 1234步骤:

1 、创建表单,添加一些控件

2 、设置 Caption 属性,命令按钮的 default 属性 ,

文本框的 PasswordChar 还可设置其 Inputmask

3 、为确认命令按钮添加 Click事件

4、如要统计输入次数,需添加一个属性存储计数值,并将其默认值设置为数值

mao11

Page 49: 第 9 章     表单和控件设计

49

FoxProFoxPro

Page 50: 第 9 章     表单和控件设计

50

9.3.3 9.3.3 计时器控件计时器控件 计时器控件( Timer )是用系统时钟来控制某些有规律的操作,在运行时是不可见的。计时器控件有两个主要属性“ Enabled” 和“ Interval” 。“ Enabled” 用于设置计时器的打开(取值为真)与关闭(取值为假);“ Interval” 用于定义计时器事件触发的时间间隔(单位为毫秒)。其主要事件是 Timer Event ,表示经过 Interval 属性设定的毫秒时间间隔后发生。

Page 51: 第 9 章     表单和控件设计

51

FoxProFoxPro

【例 9.3】用计时器控件控制图 9-15所示的表单中标签“教师信息管理系统”自右向左滚动。

设计过程如下:首先,在“表单控件”工具栏中选择“计时

器”按钮,把它放置在表单的任何位置均可。然后设置“计时器”的属性如下:Enable : .T.Interval: 220Name : Timer1

Page 52: 第 9 章     表单和控件设计

52

FoxProFoxPro⑴ 定义表单的 Load 事件代码:在“显示”菜单中选择“代码”进入代码编辑窗口,在下拉组合框中,选择 Form1 的 Load 事件,双击进入代码编辑窗口。输入以下代码:

set talk offset safe off⑵ 编辑计时器 Timer1 的 Timer 事件代码:选择计时器控件 Timer1 的 Timer 事件,输入下面代码:if thisform.label1.left<1 thisform.label1.left=thisform.width &&使 label1 左边界移到右端

else thisform.label1.left=thisform.label1.left-2 &&使 label

1 向左移动 2 个像素endifthisform.refresh &&刷新表单中控件的值

Page 53: 第 9 章     表单和控件设计

53

FoxProFoxPro9.3.4 命令按钮控件

主要用来启动某个事件、完成特定功能。 如:添加记录,移动记录,退出表单等 常用属性:Caption 、 Default( 可用 Enter键确认 ) 、 Cancel (可用 Esc键取消)、 Enabled( 能否被选择或响应 ) 、 Picture(图片按钮)常设置的事件:Click、 RightClick、 DoubleClick

Page 54: 第 9 章     表单和控件设计

54

FoxProFoxPro

【例 9.4 】在图 9-15所示表单的基础上添加两个“命令按钮”控件: Command1 和 Command2 ,拖动鼠标将其放在表单的适当位置。如图 9-16所示。编写“进入系统”按钮的口令验证程序代码和“退出”按钮的程序代码。两个“命令按钮”控件的主要属性设置为:

Command1: Command2:

Caption:“ 进入系统” Caption:“退出”

Page 55: 第 9 章     表单和控件设计

55

FoxProFoxPro☆ 定义表单的初始化事件( Init Event)如下:public enternumenternum=0☆ 定义“进入系统” (Command1)按钮的 Click事件代码如下:time1=time()if allt(thisform.text1.value)==substr(time1,1,2)+"518" && 校对口 令 , 系 统 时 间

(小时) +"518" messagebox(' 欢迎进入本系统,按“确定”按钮继续 ',0+16,'提示信息 ') * 执行系统菜单令,进入系统主窗口 thisform.releaseelse enternum=enternum+1 if enternum<=2 messagebox("口令错,你还有 "+str(3-enternum,2)+" 次机会,重新输入! ",0+

16,'提示信息 ') thisform.text1.value="" thisform.text1.setfocus &&口令错,重新获得焦点输入口令 else messagebox(" 你没有权利进入本系统 ",0+16,'提示信息 ') thisform.release endifendi

Page 56: 第 9 章     表单和控件设计

56

FoxProFoxPro☆ 定义“退出” (Command2)按钮的 Click事件代码如下:quityesno=messagebox(' 确定退出? ',4+16+0,' 退出窗口 ')

if quityesno =6 release thisformendif

Page 57: 第 9 章     表单和控件设计

57

FoxProFoxPro

9.4 9.4 9.4 9.4 列表框和组合框列表框和组合框9.4.1列表框控件

9.4.2 组合框控件

Page 58: 第 9 章     表单和控件设计

58

FoxProFoxPro

9.4.1列表框控件

显示的是一组项目 ,而不是可以编辑的文本。用户可从中选择一个或多个条目。还可配合滚动条浏览。

常用事件: KeyPress DblClick Click

Page 59: 第 9 章     表单和控件设计

59

FoxProFoxPro9.4.2组合框控件 与列表框类似 , 提供一组条目供用户选择。但只有一个条目可见 , 可通过下拉按钮选择其它项,而且也只能选择一项,不能多选。

组合框有:下拉列表框和下拉组合框两种。前者只能在列表选择,后者还可从编辑框输入。

常用属性与列表框类似:RowSourceType 、 RowSource 、 Value等常用事件: InteractiveChange (更改值时发生)15.scx

Page 60: 第 9 章     表单和控件设计

60

FoxProFoxPro

9.5.1 单选按钮组

包含多个选项按钮,但只能选择一个,被选中按钮显示一个圆点

常用属性: ButtonCount 、 Value 、ControlSource 、 enabled

9.5 选择按钮控件设计

Page 61: 第 9 章     表单和控件设计

61

FoxProFoxPro

9.5.2 复选框 用于标记一个两值状态如:真或假,当为真时,框内显示‘√’ ,否则 , 显示空白。

常用属性:captionvalueControlSource

Page 62: 第 9 章     表单和控件设计

62

9.5.39.5.3微调按钮微调按钮 微调按钮 (Spinner) 接收一定范围的数值的输入,用户在操作时,可以用点击微调控件的向上或向下箭头来增加或减少数值,也可以直接在数据框内输入值。其主要属性有:SpinnerLowValue : 设置微调控件的最小值。SpinnerHighValue : 设置微调控件的最大值。KeyboardLowValue : 设置允许用户键入的最小值。KeyboardHighValue :设置允许用户键入的最大值。Increment : 设置单击控件的向上或向下箭头时,每次增加或减少的数量。其默认值为 1.00,如 Increment 属性值设置为 2 ,则表示每次增加或减少 2 。Value : 指定或返回微调控件的当前值。ControlSource : 指定与控件绑定的数据源。其主要事件有:单击( Click Event )、双击 (Dblclick Event) 事件、按键( KeyPress Event )事件以及当用户用键盘或鼠标更改控件的值发生的事件 (InterActiveChange Event)

Page 63: 第 9 章     表单和控件设计

63

FoxProFoxPro9.5.49.5.4 应用举例应用举例 【例 9.7】 按图 9-19 所示设计一个表单,用两个选项按钮组 Option 控制标签 Label1 的字体和颜色,用复选框控制标签 Label1 的字体风格(粗体、斜体、下划线等),用微调控件 (Spinner1) 控制字体的大小。

Page 64: 第 9 章     表单和控件设计

64

FoxProFoxPro设计步骤如下: ⑴ 创建一个新表单 Form1 ,并设置其 Caption 属性值为“选择框和复选框”;⑵ 按图 9-19所示,在表单中添加四个容器控件,其中 Container1 的格式属性SpecialEffect 值设置为 0(凸起), Container2~ Container4的格式属性设置为 1 (凹下),这里只是起修饰作用。

⑶ 选择容器控件 Container1 ,单击右键,再从快捷菜单中选择“编辑”命令,添加标签控件 Label1 ,并将其 Caption 属性分别设置为“知识就是力量”,再在表单上添加一个微调控件 Spinner1,设置其 SpinnerLowValue 和 KeyboardLowValue 的属性值为 4(字号最小为 4), SpinnerHighValue 和 KeyboardHighValue 的属性值为 100,Value 的属性值为 9(默认字号为 9)。编辑微调控件 Spinner1 的 InterActiveChage 事件的程序代码如下:

Thisform.container1.label1.fontsize=thisform.spinner1.value ⑷ 在容器 Container2 中添加一个选项按钮组控件( OptionGroup1 ),其属性设

置为: ButtonCount 值为 4 ,在该控件上单击右键,选择“编辑”命令,然后依次修改其 Option1~Option4 的标题属性 Caption 分别为宋体、楷体、黑体和隶书。

Page 65: 第 9 章     表单和控件设计

65

FoxProFoxPro编辑容器 Container2 中 OptionGroup1 控件的 Init 和 InterActiveChage 事件的代码如下:

Init 事件代码:thisform.container1.label1.fontname=' 宋体 'InterActiveChage 事件代码:do case case this.value=1 thisform.container1.label1.fontname=' 宋体 ' &&设置 Label1 字体为宋体

case this.value=2 thisform.container1.label1.fontname='楷体 _GB2312' case this.value=3 thisform.container1.label1.fontname=' 黑体 ' case this.value=4 thisform.container1.label1.fontname='隶书 'endcasethisform.refresh

Page 66: 第 9 章     表单和控件设计

66

FoxProFoxPro⑸ 在容器 Container3 中添加一个选项按钮组控件( OptionGroup1 ),其属性

设置为: ButtonCount 值为 4,同样修改其 Option1~Option4的标题属性Caption 分别为红色、黄色、绿色和黑色。

编辑容器 Container3 中 OptionGroup1 控件的 Init 和 InterActiveChange 事件的代码如下:

Init 事件: thisform.container1.label1.forecolor=rgb(255,0,0)InterActiveChange 事件:do case case this.value=1 hisform.container1.label1.forecolor=rgb(255,0,0) case this.value=2thisform.container1.label1.forecolor=rgb(255,255,0) case this.value=3 thisform.container1.label1.forecolor=rgb(0,255,0) case this.value=4 thisform.container1.label1.forecolor=rgb(0,0,0)endcasethisform.refresh

Page 67: 第 9 章     表单和控件设计

67

FoxProFoxPro⑹ 在容器 Container4中添加四个复选框控件 Check1~ Check4,其 Caption 属性分别为粗体、斜体、下划线和删除线。

复选框 Check1 的 InterActiveChange 事件的程序代码如下:if this.value=1 thisform.container1.label1.fontbold=.t. &&设置 Label1 字

体样式为粗体else thisform.container1.label1.fontbold=.f.endifthisform.refresh与此类似,可以编辑复选框 Check2~Check4的 InterActiveCha

nge 事件代码。⑺ 保存并运行表单,可以通过单击微调控件的向上或向下按钮

来改变字体大小,用单选按钮和复选框选择字体、颜色和风格。

Page 68: 第 9 章     表单和控件设计

68

FoxProFoxPro

9.7 9.7 表格和页框控件设计表格和页框控件设计

9.7.1 表格控件 表格是一种最为常见的信息记载形式。 VFP 6.0

中提供的表格( Grid )控件是一种以表格显示方式进行数据输入、输出的控件。表格是一个容器对象,它可以包含许多行和列。这里,列是一个控件(Column),它包含标头( Header )和其他控件,也拥有自己的属性、事件和方法程序,从而可以完成比较复杂的控制和操作。

表格控件通常和一个表或视图、查询关联起来,用于显示记录。

Page 69: 第 9 章     表单和控件设计

69

FoxProFoxPro1 .常用的表格属性有:⑴ ColumnCount :设置表格、组合框或列表框中的列对象数目( -1 、 1

~ 255)。默认值为 -1 ,表示显示与它链接的表中所有字段。⑵ RecordSourec : 指定表格数据源。⑶ RecordSourecType :设置表格数据源的类型。设置值及含义如下:0 — 表,数据来源于由RecordSource 属性指定的表,该表能自动打开;1 — 别名,数据来源于已打开的表;2 — 提示,运行时,由用户根据提示选择表格的数据源;3 — 查询,数据来源于由RecordSource 属性指定的查询文件;4 — SQL 语句,数据来源于由 RecordSource 属性指定 SQL 语句的执行

结果。⑷ LinkMaster :指定在表格控件中显示的子表的父表名称,通常在创建

一对多表单时使用。使用该属性在父表和子表之间建立一对多的关联关系。

⑸ ChildOrder :用于指定为建立一对多的关联关系,子表所要用到的索引。

⑹ RelationExpr :确定基于主表(由 LinkMaster 属性指定)字段的关联表达式。

Page 70: 第 9 章     表单和控件设计

70

FoxProFoxPro2 .常用列控件属性⑴ ControlSource :设置在列中要显示的数据。常见的

是表中的一个字段。⑵ CurrentControl:在列对象中指定一个控件,用来显

示和接收列中活动单元格的数据。默认值为 Text1 。⑶ Header :设置列的头标题,当 ColumnCount 属性值

不是 -1 ,才会出现该属性。用来存储一列的相关属性。其中, Caption 设置一列的头标题。除了在表格中显示字段数据外,还可以在表格的列中嵌入

控件,如文本框、复选框、下拉列表框、微调按钮等。例如,如果表中有一个逻辑字段,可以把一个复选框添加到对应的列中,方法是:先置表格控件为编辑状态,再从“表单控件”工具栏中选择“复选框”控件,然后在表格中相应的位置单击即完成了添加。最后指定 CurrentControl 属性值为 Cheak1 ,即复选框, ControlSource 属性设置为该逻辑型字段,在运行表单时,该列中每一行将会显示表中各个记录的值。值为真( .T. )显示一个“√”。

Page 71: 第 9 章     表单和控件设计

71

FoxProFoxPro

9.7.29.7.2 页框控件页框控件 页框控件( PageFrame )是一种容器型控件,其

中可以包含若干页,可通过 PageCount 属性来确定包含页数。每一页又是一个独立容器控件,可以在其中放入其他各种控件,在表单中使用页框,可省空间。例如,每一个生成器的对话框就是由页框组成的,在同一用户界面上就可以完成多种操作。但是整个页框仍是一个控件,它也必须放入表单中才能使用。尽管页框控件可以包含多页,但在每一时刻,只有一页是活动的,通过设置 ActivePage 属性来确定当前哪一页是活动的。例如当 ActivePage 的值设置为 3 时,表示第三页是活动的。