第8章表单中控件的设计及应用.docx
- 文档编号:23250039
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:48
- 大小:146.81KB
第8章表单中控件的设计及应用.docx
《第8章表单中控件的设计及应用.docx》由会员分享,可在线阅读,更多相关《第8章表单中控件的设计及应用.docx(48页珍藏版)》请在冰豆网上搜索。
第8章表单中控件的设计及应用
第8章表单中控件的设计及应用
控件是用于显示数据、执行操作或装饰表单的一种图形对象,如文本框、命令按钮、标签、线条和页框等,通常也将控件称为对象。
在应用程序中,几乎每个功能窗口(表单)中都包含控件,控件是完成各类任务的主要操作对象。
按对象的行为特征可将对象分为以下7类:
(1)显示信息类:
标签、线条、形状和图像。
(2)控制类:
命令按钮和命令按钮组。
(3)编辑类:
文本框和编辑框。
(4)列表类:
列表框和组合框。
(5)选择类;复选框和选项按钮组。
(6)容器类:
表格、页框和Container容器。
(7)其他类:
超级链接、计时器和微调控件。
8.1显示信息类控件
显示信息类控件用于在表单上显示文本或图形,这类控件有标签、线条、形状和图像,它们起到显示信息或修饰表单的作用。
8.1.1标签(Label)
标签控件可以在表单中显示文本信息,在表单运行时,无法用鼠标直接对标签中的文本信息进行选取或修改操作,因此,标签控件常用于表单上的提示信息或说明性文字。
标签的常用属性如下:
(1)Caption:
为标签控件指定标题文本,即在表单上显示的文本信息。
很多控件都有Caption属性,如表单、命令按钮、复选按钮等,其作用是相同的,都是显示文本信息,且属性值的数据类型均为字符型。
(2)AutoSize:
设置Autosize属性可以确定标签显示区域的大小是否随标题文本的大小及多少进行变化。
该属性值的数据类型为逻辑型。
当AutoSize属性取值为.T.时,标签显示区域的大小将随标题文本的大小及多少变化;当AutoSize属性取值为.F.时,标签显示区域的大小不随标题文本大小及多少而变。
8.1.2线条、形状与图像
1.线条(Line)
线条(Line)用于在表单上画线,如斜线、垂直线和水平线等。
线的走向可以由LineSlant属性来设置,其值为“\”表示从左上角向右下角画线;“/”表示从右上角向左下角画线。
若将线的Width属性值设为0,则得到一条垂直线;若将线的Height属性值设为0,则得到一条水平线。
2.形状(Shape)
形状(Shape)可以在表单中生成各种封闭图形,如矩形、圆角矩形、椭圆、正方形、圆角正方形和圆等。
形状的类型取决于Curvature(曲率)、Width 和Height属性值(表8.1)。
表8.1形状控件的属性表
Curvature属性值
Width与Height属性值相等
Width与Height属性值不相等
0
正方形
矩形
1~98
圆角正方形(随着Curvature属性值增大,其圆角也相应变大)
圆角矩形(随着Curvature属性值增大,其圆角也相应变大)
99
圆
椭圆
在表单上,若想使一个对象放置在其他对象上面,可将该对象“置前”;若想使一个对象被其他对象遮盖,可将该对象“置后”。
方法:
选定对象→“格式”菜单→“置前”或“置后”命令。
3.图像(Image)
图像控件用于在表单上显示静态图像,利用图像(Image)控件的Picture属性指定图像文件名及存放位置,图像文件的类型可以是:
BMP、ICO、GIF或JPG等。
8.2控制类控件
在表单应用程序中,控制类控件起到控制作用,常用来完成某种特定的操作。
VFP中的控制类控件主要有命令按钮和命令按钮组。
8.2.1命令按钮(CommandButton)
命令按钮可以完成某种特定功能,如关闭表单和移动记录指针等,通常在其Click事件中编写程序代码。
命令按钮的常用属性如下:
(1)Caption:
用于设置命令按钮的标题,即显示在命令按钮上的文字。
在Caption属性值中以“\<字母”方式输入值,则表示定义热键,即运行表单时按该字母键,将触发按钮的Click事件。
如:
某命令按钮的Caption属性值为“退出\ (2)Default: 用于设置命令按钮是否为表单的默认按钮,此属性值为逻辑型。 当其值为.T.时,命令按钮为当前表单中的默认按钮。 命令按钮的Default属性的系统默认值为.F.。 一个表单中只能有一个默认命令按钮。 在运行表单时,如果焦点不在任何命令按钮上,按下回车键时,则系统将自动触发表单中默认按钮的Click事件;如果焦点在某个命令按钮上时,按下回车键则执行焦点所在的命令按钮的Click事件。 (3)Cancel: 用于设置Esc键所触发的命令按钮,Cancel属性值为逻辑型,系统默认值为.F.。 在表单运行时按Esc键,将焦点移到Cancel值为.T.且“Tab键次序”最小的命令按钮上,同时触发其Click事件。 即在同一个表单上可以将多个命令按钮的Cancel值为.T.,但按Esc键时只有一个命令按钮做出反映。 (4)Enabled: 适用于大多数控件,如命令按钮、表单、标签、文本框等。 该属性用于设置对象是否可用,即是否响应用户引发的事件。 Enabled属性值为逻辑型,当其值为.T.(系统默认)时,表示该控件可用。 【例8.1】制作“退出”按钮,在运行表单时,当单击该按钮、按回车键、按Esc键或按E键时,均能完成关闭表单的操作。 具体制作步骤如下: (1)建立新表单Frm8_1.scx。 (2)在表单中添加一个命令按钮Command1,并对Command1命令按钮按表8.2的属性设置: 表8.2Command1命令按钮的属性设置 属性名 属性值 Caption 退出\ Default .T. Cancel .T. (3)Command1命令按钮的Click事件代码: ThisForm.Release (4)保存表单并运行。 8.2.2命令按钮组(CommandGroup) 命令按钮组是容器类控件,可以包含多个命令按钮。 命令按钮组和组内命令按钮都有各自的属性、事件和方法。 因此,既可以单独操作某个命令按钮,也可以对命令按钮组进行整体操作。 1.命令按钮组的常用属性 (1)ButtonCount: 用于设置命令组中所含按钮的数目,该属性值为数值型,其系统默认值为2,即包含2个命令按钮。 (2)Buttons: 用于存取命令按钮组中各按钮的数组。 在创建按钮组时建立该属性数组,可以用该数组为命令按钮组中的命令按钮设置属性或调用方法。 如,将命令按钮组中第2个按钮的标题改为“OK”,可用下列语句: ThisForm.CommandGroup1.Buttons(3).Caption=’OK’ Buttons属性数组下标的取值范围在1至ButtonCount属性值之间。 (2)Value: 通过命令按钮组的Value属性值,可以判断用户单击组内的哪个按钮。 Value属性值可以为数值型(系统默认值为数值1)或字符型。 若Value属性的初始值设置为数值型,则Value将获得用户所单击按钮在组内的顺序号;若Value属性的初始值设置为字符型,则Value将获得用户所单击的按钮的Caption属性值。 2.命令按钮组生成器 与其他控件一样,命令按钮组的属性可以利用属性窗口设置,但对于某些属性,使用命令按钮组生成器设置较为方便。 打开生成器的方法: 从命令按钮组的快捷菜单中选择“生成器”,在生成器中可以设置命令按钮组中的按钮数目、按钮标题及按钮布局等。 3.命令按钮组中按钮的编辑 若对命令按钮组中某个按钮进行设计,可采用以下两种方法: 方法一: 在“属性”窗口的“对象选择框”中选择命令按钮。 方法二: 从命令按钮组的快捷菜单中选择“编辑”命令,进入编辑状态后,单击某个命令按钮进行单独地编辑操作。 这种编辑操作的方法对于其他容器类对象,如选项按钮组和表格等,同样适用。 【例8.2】在运行表单时,单击表单上命令按钮组中的某个按钮,将该按钮的标题显示到标签上。 具体制作步骤如下: (1)新建表单文件Frm8_2.SCX。 (2)表单中所添加的对象及其属性如表8.3。 表8.3表单Frm8_2.SCX中控件及其属性 对象名 属性名 属性值 Label1 Caption 你所选择的按钮是: Label2 Caption CommandGroup1 ButtonCount 3 Value 1 Command1 Caption No1 Command2 Caption No2 Command3 Caption No3 (3)命令按钮组CommandGroup1的Click事件代码如下: n=This.Value&&将单击选中的命令按钮序号保存在变量n中 DoCase Casen=1 ThisForm.label2.Caption=This.Command1.Caption&&注意Thisform和This的含义 Casen=2 ThisForm.label2.Caption=This.Command2.Caption Casen=3 ThisForm.label2.Caption=This.Command3.Caption EndCase (4)运行表单。 如果将命令按钮组CommandGroup1的Value初值设为字符型(如: Command1),则本例CommandGroup1的Click事件代码可以简化为: ThisForm.label2.Caption=This.Value 由此例可以看出,适当设置对象的有关属性,可能会简化程序代码。 8.3编辑类控件 在表单运行时,可以通过编辑类控件输入数据,从而提供程序运行时所需要的数据。 编辑类控件主要有文本框和编辑框两种。 8.3.1文本框(TextBox) 文本框用于输入或编辑数据,且文本框内只能包含一段数据,即当输入回车时,文本框内数据的输入随即终止。 文本框可编辑的数据类型可以是字符型、数值型、逻辑型或日期型数据,具体的数据类型与其Value属性的初始值有关。 1.文本框的常用属性 (1)Value: 用于接收用户由键盘输入的信息,或将相应数据在文本框内显示。 文本框可以接收的数据类型与其Value的初始值有关。 若Value的初始值为空(系统默认)或字符型,则表示接收字符型数据;若Value的初始值为数值型数据,则表示接收数值型数据;若Value的初始值为.F.或.T.,则接收逻辑型数据;若Value的初始值为{}时,则表示接收日期型数据。 (2)PasswordChar: 可以设置文本框内是显示输入的字符,还是显示指定的占位符。 系统默认值为空,即文本框内显示输入的字符。 若将该属性值设置成一个字符(如*),则向文本框中输入的任何信息,在文本框中都将以该字符(如*)显示。 通常用于输入密码的文本框需要设置该属性。 (3)InputMask: 用于设置输入数据的格式,该属性值是一个格式字符串,其中每个字符规定了对应位的数据格式,格式字符串的长度规定了输入数据的宽度。 格式字符串中各个字符的含义如表8.4。 InputMask的系统默认值为空。 表8.4 InputMask属性值 符号 功能描述 X 允许输入任何字符 9 允许输入数字 # 允许输入数字、空格和正(+)、负(—)号 $ 在固定位置上显示当前货币符号(由SetCurrency命令设定) . 指定小数点位置 , 在对应位上显示逗号“,” 【例8.3】建立表单文件Frm8_3.SCX,使其运行时,对输入的日期和天数进行相加计算,并将计算后的新日期在标签上显示。 表单中所包含的对象及其属性、相应代码如表8.5。 表8.5Frm8_3表单中对象属性及代码 对象名 属性/事件名 属性值/代码 备注 Label1 Caption属性 日期: Text1 Value属性 {} Label2 Caption属性 天数: Text2 Value属性 0 InputMask属性 ###### Label3 Caption属性 用于显示新日期 Command1 Caption属性 计算新日期 Click事件 ThisForm.Label3.Caption=’新日期为: ’+; DTOC(ThisForm.Text1.Value+ThisForm.Text2.Value) 【例8.4】设计一个用户登录窗口(如图8.1),要求最多允许输入3次用户名和密码。 具体制作步骤如下: 图8.1用户登录窗口 (1)建立表单Frm8_4.SCX,其中所包含的对象及其属性见表8.6。 表8.6表单Frm8_4中的对象及其属性表 对象名 属性名 属性值 说明 Form1 Caption 用户登录窗口 AutoCenter .T. 使表单运行时自动居中于主窗口内 Label1 Caption 用户名: Label2 Caption 密码: Text1 InputMask XXX 设置用户名长度为3个字符 Text2 InputMask 9999 设置密码是4位数字 PasswordChar * 使用户所输入的密码以*号屏蔽 Command1 Caption 确认 Default .T. 按回车键,触发此按钮的Click事件 Command2 Caption 退出 Cancel .T. 按ESC键,触发此按钮的Click事件 (2)Form1的Init事件代码,初始化操作。 ThisForm.Text1.SetFocus&&使用户名文本框获得焦点,即其内出现插入点 PublicN&&定义公共变量N,N用于统计用户输入密码的次数 N=0 (3)Command1的Click事件代码,用户名及密码判断操作。 yhm=ThisForm.Text1.Value mm=ThisForm.Text2.Value IFLower(yhm)=="abc".AND.mm=="1234" MessageBox("用户名和密码正确,恭喜您! ") ThisForm.Release ELSE N=N+1 IFN=3 MessageBox("三次输入均错误,禁止进入系统! ") ThisForm.Release ELSE MessageBox("用户名或密码错误! 请您重新输入") ThisForm.Text1.Value="" ThisForm.Text2.Value=""&&清空用户名及密码的输入区 ThisForm.Text1.SetFocus ENDIF ENDIF (4)Command2的Click事件代码,关闭表单操作。 ThisForm.Release 2.控件与数据绑定 所谓数据绑定,就是将控件与数据源的数据结合在一起。 若要实现数据绑定,则需要为控件指定数据源。 控件绑定的意义在于数据源可以决定控件的值,而控件值的改变也将会直接影响数据源中的数据。 以文本框为例,当它与某个数据绑定后,文本框的Value属性值便与数据源的数据相对应,即: 文本框内显示的数据由数据源决定;反过来,通过修改文本框中的内容实现修改数据源中的数据。 控件可以通过其ControlSource属性与指定数据源进行绑定,数据源可以是数据环境中某表中的字段名,也可以是内存变量。 除了文本框有ControlSource属性以外,编辑框、列表框、组合框、选项按钮组和复选框等控件也有ControlSource属性,其设置方法和作用基本相同。 【例8.5】设计表单(如图8.2),使文本框与XSB表中的姓名字段绑定,通过“显示”按钮,检验修改文本框内的数据是否对表中当前记录的姓名字段值有影响。 具体制作步骤如下: 图8.2文本框数据绑定实例 (1)建立表单Frm8_5.SCX,并将XSB表添加至表单的数据环境中。 (2)表单中所包含的对象及其属性见表8.7。 表8.7表单Frm8_5中的对象及其属性 对象名 属性名 属性值 说明 Label1 Caption 姓名: Text1 ControlSource XSB.姓名 当数据环境中已添加表后,此值可以在属性输入区的下拉列表框中选择。 Label2 AutoSize .T. 设置文本显示区域与文本大小一致 Label3 AutoSize .T. Command1 Caption 显示 用于显示当前记录的记录号及其姓名字段值 (3)Command1的Click事件代码: ThisForm.Label2.Caption="当前记录号为: "+Str(RecNo(),2) ThisForm.Label3.Caption="当前记录的姓名为: "+姓名 (5)运行表单,首先单击“显示”按钮,显示表中当前记录的姓名,然后修改文本框中的内容,再单击“显示”按钮,检验当前记录的姓名是否更改。 8.3.2编辑框(EditBox) 与文本框相似,编辑框也是用于输入或编辑文本,但编辑框与文本又有所不同,其主要区别如下: •编辑框可以输入多段文本,按回车键仅作为每段文本的结束,不会终止编辑框的文本输入;而文本框仅能输入一段文本,按回车键将终止文本框的输入。 •编辑框仅能接收字符型或备注型数据,常用来处理较长的字符型或备注型数据;而文本框可以接收字符型、数值型、逻辑型或日期型4种数据。 编辑框的常用属性如下: (1)AllowTabs: 设置编辑框中是否允许使用Tab键,此属性值的数据类型为逻辑型。 当AllowTabs值为.T.时,在编辑框中每按一次Tab键将产生一个制表位,按Ctrl+Tab键可将焦点移出编辑框。 当AllowTabs值为.F.(系统默认值)时,按Tab键直接将焦点移出编辑框。 (2)HideSelection: 用于指定当编辑框失去焦点时,是否显示选定文本的选定状态,此属性值为逻辑型。 若HideSelection值为.T.(系统默认值),当编辑框失去焦点时,将不显示选定文本的选定状态;若HideSelection值为.F.,当编辑框失去焦点时,仍然显示选定文本的选定状态。 (3)ReadOnly: 用于设置是否允许键盘修改编辑框中的内容,此属性值为逻辑型。 若ReadOnly值为.F.(系统默认值),则允许修改编辑框中的内容;反之,不允许修改编辑框中的内容。 (4)ScrollBars: 用于设置编辑框是否有垂直滚动条,此属性值为数值型。 若ScrollBars值为2(系统默认值),则编辑框包含垂直滚动条;若ScrollBars值为0,则编辑框没有滚动条。 (5)SelText: 用于获取编辑框中选定的文本内容。 若没有选定任何文本,则返回空串。 【例8.6】当选定编辑框中文本后,单击“提取”按钮,则将选定内容在文本框中显示。 表单Frm8_6和其中的对象、属性及代码如表8.8。 表8.8 表单Frm8_6中对象属性及代码表 对象名 属性/事件名 属性值/代码 说明 Form1 Caption属性 编辑框演示 Edit1 HideSelection属性 .F. 失去焦点时,选定文本仍然处于选定状态 ScrollBars属性 2 有垂直滚动条 Text1 此对象各属性均可用系统默认值 Command1 Caption属性 提取 Click事件 ThisForm.Text1.Value=This.Parent.Edit1.SelText *此处请体会Parent的用法,及如何在文本框中显示数据 8.4列表类控件 列表类控件包括列表框和组合框两个控件,这两个控件都提供了列表,允许从列表中选择一行或多行数据进行操作。 8.4.1列表框(ListBox) 运行表单时,列表框中提供了一组数据项(条目),可以从中选择一行或多行数据。 1.列表框的常用属性 (1)RowSourceType: 用于设置列表框中数据源的类型,即: 指出列表框中显示的数据来源类型(见表8.9)。 (2)RowSource: RowSource和RowSourceType属性一起使用。 RowSource属性指出列表框中显示的数据来源(见表8.9)。 表8.9 RowSourceType属性取值及RowSource的使用 RowSourceType值 列表框、组合框的数据源 0-无 (系统默认值) 在程序运行时,用AddItem方法添加列表框条目,用RemoveItem方法从列表框中移去条目。 1-值 用RowSource属性手工指定要在列表框中显示的条目,各条目之间用逗号分隔。 如,在属性窗口中设置RowSource属性: 英语,政治,计算机;在程序中设置RowSource属性: ThisForm.List1.RowSource=”英语,政治,计算机”。 2-别名 将表中的字段值作为列表框条目的数据源。 表由数据环境提供,用RowSource属性指出表名,用ColumnCount属性指定字段个数,也就是列表框中所含的列数。 3-SQL语句 将SQLSelect语句的执行结果作为列表框条目的数据源。 在RowSource属性中填一条Select语句。 若在程序中设置RowSource属性,Select语句应作为字符型数据赋值,如,ThisForm.List1.RowSource=”Select*FromCJBIntoCursorTMP” 4-查询(QPR) 用查询的执行结果作为列表框条目的数据源。 RowSource属性应设置为一个具体的查询(QPR)文件。 如: ThisForm.List1.RowSource=”xscx.qpr” 5–数组 将数组中的内容作为列表框条目的来源,即用数组中的元素填充列表框。 RowSource属性应设置为数组名,在表单的Init事件中定义数组及为元素赋值。 6-字段 将表中的一个或几个字段作为列表框条目的来源,RowSource属性中各字段间用逗号分隔,首字段应有表名前缀,表由数据环境提供。 如,ThisForm.List1.RowSource=”CJB.考试成绩,平时成绩,实验成绩”。 7-文件 将某个驱动器和目录下的文件名作为列表框的条目。 在RowSource属性中设置路径,也可以使用通配符,如,d: \xsxxb\*.dbf。 表单运行时,可以选择不同的驱动器和目录。 8-结构 用RowSource属性指定表,将表中的字段名作为列表框的条目。 9-弹出式菜单 用一个先前定义的弹出式菜单作为列表框数据源。 (3)ListCount: 用于获取列表框中数据的行数。 此属性值在属性窗口中不可修改,在表单运行时只读。 (4)MultiSelect: 用于设置列表框中是否允许同时选定多行数据。 系统默认值为.F.,即不允许同时选定多行数据。 当其值为.T.时,允许同时选定多行数据。 在表单运行时,只需按住 (5)List(i): 用于读取列表框中第i行数据。 此属性值在属性窗口中不可修改。 (6)Selected(i): 用于判断列表框中某个数据条目是否处于被选定状态,如果选定第i行数据,则Selectd(i)的值为.T.。 (7)ColumnCount: 指定列表框的列数。 (8)BoundColumn: 在列表框包含多项时指定哪一列作为Value属性的值。 (9)DisplayVal
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 表单 控件 设计 应用