1 / 57

控件设计

控件设计. 第 7 章 控件设计. 7.1 控件的分类. 7.2 控件. 7.3 小型案例实训. 7.4 习题. 教学目的与要求. 掌握控件的分类. 掌握 标签、文本框、编辑框、命令按钮的设计. 掌握列表框与组合框、微调框、复选框的设计. 掌握 命令按钮组、选项按钮组、表格、页框的设计. 掌握计时器、线条、形状控件的设计. 掌握 ActiveX 控件的设计. 掌握自定义类的创建与使用. 7.1 控件的分类. 控件是用于显示数据、执行操作的一种图形对象。. 7.1 控件的分类. 根据控件与数据源的关系,表单中的控件分为:

tanuja
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 控件设计

  2. 第7章 控件设计 7.1 控件的分类 7.2 控件 7.3 小型案例实训 7.4 习题

  3. 教学目的与要求 掌握控件的分类 掌握标签、文本框、编辑框、命令按钮的设计 掌握列表框与组合框、微调框、复选框的设计 掌握命令按钮组、选项按钮组、表格、页框的设计 掌握计时器、线条、形状控件的设计 掌握ActiveX控件的设计 掌握自定义类的创建与使用

  4. 7.1 控件的分类 控件是用于显示数据、执行操作的一种图形对象。

  5. 7.1 控件的分类 根据控件与数据源的关系,表单中的控件分为: 绑定型控件:是指其内容可以与后端的表、视图或变量相关联的控件,通常用于输入、显示、修改数据等。通常用ControlSource属性用来指定与其他控件相绑定的数据源。 非绑定型控件:是指其内容不与后端的表、视图或变量相关联的控件,通常用于设置响应事件的处理代码,即用于处理操作。 根据控件是否包含其他控件来分,分为: 基本控件:是指不能包含其他控件的控件 容器控件:是指可以包含其他控件的控件

  6. 7.2 控 件 7.2.1 标签(Label) 7.2.2 文本框(TextBox) 7.2.3 编辑框(EditBox) 7.2.4 命令按钮(CommandButton)与命令按钮组 7.2.5 列表框(ListBox)与组合框(ComboBox) 7.2.6 选项按钮组(OptionGroup) 7.2.7 复选框(CheckBox) 7.2.8 微调框(Spinner) 7.2.9 表格(Grid) 7.2.10 页框(PageFrame) 7.2.11 计时器(Timer) 7.2.12 线条(Line)和形状(Shape) 7.2.13 ActiveX控件

  7. 7.2 控件 7.2.1 标签(Label) 标签是用于显示文本的图形控件,通常用于显示提示信息。 常用属性: Caption:定义标签显示的内容。 BackStyle:设置标签的背景是否透明。 AutoSize:决定是否自动调整标签的大小。 WordWrap:决定标签上显示的文本能否自动换行。 Alignment:指定控件中文本的对齐方式。 还有FontSize、FontName、ForeColor、BackColor等属性。

  8. 7.2.2 文本框(TextBox) 文本框是一个绑定型控件,通常用于显示或编辑表中的字段内容,也可以用于输入数据。 1.常用属性 ControlSource:指定要绑定的数据源 Value:是指当前文本框中显示的值 PassWordChar:指定用作占位符的字符。一般设置为星号(*) InputMask:指定文本框中数据的输入格式和显示方式 Format:指定文本框中Value属性的输入和输出格式 ReadOnly:指定控件是否只读。 2.常用事件 Valid、GotFocus、When、LostFocus分别是在文本框失去焦点之前、得到焦点的时候、失去焦点的时候和失去焦点后发生 3. SetFocus方法

  9. 7.2 控件 文本框

  10. 7.2.3 编辑框(EditBox) 编辑框类似于文本框,可用来保存较长的文本,通常与表中的备注型字段绑定。 常用属性: SelText:返回用户编辑区内选定的文本 SelStart:返回编辑框中所选文本的起始点的位置或插入点的位置 SelLength:返回用户在文本框中所选文本的字符数 ScrollBars:指定控件所具有的滚动条类型 ControlSource: Value:

  11. 7.2.4命令按钮(CommandButton)与命令按钮组(CommandGroup)7.2.4命令按钮(CommandButton)与命令按钮组(CommandGroup) 命令按钮通常用来启动一个事件以完成某种功能,例如记录指针的移动、退出表单等。命令按钮组是一种容器型控件,包括一组命令按钮。 1.常用属性 Caption:指定在命令按钮上显示的文本。设置访问键\<字母,ALT+字母 Picture:指定命令按钮上显示的图片。 Default:当设置为“真”(.T.)时,按<Enter>键选择此命令按钮 Cancel:当设置为“真”(.T.)时,按<Esc>键选择此命令按钮 Enabled:指定该命令按钮是否可用。 ButtonCount :是命令按钮组的属性,指定包含命令按钮的数目。 Value:表明用户选定了第几个按钮。

  12. 7.2 控件 2. 常用事件 Click事件:鼠标单击对象时发生。 DblClick事件:鼠标双击对象时发生。 RightClick事件:鼠标右击对象时发生。 例:创建显示图书表的表单。要求用命令按钮组实现记录指针的导航,实现上一条、下一条和退出功能。 DO CASE CASE This.Value=1 SKIP -1 CASE This.Value=2 SKIP CASE This.Value=3 Thisform.Release ENDCASE ThisForm.Refresh 退出(\<Q) 退出Q ALT+Q

  13. 7.2 控件 完善命令按钮组的ClickA事件代码,实现记录指针的导航。 DO CASE CASE THIS.Value=1 IF NOT BOF() SKIP -1 ELSE MESSAGEBOX("前面没有记录了!!") ENDIF CASE THIS.Value=2 IF NOT EOF() SKIP ELSE MESSAGEBOX("后面没有记录了!!") ENDIF CASE THIS.Value=3 THISFORM.RELEASE ENDCASE THISFORM.REFRESH DO CASE CASE This.Value=1 IF NOT BOF() SKIP -1 ENDIF CASE This.Value=2 IF NOT EOF() SKIP ENDIF CASE This.Value=3 ThisForm.Release ENDCASE ThisForm.Refresh

  14. 7.2 控件 DO CASE CASE THIS.Value=1 GO TOP IF THIS.Command3.Enabled=.F. THIS.Command3.Enabled=.T. THIS.Command4.Enabled=.T. ENDIF CASE THIS.Value=2 SKIP -1 IF BOF() THIS.Command1.Enabled=.F. THIS.Command2.Enabled=.F. ENDIF IF THIS.Command3.Enabled=.F. THIS.Command3.Enabled=.T. THIS.Command4.Enabled=.T. ENDIF …… …… ENDCASE THISFORM.REFRESH

  15. 7.2.5 列表框(ListBox)与组合框(ComboBox) 列表框主要用于显示一组预先设定的值,并可以通过滚动条操作浏览列表信息,用户从列表中可以选择需要的数据。 组合框类似列表框和文本框的组合,可以在其中输入值或从列表中选择条目。组合框的Style属性可以控制是否允许用户输入数据。 它们的数据源由RowSourceType属性和RowSource属性确定。 1.常用属性 RowSourceType:决定数据源的类型。 RowSource:根据RowSourceType属性的值指定对应的数据源

  16. 7.2 控件 RowSourceType的取值及含义:

  17. 7.2 控件 例:创建一个表单,添加列表框,设置列表框的不同数据源,观察列表框中的内容。 ①设置RowSourceType 属性为1,RowSource属性为教授、副教授、讲师、助教 ②设置RowSourceType 属性为3,RowSource属性为SQL语句: Select sm,zz from ts where cbsbh=”Z014” into cursor cbs1 ③设置RowSourceType 属性为6,RowSource属性为字段 RowSource: ts.sh, sm ④设置RowSourceType 属性为8,RowSource属性为ts,显示图书表的表结构(字段名) ⑤设置RowSourceType 属性为7, RowSource属性为*.dbf, 显示当前路径下所有扩展名为.dbf 的文件。

  18. 7.2 控件 组合框与列表框的属性(续) ControlSource:用于指定所绑定的数据源。 ColumnCount:指定列的个数,默认值为0(等价于1)。 ColumnWidths:指定列宽。 BoundColumn:确定绑定列。默认为第一列与其绑定 Value:显示的值,如果是多列,Value属性的值由BoundColumn属性指定 DisplayValue:选定项的第一列内容。 ListIndex:选中数据项在列表中的位置。 ListCount:数据项的总数。 List:用于存取列表框中数据条目的字符串数组。例如,list(3,2)表示第3个条目第2列上的数据项。 Selected:指定条目是否被选中。.T.表示选中。  Sorted:指定列表中的条目是否按字母顺序自动排序 MultiSelect:指定用户能否进行多重选定。 Style:是组合框的属性,控制是否允许用户输入数据。style=0下拉组合框,允许输入和选择,style=2下拉列表框,只允许选择,不允许输入

  19. 7.2 控件 列表框与组合框(续) 2.常用事件 InterActiveChange:当用户用键盘或鼠标改变列表框或组合框中的值(选项)时发生。 Click、DblClick事件:鼠标单击和双击发生的事件。 3.常用方法 AddItem:向列表框或组合框中添加数据项。 RemoveItem:从列表框或组合框中移去数据项。 Clear:清除列表框中所有条目。 Requery:当RowSourceType设置为3或4时,可使用该方法重新运行查询以更新列表框中的条目。

  20. 7.2 控件 例:选择组合框中的读者编号,在列表框中自动显示该读者的借阅信息,显示书号、书名、借书日期。 ①数据环境中添加读者(dz)表 ②设置组合框的RowSourceType属性为“6-字段”,RowSource属性为dz.dzbh。 ③设置列表框的ColumnCount属性值为3, ColumnWidth的属性为60,70,80。 ④组合框的InterActiveChange事件中写代码: PUBLIC dzbh1 dzbh1=This.Value Thisform.list1.RowsourceType=3 Thisform.list1.Rowsource=“SELECT ts.sh,sm,jsrq FROM ts;INNER JOIN jy ON ts.sh=jy.sh AND jy.dzbh=dzbh1 INTO CURSOR xxx" Thisform.Refresh

  21. 7.2.6 选项按钮组(OptionGroup) 选项按钮组是包含多个选项按钮的容器控件。 1.常用属性 ButtonCount :是指选项按钮组中的选项按钮的数目 ControlSource:指定所绑定的数据源 Value:表示选择了第几个选项按钮 注意:单个选项按钮不能直接添加到 表单上。 2.常用事件 InterActiveChange事件:当用户用鼠标更改选项时发生。 Click:单击鼠标时发生。

  22. 7.2.7 复选框(CheckBox) 1.常用属性 Caption:指定显示在复选框旁的文本。 ControlSource:指定所绑定的数据源。通常与逻辑型字段绑定。 Value:指定控件的当前状态。其取值可以是0、1、2,分别表示未选中、选中、混合状态。Value属性也可以设置为.T. 、.F.、.NULL. Alignment:指定复选框的对齐方式,0(默认值)表示左,1表示右

  23. 7.2.8微调框(Spinner) 微调框控件可以实现给定范围内的数值输入,通过上箭头或下箭头调整输入,也可以在微调框内直接键入一个数值。 1.常用属性 KeyBoardHighValue:指定从键盘输入微调框的最大值。 KeyBoardLowValue:指定从键盘输入微调框的最小值。 SpinnerHighValue:指定通过单击微调按钮输入的最大值。 SpinnerLowValue:指定通过单击微调按钮输入的最小值。 Increment:指定单击上、下箭头时,微调控件中增加或减少的数值,默认值为1.00。 Value:当前微调框中显示的数值。 2.事件 InterActiveChange事件:当调整微调框中数值时发生。 Click:鼠标单击时发生。

  24. 7.2 控件 Spinner1的InterActiveChange事件代码为: THISFORM.Label1.FontSize=THIS.Value Check1、Check2、Check3的InterActiveChange事件代码为: THISFORM.Label1.FontBold=THIS.Value THISFORM.Label1.FontItalic=THIS.Value THISFORM.Label1.FontUnderLine=THIS.Value OptionGroup1对象的Click事件代码为: DO CASE CASE THIS.Value=1 THISFORM.Label1.FontName="宋体" CASE THIS.Value=2 THISFORM.Label1.FontName="隶书" CASE THIS.Value=3 THISFORM.Label1.FontName="黑体" CASE THIS.Value=4 THISFORM.Label1.FontName="楷体_GB2312" ENDCASE *THISFORM.Label1.FontName=this.options(value).caption 例:分别用复选框、选项按钮组和微调框控件控制标签的字型、字体、字号。

  25. 7.2.9表格(Grid) 表格是按行和列显示数据的容器对象,表格包含列标头 (Header)、列(Column)和列文本控件。 1、常用属性 RecordSource属性:指定与表格控件相绑定的数据源。 RecordSourceType属性:指定表格控件的数据源类型,如下表。

  26. 7.2 控件 表格的属性(续) DeleteMark:表格的删除标记列是否显示。 RecordMark:记录选择器列是否显示。 ScrollBars:指定所具有的滚动条类型 ColumnCount:指定列控件的数目。 AllowAddNew:指定是否可以将表格中的新记录添加到表中。 LinkMaster:指定表格控件中所显示的子表的父表的名称。 ChildOrder:用于指定为建立一对多关系的子表所用到的索引。 RelationalExpr:确定基于父表字段的关联表达式。

  27. 7.2 控件 2.表格列(Column)的常用属性 ControlSource属性:指定要在列中显示的数据 CurrentControl:指定列对象显示活动单元值的控件 Sparse属性:指定CurrentControl 属性是否仅影响列的活动单元。 还有DynamicBackColor、DynamicForeColor、DynamicFontName、DynamicFontSize等属性,利用这些属性可以动态实现一些特殊的显示效果 例如,使用SetAll 方法把表格控件的背景色设置为红绿相间。 Form1.Grid1.SetAll(“DynamicBackColor”,;”IIF(mod(Recno(),2)=0,RGB(255,0,0),RGB(0,255,0))”, “Column”)

  28. 7.2 控件 3.表格标头(Header)的属性 Caption:指定标头对象的标题文本。 Alignment:指定标题文本的对齐方式。 例创建一个表单,浏览读者的借阅信息。文本框中显示读者的编号和姓名,用表格显示该读者的借阅信息。

  29. 7.2.10页框(PageFrame) 页框主要用于扩展表单的面积或功能。页框是包含多个页面的容器。页面还是容器控件,页面上可以含有其他控件,但页面不能直接拖放到表单上。 1.页框的常用属性 PageCount:页框中包含的页面数,Pages是页框的集合属性。 Tabs:决定页面的选项卡是否可见,默认值为.T. TabStyle:指定选项卡两端或非两端对齐,默认0-两端。 ActivePage:页框控件中活动页面的编号,默认值为1。 TabStretch:1为裁剪,0为堆积,将选项卡层叠起来。 2.页面的常用属性 Caption:指定页面的标签上显示的文本。 BackColor:指定页面的颜色。

  30. 7.2 控件 在命令按钮组的Click事件中可以设置如下代码: n=This.Value IF n=4 Thisform.Release ELSE Thisform.PageFrame1.ActivePage=n ENDIF Thisform.Refresh 例:创建一个表单,表单上有一个页框控件,页框的Tabs属性为.F.,试通过单击命令按钮组中的命令按钮激活各个页面。

  31. 7.2 控件 例:创建一个表单,要求从组合框中选择读者的编号,在页框的第一页上显示读者的基本信息,第二页上显示该读者的借阅信息。 设置组合框的RowSourceType为3,RowSource为如下的SQL语句: SELECT dzbh FROM dz INTO CURSOR xx 组合框的InterActiveChange事件代码如下: PUBLIC bh1 bh1=This.Value IF USED("dz") SELECT dz ELSE USE dz ENDIF LOCATE FOR dzbh=bh1 Thisform.pf1.p1.Text1.Value=xm Thisform.pf1.p1.Text2.Value=csrq Thisform.pf1.p1.Check1.Value=gszt jsxs=lx IF jsxs="教师" Thisform.pf1.p1.Optiongroup1.Value=1 ELSE Thisform.pf1.p1.Optiongroup1.Value=2 ENDIF

  32. 7.2 控件 Thisform.pf1.p2.g1.RecordSourceType=4 Thisform.pf1.p2.g1.RecordSource="SELECT dzbh as 编号,sh as 书号,; jsrq as 借书日期,hsrq as 还书日期 ; FROM jy WHERE jy.dzbh=bh1 INTO CURSOR temp"

  33. 7.2.11计时器(Timer) 计时器是用来处理复发事件的控件。该控件设计时可见,运行时不可见。 1.常用属性 Interval:指定Timer事件发生的时间间隔,单位是毫秒。Interval为0时,计时器将不响应Timer事件。 Enabled:指定控件是否可用,属性设置为“真”(.T.)计时器启用。 2.常用事件 Timer:事件是计时器中最重要的事件。当经过Interval属性中设定的毫秒时间间隔后,此事件发生。 3.常用方法 调用Reset方法重置计时器控件,重新从零开始计时。

  34. 7.2 控件 例:新建一表单,实现每隔一秒种,随机改变颜色。 设置计时器控件的Interval属性值为1000,Enabled属性为.F.。 在计时器的Timer事件中编写如下代码: Public R,G,B R= Rand()*255 G= Rand()*255 B= Rand()*255 Thisform.Text1.BackColor=RGB(R,G,B) 2个命令按钮的Caption属性分别为“变色开始”、“变色停止”,在命令按钮1的 Click事件中编写如下代码: Thisform.Timer1.Enabled=.T. 在命令按钮2的Click事件中编写代码: Thisform.timer1.Enabled=.F. Thisform.text1.value= “红R=”+STR(R,3)+CHR(13)+ ; "绿R="+STR(G,3)+CHR(13)+ "蓝B="+STR(B,3)

  35. 7.2.12线条(Line)和形状(Shape) 线条控件用于创建水平线、竖直或对角线条。形状控件用来创建各种形状图形,包括矩形、方形、椭圆形或圆形。 1.线条控件的常用属性 BorderWidth:指定线条的线宽。 BorderStlye:指定线条的线型。 LineSlant:指定线条倾斜方向,默认值是“\”。 Width、Height:线条在水平、垂直方向投影的宽度、高度。 2.形状控件的常用属性 Curvature:用来设置形状的曲率,决定显示什么样的图形,取值范围是0~99。0用来创建矩形;99表示圆或椭圆。 FillStlye:指定用来填充形状的图案。 FillColor:指定使用的填充色。 SpecialEffect:指定控件的不同样式选项,1-平面,3-三维。 Width、Height属性:控制形状对象的宽度和高度,Width和Height相同时表示是正方形或圆。

  36. 7.2 控件 例:创建表单,用来显示各种曲率的形状。 在Check1的Click事件中代码: Thisform.Shape1.Curvature=0 在Check2的Click事件中编写代码: Thisform.Shape1.Curvature=99 在Spinner1的InterActiveChange事件 中编写代码: Thisform.Shape1.Curvature=This.Value

  37. 7.2.13 ActiveX控件 ActiveX控件分为ActiveX控件和ActiveX绑定型控件。ActiveX绑定型控件可以与表中的通用型字段绑定。 ActiveX绑定型控件常用属性有: ControlSource:设置其数据源,通常与数据表中某一通用型字段相绑定。 Stretch:设置OLE对象与 显示区域的大小比例。 它有三个取值:0、1、2

  38. 7.3 自定义类 自定义的类保存在扩展名为.vcx的类库文件中。 7.3.1 类的创建 1.使用类设计器自定义类 例:用类设计器自定义一个退出按钮类,实现“退出”功能。 新建类名:exitcmd 派生于:CommandButton 存储于:d:\vfp\tsgl\mylib.vcx Caption属性:退出, Click 事件码为:Thisform.Release。

  39. 7.3 自定义类 2.表单以及控件另存为类 “保存”栏下有三个单选按钮: 选定控件。若用户未选中表单中的控件,则该按钮不可选。 当前表单。 整个表单集。若当前没有创建表单集,则该按钮不可选

  40. 7.3 自定义类 3.使用命令定义类 创建类库文件的命令是: CREATE CLASSLIB 类库名 创建新类的命令是: CREATE CLASS 类名OF 类库AS 基类名 例如:创建一个类库lib1,在lib1中定义新类tt1,派生于TextBox。 CREATE CLASSLIB lib1 CREATE CLASS tt1 OF lib1 AS TextBox 创建的新类tt1保存在类库lib1.vcx文件中。

  41. 7.3.2 类的修改 1.使用“项目管理器”修改类 2.利用【文件】菜单修改类 3.使用命令修改类 命令格式:MODIFY CLASS <类名> OF <类库名>

  42. 7.3.3 为类添加属性 选择菜单【类】→【新建属性】 新属性的默认属性值为.F. “可视性”有公共、保护或隐藏三种选择 7.3.4 为类添加方法 选择【类】→【新建方法程序】菜单项 新的方法程序为“默认过程”

  43. 7.3.5 类的应用 添加类到表单 直接添加 2. 注册类库后添加类到表单上 3. 指定数据库表字段 4. 指定表单和表单集的模板类

  44. 7.3.6 覆盖默认属性设置 例如,在类设计器中,创建一个派生于文本框类的自定义类tb,设置tb的背景色为红色。然后新建一个表单,将自定义类拖放到表单上,拖放2个对象tb1、tb2,设置tb1的背景色为蓝色,tb2的背景色不改变,保存运行表单,表单上两个文本框的颜色分别是蓝色和红色。然后在类设计器中,修改自定义类tb的背景色为绿色,则再次运行表单时,表单上的两个文本框的颜色分别是蓝色和绿色。

  45. 7.3.7 调用父类方法程序代码 用户如果在为新类或对象添加新功能的同时,仍然要保留父类的功能,可使用函数Dodefault()或作用域操作符“::”调用父类的程序代码。 调用同名的方法程序用Dodefault()。当调用父类的不是同名的方法程序时只能用“::”调用父类的程序代码。 例如,在RightClick事件中调用父类的Click事件代码时,使用“::”调用。

  46. 7.3.8 以编程方式定义和使用类 定义类的命令格式是: DEFINE CLASS 类名AS 父类名 [属性名=表达式] …… [ADD OBJECT 对象名AS 类名] …… [PROCEDURE 过程名 …… ENDPROC] ENDDEFINE

  47. 7.3 自定义类 例:定义一个表单类myform,设置表单的Caption属性为“我的表单”,在myform上添加一个命令按钮cmdinf,该对象派生于基类CommandButton,设置该对象的Caption属性为“提示”,单击该按钮,出现消息框,提示单击了该按钮。 DEFINE CLASS myform AS Form Caption="我的表单" Backcolor=RGB(0,0,128) ADD OBJECT cmdinf AS CommandButton Cmdinf.caption="提示" Cmdinf.top=100 Cmdinf.left=150 PROCEDURE cmdinf.Click Messagebox(“你单击了提示按钮”) ENDPROC ENDDEFINE

  48. 7.3 自定义类 例:基于自定义类myform创建一个表单对象。 mf=CREATEOBJECT("myform") mf.Show mf.ADDOBJECT(“label1”,”LABEL”) mf.label1.Caption=”欢迎使用,再见” mf.label1.FontSize=20 mf.label1.Autosize=.T. mf.label1.Visible=.T. mf.label1.BackColor=RGB(255,0,0) READ EVENTS

  49. 7.3 自定义类 DEFINE CLASS myform AS Form Caption="我的表单" Backcolor=RGB(255,255,0) ADD OBJECT cmdinf AS CommandButton Cmdinf.Caption=”提示” Cmdinf.Top=100 Cmdinf.Left=120 Cmdinf.Width=80 Cmdinf.Height=25 PROCEDURE cmdinf.Click Messagebox(“你单击了提示按钮”) CLEAR EVENTS ENDPROC ENDDEFINE

  50. 7.4 小型案例实训 试设计一个表单,用于标准化考试的练习。练习的题型是选择题,每道题有四个选项,其中有一个选项是正确的,一批练习结束后,出现消息框提示正确率情况。 1.创建表结构

More Related