清华大学出版社 TSINGHUA UNIVERSITY PRESS 第7章表单控件设计
第7章 表单控件设计
清华大学出版社 TSINGHUA UNIVERSITY PRESS 7.输出类控件 标签Iabe 属性选介 (1)使标签区域自动调整为与标题文本大小一致:可将 Autosize属性设置为.T. (2)使标签的标题竖排:先将 WordWrap属性设置为.T.,然后在水平方向压缩标签区域迫使文字换行。 (3)使标签与表单背景颜色一致:将 Backstyle属性设置为0(透明) (4)使标签带有边框:将 Borderstyle属性设置为1(单选框) 图象mage)、线条line)与形状 Shape) 创建图象的步骤如下:在表单上创建一个图象控件在属性窗口选定 Picture属性,并通过文本框 右侧的对话按钮选定一个图象,该图象即显示在图象控件处。 线条控件用于在表单上画各种类型的线条包括斜线、水平线和垂直线。 形状控件用于在表单上画出各种类型的形状包括矩形、圆角矩形、正方形、圆角正方形椭圆或 圆 表73形状控件的形状设置 Curvature Width与 Height相等 Width与 Height不等 正方形 矩形 1-99小圆角正方形→大圆角正方形→圆小圆角矩形→大圆角矩形→椭圆
7.1 输出类控件 标签(Label) 属性选介 (1) 使标签区域自动调整为与标题文本大小一致:可将AutoSize属性设置为.T.。 (2) 使标签的标题竖排:先将WordWrap属性设置为.T.,然后在水平方向压缩标签区域迫使文字换行。 (3) 使标签与表单背景颜色一致:将BackStyle属性设置为0(透明) (4) 使标签带有边框:将BorderStyle属性设置为1(单选框) 图象(Image)、线条(Line)与形状(Shape) 创建图象的步骤如下: 在表单上创建一个图象控件 在属性窗口选定Picture属性,并通过文本框 右侧的对话按钮选定一个图象, 该图象即显示在图象控件处。 线条控件用于在表单上画各种类型的线条,包括斜线、水平线和垂直线。 形状控件用于在表单上画出各种类型的形状,包括矩形、圆角矩形、正方形、圆角正方形,椭圆或 圆。 表7.3 形状控件的形状设置 Curvature Width与Height相等 Width与Height不等 0 正方形 矩形 1-99 小圆角正方形→大圆角正方形→圆 小圆角矩形→ 大圆角矩形→ 椭圆
清华大学出版社 TSINGHUA UNIVERSITY PRES 汽车修理管理系统 [例7-1]设计如图7.1所示的应用程序封面 (1)创建表单FM.SCX。 (2)在表单上创建标签和形状控件各1个。 (3)设置属性:详见表7.4 (4)将封面的文字置前于椭圆:选定Labe1l,然后在布局工 具栏中选定“置前”按钮。若已置前,则该步骤可省。 (5)Form1的 RightClick事件代码编写如下 THISFORM. Release&右击表单执行 Release方法程序, 从内存释放该表单
[例7-1] 设计如图7.1所示的应用程序封面。 (1) 创建表单FM.SCX。 (2) 在表单上创建标签和形状控件各1个。 (3) 设置属性:详见表7.4 (4) 将封面的文字置前于椭圆:选定Label1,然后在布局工 具栏中选定“置前”按钮。若已置前,则该步骤可省。 (5) Form1的RightClick事件代码编写如下: THISFORM.Release && 右击表单执行Release方法程序, 从内存释放该表单
清华大学出版社 TSINGHUA UNIVERSITY PRESS 表74“封面”属性设置 对象 属性 属性值 说明 FormI Desktop 表单设置在桌面上 WindowState 2 表单最大化 BorderStyle o 取消表单边框 Titlebar 取消表单标题栏 Picture c: vfp\gallery \graphics\tools.ico表单贴若干 tools.co拼成的壁纸 Labell Caption 汽车修理管理系统 封面文字 Autosize Labe1区域自动适应标题大小 FontName 隶书 字体 Fontsize 36 文字大小 FontBold T 粗体 ForeColor 0,0,255 标题颜色为蓝色 BackStyle 0 背景透明,不显示 Label1区域 Shapel Curvature 99 为画椭圆,使圆角最大 BorderColor 255, 255, 边框颜色为黄色 ckColor 0,255,255 背景颜色为青色
对 象 属 性 属 性 值 说 明 Form1 Desktop .T. 表单设置在桌面上 WindowState 2 表单最大化 BorderStyle 0 取消表单边框 TitleBar 0 取消表单标题栏 Picture c:\vfp\gallery\graphics\tools.ico 表单贴若干tools.ico拼成的壁纸 Label1 Caption 汽车修理管理系统 封面文字 AutoSize .T. Label1区域自动适应标题大小 FontName 隶书 字体 FontSize 36 文字大小 FontBold .T. 粗体 ForeColor 0,0,255 标题颜色为蓝色 BackStyle 0 背景透明,不显示Label1区域 Shape1 Curvature 99 为画椭圆,使圆角最大 BorderColor 255,255,0 边框颜色为黄色 BackColor 0,255,255 背景颜色为青色 表7.4 “封面”属性设置
清华大学出版社 TSINGHUA UNIVERSKY PRESS 72输入类控件 文本框(Text) 文本框生成器 1.格式2.样式3.值 文本框的值 Value属性 文本框采用哪种数据类型和格式选项? 焦点 数据类型①):「字符型 控件设置焦点方法程序格式: 问在运行时启用c) 厂使其只读①) 隐藏选定内容① 厂仅字母表中的字符厂进入时选定)显示前导零②) Control setfocus 允许用户键入什么值? 获得焦点事件( Got Focus Event) 输入掩码0) 下-户自定义的镜码) 失去焦点事件( LostFocus event) 帮助D 取消 控件的数据绑定 Controlsource属性 Edi t1 文本框生成器 编辑框(Edit)
7.2 输入类控件 文本框(Text) 文本框的值Value属性 焦点 控件设置焦点方法程序格式: Control.SetFocus 获得焦点事件(GotFocus Event) 失去焦点事件(LostFocus Event) 控件的数据绑定 ControlSource属性 文本框生成器 编辑框(Edit)
清华大学出版社 TSINGHU 列表框(Lis 列表项|2样式|3布局4值 列表框生成器 框中续据阵象自由表,然后速定字段 [例7-3]在列表框中填充SB表的编号和 用此填充列表():表或视图中的字段 数据库和表① 可用字段) 名称两个字段要求选定列表框的任一项,就回础日 能使文本框中显示编号字段值。 庄主要设备 备注 (1)在表单中创建1个列表框控件和1个文本视图 商标 框控件。 帮助( (2)打开列表框生成器一一在列表项选项卡 (a 1) 的“用此填充列表”组合框中选定“表或视图中 的字段”选项一一如图7.4(a1)所示,通过对话按 Form1口区 钮选出SB表,然后将编号和名称字段从可用字段 列表添入选定字段列表中一按确定按钮。 16-2车床 037-2磨床 (3)List的 Interactive Change事件代码 038-1钻床 100-1 编写如下 101-1复印机 21n-1本 THISFORM. Text1. value=THIS Value &&将列表框选项值赋给文本框 图75列表框选项
列表框(List) 列表框生成器 [例7-3] 在列表框中填充SB表的编号和 名称两个字段,要求选定列表框的任一项,就 能使文本框中显示编号字段值。 (1) 在表单中创建1个列表框控件和1个文本 框控件。 (2) 打开列表框生成器——在列表项选项卡 的“用此填充列表”组合框中选定“表或视图中 的字段”选项——如图7.4(a1)所示,通过对话按 钮选出SB表,然后将编号和名称字段从可用字段 列表添入选定字段列表中—按确定按钮。 (3) List1的Interactive Change事件代码 编写如下: THISFORM.Text1.Value=THIS.Value && 将列表框选项值赋给文本框 图7.5 列表框选项 (a1)
组合框Como) TSINGHUA UNIVERSITY PRESS 下拉组合框 Style属性值0 下拉列表框 Style属性值1 控件值源的类型 表75列表框、组合框控件的值源类型 设置值值源类型 说 明 无 缺省值,运行时用 AddItem或 Addlistitem方法程序将数据分别填入列中 Row Source设置逗号分隔的数据项来分别填充列 0123456789 别名 Row Source设置表名,表由数据环境提供,用 ColumnCount确定字段数 SQL语句 Row Source设置 SQL SELECT命令选出记录,并可创建一个临时表或表 查询(.QPR)| Row Source设置一个.QPR文件名 数组 Row Source设置数组名 字段 Row Source设置逗号分隔的字段列表,首字段有表名前缀,表来自数据环境 文件 在 Row Source设置路径,可用通配符或掩码,结果以目录与文件名填充列 结构 在 Row Source设置表名,结果以字段名来填充列 弹出式菜单为与以前版本兼容而设
表7.5 列表框、组合框控件的值源类型 组合框(Combo) 下拉组合框Style属性值 0 下拉列表框 Style属性值1 控件值源的类型 设置值 值源类型 说 明 0 无 缺省值,运行时用AddItem或AddListItem方法程序将数据分别填入列中 1 值 RowSource设置逗号分隔的数据项来分别填充列 2 别名 RowSource设置表名,表由数据环境提供,用ColumnCount确定字段数 3 SQL语句 RowSource设置SQL SELECT命令选出记录,并可创建一个临时表或表 4 查询(.QPR) RowSource设置一个.QPR文件名 5 数组 RowSource设置数组名 6 字段 RowSource设置逗号分隔的字段列表,首字段有表名前缀,表来自数据环境 7 文件 在RowSource设置路径,可用通配符或掩码,结果以目录与文件名填充列 8 结构 在RowSource设置表名, 结果以字段名来填充列 9 弹出式菜单 为与以前版本兼容而设
例7-4试用BM表的代码来修改B表的部门学段。PR8。。 要求SB表在列表框显示,BMDM表在组合框显示;并且当 列表框确定一个记录后,便可用组合框的选项来替代SB表 的部门字段值。 以用琳MM表的代码来修改SB表的部门□口区 (1)在表单上创建2个标签,1个列表框和1个组合框。 请指定要修改的记录 (2)在数据环境中添加SB表和BMDM。 6-1 016-2 注意,若存在关联联线则将它取消。 (3)属性设置:见表7.7。 00-1微机 (4) Cobol的 InteractiveChange事件代码编写如下: 请选供代入的部门号 THISFORM. LISTI Refresh &&在组合框列表中选项并替代SB.部门后更新列表框的显示 (5) Forml的Init事件代码编写如下 3三车间 THISFORM. Combol Enabled=F &&使初始时不能操作组合框,只可在列表框先确定记录 (6)List1的 Interactive Change事件代码编写如下: 图76选项替代 THISFORM. Combol Enabled=. T &&列表框操作后即允许组合框操作 (7) List的Init事件代码编写如下: SET ORDER TO TAG编号 &&使列表按设备编号次序显示(假定SB表中该索引标识已存在
[例7-4] 试用BMDM表的代码来修改SB表的部门字段。 要求SB表在列表框显示, BMDM表在组合框显示;并且当 列表框确定一个记录后,便可用组合框的选项来替代SB表 的部门字段值。 (1) 在表单上创建2个标签,1个列表框和1个组合框。 (2) 在数据环境中添加SB表和BMDM。 注意,若存在关联联线则将它取消。 (3) 属性设置:见表7.7。 (4) Combo1的InteractiveChange 事件代码编写如下: THISFORM.LIST1.Refresh && 在组合框列表中选项并替代SB.部门后更新列表框的显示 (5) Form1的Init事件代码编写如下: THISFORM.Combo1.Enabled=.F. && 使初始时不能操作组合框,只可在列表框先确定记录 (6) List1的InteractiveChange 事件代码编写如下: THISFORM.Combo1.Enabled=.T. && 列表框操作后即允许组合框操作 (7) List1的Init事件代码编写如下: SET ORDER TO TAG 编号 && 使列表按设备编号次序显示(假定SB表中该索引标识已存在) 图7.6 选项替代
清华大学出版社 TSINGHUA UNIVERSITY PRESS 表77“用BMDM表修改SB表的部门”属性设置 对象 属性 属性值 说明 Form1 Caption 用BMDM表的代码来修改在表单标题栏显示文本 SB表的部门 abell Caption 请指定要修改的记录 设置第1个标签的显示文本 Autosize T 区域大小自动适应标题 abe12 Caption 请选供代入的部门号:设置第2个标签的显示文本 Autosize T Listi RowSourceType 6 列表框值源类型:字段 RowSource sb编号,名称,部门数据环境中添加表后才能设置字段」 Column 3 列表显示3列 Boundcolumn 第1列作为 value属性值 Combo Style 组合框类型设置为下拉列表框 RowSourceType 2 组合框值源类型:别名 RowSource BMDM 数据环境中添加表后才能设置表名 Column count 列表显示2个字段:代码与名称 Boundcolumn 第1列作为 value属性值 ControlSource SB.部门 指定从列表选定的项存入的位置
对 象 属 性 属 性 值 说 明 Form1 Caption 用BMDM表的代码来修改 SB表的部门 在表单标题栏显示文本 Label1 Caption 请指定要修改的记录: 设置第1个标签的显示文本 AutoSize .T. 区域大小自动适应标题 Label2 Caption 请选供代入的部门号: 设置第2个标签的显示文本 AutoSize .T. List1 RowSourceType 6 列表框值源类型:字段 RowSource sb.编号,名称,部门 数据环境中添加表后才能设置字段 ColumnCount 3 列表显示3列 BoundColumn 1 第1列作为value属性值 Combo1 Style 2 组合框类型设置为下拉列表框 RowSourceType 2 组合框值源类型:别名 RowSource BMDM 数据环境中添加表后才能设置表名 ColumnCount 2 列表显示2个字段:代码与名称 BoundColumn 1 第1列作为value属性值 ControlSource SB.部门 指定从列表选定的项存入的位置 表7.7 “用BMDM表修改SB表的部门”属性设置
[例76在表单上创建个组合框和个文本框要求如下 (1)组合框的列表包含SB表的编号字段值。 (2)能在组合框中为其列表键入新选项。 (3)若选取组合框列表中的项(也可以是刚添入的新选项),便能将它 送入文本框。 假定组合框和文本框已在表单上创建(图略),下面列出主要的属性和事件代码。 (1) Cobol属性设置 (默认值,表示组合框类型为下拉组合框) RowSource Type: 6 (表示控件值源类型为字段) Row Source:SB.编号(在数据环境中添加SB表后,就能在属性窗口选取字段) (2) Combo1的 KeyPress事件代码编写如下: LPARAMETERS nKeyCode, nShiftAltCtrl IF kEycOde=13 &&按回车键则条件表达式返回.T If This. ListIndex=0&组合框列表中无此键入值返回.T.,才允许添加数据 THIS. Row Type=0&控件值源类型设置为可用 AddItem方法程序添加数据 THIS. AddItem(THIS. Display value)&&键入值添入列表末尾 THIS. Value=THIS. Displayvalue&&使键入值立即成为列表中的选项 INSERT INTO \vfpex\sb (E =)VALUES (THIS. Displayvalue) && INSERT-SQL命令在SB表末尾添加一个记录,并将键入值存入该记录的编号字段 THIS Row SourceType=6 &&恢复控件值源类型为″字段′ ENDIF ENDIF (3) Combo1的 Interactive Change事件代码编写如下 THISFORM. Text1. Value=THIS Value
[例7-6] 在表单上创建1个组合框和1个文本框,要求如下: (1) 组合框的列表包含SB表的编号字段值。 (2) 能在组合框中为其列表键入新选项。 (3) 若选取组合框列表中的项(也可以是刚添入的新选项),便能将它 送入文本框。 假定组合框和文本框已在表单上创建(图略),下面列出主要的属性和事件代码。 (1) Combo1属性设置 Style:0 (默认值,表示组合框类型为下拉组合框) RowSourceType: 6 (表示控件值源类型为字段) RowSource:SB.编号 (在数据环境中添加SB表后,就能在属性窗口选取字段) (2) Combo1的KeyPress事件代码编写如下: LPARAMETERS nKeyCode, nShiftAltCtrl IF nKeyCode = 13 && 按回车键则条件表达式返回.T. IF This.ListIndex=0 && 组合框列表中无此键入值返回.T.,才允许添加数据 THIS.RowSourceType=0 && 控件值源类型设置为可用AddItem方法程序添加数据 THIS.AddItem(THIS.DisplayValue) && 键入值添入列表末尾 THIS.Value=THIS.DisplayValue && 使键入值立即成为列表中的选项 INSERT INTO \vfpex\sb(编号) VALUES(THIS.DisplayValue) && INSERT-SQL命令在SB表末尾添加一个记录,并将键入值存入该记录的编号字段 THIS.RowSourceType=6 && 恢复控件值源类型为"字段" ENDIF ENDIF (3) Combo1的Interactive Change事件代码编写如下: THISFORM.Text1.Value=THIS.Value