1 / 46

其它控件介绍 表单管理 多表单应用程序 类 建立工具栏

其它控件介绍 表单管理 多表单应用程序 类 建立工具栏. 表单设计的基本步骤为:. 打开表单设计器 向表单添加控件 设置表单及控件的属性 添加表单及控件的事件代码 保存表单 运行及调试表单。. 其它控件介绍. 控件的通用属性 命令按钮组控件 编辑框 复选框和单选框 列表框和组合框 微调控件 表格和页框 超级连接 ActiveX 控件和 ActiveX 绑定控件. 控件的通用属性. Enabled 属性 Visible 属性 以 Font 打头的一组属性 为多个对象设置共同属性.

bud
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. 表单设计的基本步骤为: • 打开表单设计器 • 向表单添加控件 • 设置表单及控件的属性 • 添加表单及控件的事件代码 • 保存表单 • 运行及调试表单。

  3. 其它控件介绍 • 控件的通用属性 • 命令按钮组控件 • 编辑框 • 复选框和单选框 • 列表框和组合框 • 微调控件 • 表格和页框 • 超级连接 • ActiveX控件和ActiveX绑定控件

  4. 控件的通用属性 • Enabled属性 • Visible属性 • 以Font打头的一组属性 • 为多个对象设置共同属性 • FontSize:定义字的大小; • FontName:定义文本的字体; • FontColor:定义字的颜色; • Fontbold:定义文字是否粗体; • FontItalic:定义文字是否斜体; • 这组属性是许多可有文字的对象都有的属性,如:表单、标签控件、命令按钮控件、文本框控件、表格控件、列表框控件等等。 • 这一属性是除“超级连接”之外的所有控件及表单都有的属性,其值可设置为:.T.-真或.F.-假,指定表单或控件能否响应由用户引发的事件。只有“计时器”控件的这一属性的含义不同,请参阅6.6.3节。 • 这一属性是除“超级连接”和“计时器”之外的所有运行时可见的控件及表单都有的属性,其值可设置为:.T.-真或.F.-假,指定运行时对象是可见还是隐藏。 • 按住Shift健分别单击若干对象,用来选取需设置属性的对象,属性窗口的对象组合框中将会显示“多重选定”文本,此时便可在属性窗口为这些对象设置共同属性,例如:设置FontSize属性改变文字大小。

  5. 命令按钮组控件 • 命令按钮组控件是一个容器控件,它可包含若干个命令按钮,并能统一管理这些命令按钮,命令按钮组与组内的各命令按钮都有自己的属性,事件和方法程序,因而既可单独操作各命令按钮,也可对组控件进行操作。 • 命令按钮组的生成器 • 命令按钮组及其命令按钮的操作 • Click事件的判别 • 容器中对象的引用 • 容器及其对象的编辑 • 常用命令按钮组的属性有: • ButtonCount:设置组中命令按钮的数目。 • BackStyle:设置命令按钮的背景是否透明。 • BorderStyle:定义命令按钮组的边框。 • 按钮选项卡 (1)微调控件:指定命令按钮组中的按钮数,对应于命令按钮组的ButtonCount属性 (2)表格:包含标题和图形两列。 • 标题列对应于命令按钮的Caption属性,命令按钮可以具有标题或图象,或两者都有。图形列对应于命令按钮的Picture属性。 • 命令按钮会自动调整大小,以容纳新的标题和图片,组容器也会自动调整大小。 (2)单击某命令按钮时,组控件的Value属性就会获得一个数值或字符串:当Value属性为1(默认值)时,将获得命令按钮的顺序号,它是一个数值;而当Value属性设置为空时,将获得命令按钮的Caption值,它是字符串。于是在命令按钮组的Click事件代码中便可判别出单击的是哪个命令按钮,并决定执行的动作。 (1)若命令按钮组及其所含的各命令按钮分别设置了Click事件代码,Visual FoxPro将以命令按钮的Click事件代码优先。 • 布局选项卡 (1)按钮布局:指定命令按钮组内的按钮按竖直方向或水平方向排列。 (2)按钮间隔:指定按钮之间的间隔。 上述两项将影响命令按钮组的Height和Width属性。 (3)边框样式:指定命令按钮组有单线边栏或无边框。 例如引用命令按钮组中的命令按钮,Thisform.Commandgroupl.Commandl 或This.Commandl。 (1)容器本身的编辑:设计时若在表单上选定容器,就可编辑该容器的属性、事件代码与方法程序,但不能编辑容器中的对象。 (2)容器中对象的编辑:要编辑容器中的对象,须先激活容器。激活的方法是选定容器的快捷菜单中的【编辑】命令,容器被激活的标志是其四周显示一个斜线边框,如图所示。容器激活后,用户便可选定其中的对象进行编辑。

  6. [例5-1] 用命令按钮组设计计算器。 • 操作步骤如下: • 计算器的按钮部分用命令按钮组控件进行设计。向表单添加一个命令按钮组控件,在命令按钮组控件上单击右键,选择【生成器】,在按钮选项卡中设置按钮数目为16,并设置标题 。然后在“布局”页面中设置“按钮布局”为:水平。单击【确定】按钮,关闭生成器。设置命令按钮组控件的Height属性值为140,在命令按钮组控件上单击右键,选择【编辑】,移动命令按钮,将所有命令按钮的height和Widdth均设置为:25,设置成 的状态。其它部分外观的设计同[例6-10],可以从[例6-10]的表单中复制过来。 • 设置命令按钮组控件Commandgroup1的Value属性值为:=“” • 这一步骤非常重要,如没有这一步,计算器的设置要复杂得多。 • 在命令按钮组控件Commandgroup1的Click事件添加下列代码: IF Thisform.t AND (asc(This.Value)>=45 AND ASC(This.Value)<=57) Thisform.Text1.Value="" &&清空文本框内容 ENDIF IF This.Value="=" &&如果单击了“=”按钮 x=Thisform.Text1.Value Thisform.Text1.Value=str(&x,50,6) Thisform.t=.T. ELSE &&如果单击了除“=”以外的按钮 Thisform.Text1.Value=Thisform.Text1.Value+This.Value Thisform.t=.F. ENDIF 如图所示 如图所示

  7. 编辑框 • 在编辑框中可以编辑长字符字段或备注字段中的文本。编辑框中允许输入多段文本,也可以使用方向键、PageUp键、PageDown键、滚动条来移动文本。编辑框只能处理字符型数据。 • 编辑框的常用属性有: • SelStart:返回控件的文本输入区域中用户选择文本的起始点。当没有选定文本时,指示插入点的位置。另外,它还可以指定控件的文本输入区域中选择的文本起始点。 • AllowTabs:设置用户是否可以在编辑框中用Tab 键前后移动。如果允许,应明确地指出用户可以通过按Ctrl+Tab移到下一个控件。 • SelText:返回用户选定的文本,如果没有选定任何文本,则返回空字符串 ("")。或指定包含选定文本的字符串。 • HideSelection:当编辑框没有焦点时选定文本是否以选定状态显示。 • SelLength:返回用户在控制的文本区域中选定的字符数目,或指定要选定的字符数目。 • ReadOnly:设置用户是否可以改变编辑框的文本。 • ScrollBars:设置是否显示垂直滚动条。 • ControlSource:设置将哪一个数据库的表的那个字段的值显示在编辑框中。

  8. [例5-2] 建立一个表单,其外观 如图所示 • 并完成下列功能: • 编辑框与某表文件的的备注型字段绑定; • 执行表单后,用户选择编辑框的内容,单击【确定】按钮,选定的内容将在右边的文本框中出现。 • 操作步骤如下: • 先作准备工作,建立一个名为WBKLB.DBF的表文件,包含一个字段,字段名为:NR,类型为:M,并输入一条记录的内容,内容可从某个已有的文件或帮助中复制过来。 • 新建一个表单,设置表单的Caption属性值为:编辑框实例;为表单设置数据环境,在数据环境中添加表WBKLB.DBF;在表单中添加一个编辑框控件,一个文本框控件,设置编辑框的ControlSourc属性为:WBKLB.NR;再在表单中添加一个命令按钮控件,设置该控件的Caption属性为:确定;Click事件代码为: • Thisform.Text1.Value=Thisform.Edit1.Seltext

  9. 复选框和单选框 • 复选框与选项按钮(又译单选框)是对话框中的常见对象,复选框允许同时选择多项,选项按钮则只能在多个选项中选择其中的一项。所以复选框可以在表单中独立存在,选项按钮只能存在于它的容器选项按钮组中。 • 复选框控件 • 选项按钮组控件

  10. 复选框控件 • 复选框控件用于指定布尔状态:真或假,开或关,打开或关闭。 • 复选框的常用属性有: • Caption:该属性的值用来定义复选框的标题,即说明该复选框的功能。 • ControlSource:该属性值指定与该复选框对象绑定的数据源。 • Value:指定复选框的状态。 • Value 属性的设置有: 设置 说明 0 (默认值)未选定。 1 选定。 2 灰色,该设置只在代码中可用。 • Style:该属性的值用来定义复选框的外观,有:0-标准、1-图形两种可选值。

  11. 选项按钮组控件 • 选项的常用属性有: • Caption:定义选项的说明。 • Value:设置选项是否被选中,1表示选中,0表示未选中。 • Style:该属性的值用来定义单选框的外观,有:0-标准、1-图形两种可选值。 • 选项按钮组控件也有生成器,用法同命令按钮组类似。这里不再详述,请看下面的例题。 • 选项按钮组常用来表示在一组可选的项目中,同一时刻有且仅有一项可以被选中。 • 在选项按钮组控件上单击鼠标右键,然后选择【编辑】,可以对选项组中的每一个选项按钮进行属性和事件代码的设置。 • 选项组常用的属性有: • ButtonCount:设置组中选项的数目。 • BackStyle:设置选项组的背景是否透明。 • BorderStyle:定义选项组的边框。 • Value:表示被选中的按钮序号,默认值为1。

  12. [例5-3]建立一个表单,其外观 x=DOW(DATE()) &&用DOW()函数获取当前日期的星期数 DO CASE CASE x=1 &&如果是星期日 y="日" CASE x=2 &&如果是星期一 y="一" CASE x=3 &&如果是星期二 y="二" CASE x=4 &&如果是星期三 y="三" CASE x=5 &&如果是星期四 y="四" CASE x=6 &&如果是星期五 y="五" CASE x=7 &&如果是星期六 y="六" ENDCASE This.Parent.Text1.Value=DTOC(DATE())+" 星期"+y 如图所示 • 在计时器控件的time事件中添加以下代码: IF This.Parent.check1.Value=1 DO CASE CASE This.Parent.Optiongroup1.Value=1 SET DATE TO YMD CASE This.Parent.Optiongroup1.Value=2 SET DATE TO MDY CASE This.Parent.Optiongroup1.Value=3 SET DATE TO DMY ENDCASE ELSE DO CASE CASE This.Parent.Optiongroup1.Value=1 This.Parent.Text1.DateFormat=12 CASE This.Parent.Optiongroup1.Value=2 This.Parent.Text1.DateFormat=10 CASE This.Parent.Optiongroup1.Value=3 This.Parent.Text1.DateFormat=11 ENDCASE This.Parent.text1.Value=DATE() ENDIF • 并完成下列功能: • 表单被执行时按图所示的格式显示日期和时间; • 当用户改变格式设置时,立刻按用户设置的格式显示日期和时间; • 操作步骤如下: • 新建一个表单,添加五个标签控件、两个文本框控件、两个选项按钮组,两个复选框控件、两个形状控件、一个计时器控件,并设置相应属性,使其外观如图5-6所示,两个形状控件必须设置为“置后”。 • 设置控件的关键属性,设置计时器控件的Interval属性值为:10;设置两个文本框的TabStop属性值为:.F.-假;上面文本框的Width属性值为:240;下面文本框的Width属性值为:210;其它属性值读者可参照已确定的属性值及图5-6的相对位置自定。 IF This.Parent.Optiongroup2.Value=1 SET HOURS TO 12 This.Parent.text2.Width=210 *根据当前时间确定是上午,还是下午 IF hour(DATETIME())>12 This.Parent.label5.Caption="下午" ELSE This.Parent.label5.Caption="上午" ENDIF ELSE &&如果用户选择24小时制 SET HOURS TO 24 This.Parent.text2.Width=241 ENDIF IF This.Parent.check2.Value=1 This.Parent.text2.Value=SUBSTR(TTOC(DATETIME()),10,5) ELSE &&如果用户选择不显示秒 This.Parent.text2.Value=SUBSTR(TTOC(DATETIME()),10,5) ENDIF

  13. 列表框和组合框 • 列表框与组合框都有一个供用户选项的列表,但两者之间有两个区别: (1)列表框任何时候都显示它的列表,而组合框平时只显示一个项,待用户单击它的向下按钮后才能显示可滚动的下拉列表。若要节省空间,并且突出当前选定的项时可使用组合框。 (2)组合框又分下拉组合框与下拉列表框两类,前者允许键入数据项;而列表框与下拉列表框都仅有选项功能。

  14. 列表框控件 • 生成器 • 列表框生成器含有列表项、布局、样式、值等4个选项卡,用于为列表框设置各种属性。 • 列表项选项卡 • 样式选项卡 • 布局选项卡 • 值选项卡 • 控件值源的类型 • 列表框的常用属性 • 列表框的常用属性 • MoverBars:设置列表框的左侧是否显示移动按钮。 • MultiSelect:设置用户是否可以同时在列表中选择多项。 • Value:返回列表框中选定的项,如果有多列,返回由BoundColumn属性指定的列的内容。 • DisplayValue:返回列表框中选定的项第一列的内容。 • 列表项选项卡 • 该选项卡用于指定要填充到列表框中的项。 • 填充项可以是3种类型数据之一:表或视图中的字段、手工输入的数据或数组中的值。 • 表或视图中的字段 • 手工输入数据 • 数组中的值 • 样式选项卡 • 该选项卡用于指定列表框的样式,所显示的行数,要否递增搜索。下面仅说明显示行数的设置。 • “要显示的行数”微调控件用来调整列表框的显示行数,但是仅在文本选取7号字时所设置的行数与实际项数相符。原因是该微调控件的设置实际上改变了列表框的Height属性,而Visual FoxPro则按象素来指定高度。 • 布局选项卡 • 布局选项卡含有1个复选框和1个表格,用于控制列表框的列宽和显示。 1)“调整列表框的宽度来显示所有列”复选框:该选项自动设置了Width属性,能根据列表项选项卡中微调控件指定的列数自动调整列表框的宽度。 2)表格:表格中显示了在列表项选项卡中定义的列,并可用鼠标拖动列标头右边的列间隔线来调整列宽,相当于修改了Co1umnWidths属性。双击列标头还可隐藏该列,使得表单执行时该列不显示,但其数据仍起作用。 • 值选项卡 • 值选项卡包含两个组合框,分别用来指定返回值的列以及存储返回值的字段。 1)“从哪一列中返回值”组合框:该组合框的操作对应于BoundColumn属性。组合框列表中包含字段名或表示列号的选项,供用户决定列表框返回值的字段或列。 2)字段名组合框:该组合框的操作对应于ControlSource属性,用来指定存储返回值的字段。 • 控件值源的类型 • 列表框和组合框的列表中可以填充各类数据,在上述的列表框生成器中,已涉及值,数组和字段3种类型,实际上共有9类.它们均由RowSourceType属性来指定,RowSourceType 属性的可取值如表5-1所示:

  15. 如图所示 [例5-4]设计一个表单,实现 的简易数学用表。 FOR i=1 to 100 n=STR(i,3) This.AddListItem(n,i,1) n=STR(i*i,5) This.AddListItem(n,i,2) n=STR(SQRT(i),7,4) This.AddListItem(n,i,3) n=STR(LOG(i),7,4) This.AddListItem(n,i,4) n=STR(EXP(i),17,4) This.AddListItem(n,i,5) ENDFOR • 原数取1~100。 • 操作步骤如下: • 新建一个表单,向表单添加五个标签控件,一个列表框控件,并设置相关属性。 • 设置列表框控件List1的属性ColumnCount的值为5,说明含有5列;属性ColumnWidth的值为:30,40,50,50,150,确定5列各自的宽度。 • 在控件List1的Init事件中添加如下代码:

  16. 组合框控件 • 格式:Control.ListIndex[=nIndex] • 功能:返回或设置组合框(列表框)列表显示时选定项的顺序号。 • 说明: (1)本属性用顺序号来表示某项已被选定。nIndex则代表要设置的顺序号,可取1到ListCount之间的整数之一。 nIndex的缺省值是0,表示没有选定列表项。对于下拉组合框,当列表中没有与键入值相同的项时就返回0。 (2)本属性设计时不可用,运行时可读写。 • Value属性 • DisplayValue属性 • ListCount属性 • ListIndex属性 • List属性 • Selected属性 • 格式: • control.Selected(nIndex)[=IExpr] • 功能:用于分辨组合框或列表框中某一列表项是否被选中。当选中时Selected属性返回.T.,否则返回.F.。 • 说明: (1)nIndex表示列表项的显示顺序号; (2)IExpr可取.T.或.F.之一,用来设置属性值; (3)本属性设计时不可用,运行时可读写。 • 组合框是列表框和文本框的组合。组合框有两种类型: • 下拉式组合框, Style属性的值是0时 • 下拉式列表框,Style属性的值是2时 • 组合框控件也有生成器,用法与列表框完全相同 • 除了生成器提到的属性外,组合框的常用属性还有: • 功能:返回组合框中选定的项,如果有多列,返回由BoundColumn属性指定的列的内容。 • 功能:返回组合框中选定的项第一列的内容。也可返回用户输入的内容。 • 功能:返回组合框或列表框中列表项的个数。 • 说明:该属性在设计时不可用,运行时为只读属性。即仅可取用属性值,不可进行设置。 • 格式:Control.List(nRow[,nCol] ) • 功能:返回组合框或列表框第nRow行,nCol列的内容。

  17. 微调控件 • 微调控件的常用属性有: • Increment:用户点按向上或向下按钮时每次增大或减小的值。 • KeyboardHighValue:能输入到微调控件文本框中的最大值。 • KeyboardLowValue:能输入到微调控件文本框中的最小值。 • SpinnerHighValue:用户按向上按钮时能达到的最大值。 • SpinnerLowValue:用户按向下按钮时能达到的最小值。 • Value:返回用户设置的值。

  18. [例5-5] 设计新增人事数据的表单 • 要求充分利用新学的知识,设计表单时尽量为用户着想,为用户提供方便。 • 设计步骤如下: • 利用数据环境向表单快速添加控件:用鼠标指向RSB表的字段行,按下鼠标左键拖曳到表单的左上角,释放鼠标则产生如图所示的表单,默认表单不够大,可拖曳表单边框到足够大,就可以看到所有的控件。 • 对于性别字段的输入,只有两种可取值,没有必要让用户输入“男”或“女”,可利用选项按钮组控件,如图5-12所示,由用户单击鼠标就可选定“男”或“女”。所以需将已有的与性别绑定的文本框删除。 • 删除与“出生日期”和“工作日期”绑定的文本框,保留相应的标签,添加两个微调控件、一个组合框控件、一个形状控件和三个标签控件,并调整成第二行的外观。提示:形状控件要置后。在组合框上单击鼠标右键,选择【生成器】,对“列表项”页面设置,表格中的数一直输入到12,其它三个页面不变,最后单击【确定】确认设置。并设置两个微调控件的属性示 • 操作如下:在表单空表处单击鼠标,取消对所有控件的选择,选择与性别绑定的文本框,按Delete键删除。添加一个选项按钮组,设置成如图5-13右上角所示的外观。 • 对于“相片”字段,也需作处理,为美观起见,添加一个形状控件,使其置后,并设置成三维。为给用户提供更方便的输入界面,添加一个命令按钮,将命令按钮的外观设置成如图5-13所示,相片标签下的命令按钮形状,并设置该命令按钮的Click事件的代码为: • 新建一个名为RSBWH的表单,向表单添加数据环境,数据环境中添加RSB.DBF和BMDM.DBF两个表文件。注意:必需删除两表间的关系。并向BMDM表添加一条空记录。 • 对于“部门代码”字段的值要利用BMDM表的内容,删除与“部门代码”绑定的文本框,添加一个组合框控件,在组合框上单击鼠标右键,选择【生成器】,对“列表项”页面设置成如图5-14所示,对“值”页面设置成如图5-15所示,其它两个页面不变,最后单击【确定】确认设置。 • 对于“职称”字段,也需作处理,为给用户提供更方便的输入界面,删除与“职称”绑定的文本框,添加一个组合框控件,在组合框上单击鼠标右键,选择【生成器】,对“列表项”页面设置成如图5-15所示,对“值”页面设置成如图5-19所示,其它两个页面不变,最后单击【确定】确认设置。 • 调整各控件的位置如图5-13所示,添加两个线条控件、两个命令按钮控件,线条的颜色一条设置成深灰、一条设置成白色,两条紧埃着,形成立体效果。 • 添加控件代码: • Init事件代码 • “保存”按钮的Click事件代码 • “取消退出”命令按钮的Click事件代码 • 四个组合框控件的Init事件代码 • 选项按钮组的Click事件的代码 • 与职称绑定组合框控件的LostFocus事件的代码 • 选定输入年月日的所有控件,如图5-17所示。单击“复制”按钮,再单击“粘帖”按钮,这样就有了两个输入日期的控件,再将Spinner1、Spinner2、Spinner3、Spinner4的Value属性分别设置为:1960,1,1949,1作为默认值。 • filename=GETPICT() &&利用getpict()函数打开选择图片的对话框 • APPEND GENERAL 相片 FROM &filename &&将选取的图片放到当前记录的相片字段中 • Thisform.Refresh() &&刷新表单的显示,目的是让刚选的图显示出来

  19. 表格控件 • 表格属性 • ChildOrder:与父表的主关键字相连接的子表的外部关键字。 • ColumnCount:列数。如果ColumnCount设置为-1,表格的列数与RecordSource中的字段数相同。 • LinkMaster:在表格中显示的子记录的父表。 • RecordSource:显示在表格中的数据源。 • RecordSourceType:显示在表格中的数据类型。 • AllowAddNew:该属性为.T.时允许用户向表格中的表添加记录。该属性为.F.(默认值)时,只能用APPEND BLANK或INSERT命令来添加记录。 • 调整表格的行高与列宽 • a. 调整列宽:表格激活后,将鼠标指针置于表格两列标题之间,这时指针变为带有左右双向箭头的竖条,便可左右拖动列线来改变列宽.另一种方法是设置列的Width属性,例如令Thisform.Gridl.Columnl.Width=50 • b. 调整行高:标题栏行和内容行的调整方法略有不同。表格激活后,若调整标题栏高度,可将鼠标指针置于表格标题栏行首按钮的下框线处,当指针变成带有上下双向箭头的横条后,即可上下拖动行线来改变高度。调整内容行高度时,应将鼠标指针置于表格内容第1行行首按钮的下框线处,然后上下拖动行线来改变行高。此时,所有内容行的高度将统一变化。 • 表格的组成 • 在表单窗口添加表格控件 • 表格编辑 • 表格的常用属性 • 用表格控件建立一对多表单 • Visual FoxPro提供了一个强大的工具来显示和操作多行数据,这就是表格。表格是一个容器对象,像表单集能包含多个表单一样,它可以包含多个列。另外,列可以包含表头和控件,并且每一部分都有自己的属性、事件和方法。 • 从数据环境创建 • 利用表格生成器创建 • 表格项选项卡 • 样式选项卡 • 布局选项卡 • 关系选项卡 • 交互式创建 • 修改列标题 • 前已提到,在表格生成器的标题文本框中可以修改列标题。此外还有下面两种方法。 • a. 用代码修改:例如Thisform.Gridl.Column2.Headerl.Caption=”名称”,可将表格中第2列的标题修改为:名称。 • b. 在属性窗口对象列表中按照从容器到对象的次序,找到Headerl对象后,选择该对象作为当前对象,然后修改其Caption属性。 (1)表格(Grid):由一或若干列组成. (2)列(Column):一列可显示表的一个字段,列由列标题和列控件组成。 (3)列标题(例如:Headerl):默认显示字段名,允许修改。 (4)列控件(例如:Textl);一列必须设置一个列控件,该列中的每个单元格都可用此控件来显示字段值。列控件默认为文本框 • 列属性 • ControlSource:指定某表的某字段作为本列的数据源。 • CurrentControl:为列指定控件。 • Spares:取值为.T.(默认值)时,在列表中只有选中的单元格以CurrentControl指定的控件显示,其它单元格仍以文本框显示。取值为.F.时,该列的所有单元格均以CurrentControl指定的控件显示。 • 列的增删 a. 在表格的ColumnCount属性中设置表格的列数,从而改变表格的列数。 b. 打开表格生成器,在表格项选项卡中可增加或减少字段。 c. 要删除列,可在属性窗口中选定某列后按Del健。 • 若要禁止用户在运行时擅自改变表格标题栏的高度,可将表格的AllowHeaderSizing属性设置为.F.;若表格的AllowRowSizing属性为.F.,则禁止改变表格内容行的高度。 • 在数据环境中建立一对多表单的步骤如下: • 从数据环境设计器的父表中把期望的字段拖动到表单里。 • 从数据环境设计器中把相关的子表拖动到表单里。

  20. [例5-6] 设计一个按部门浏览人事表记录的表单。 IF This.Value=1 &&如果用户单击了“上一条”命令按钮 SKIP -1 &&让表指针向前跳一步 ELSE &&如果用户单击了“下一条”命令按钮 SKIP &&让表指针向后跳一步 ENDIF DO CASE CASE RECNO()=1 &&如果表指针指向第一条记录 This.Command1.Enabled=.f. &&设置“上一条”命令按钮为不可用 CASE RECNO()=RECCOUNT() &&如果表指针指向最后一条记录 This.Command2.Enabled=.f. &&设置“下一条”命令按钮为不可用 OTHERWISE &&如果表指针指向中间某条记录 This.Command1.Enabled=.t. &&设置“上一条”命令按钮为可用 This.Command2.Enabled=.t. &&设置“下一条”命令按钮为可用 ENDCASE Thisform.Refresh &&刷新表单的显示 • 设计步骤如下: • 最后以fzbd.scx为文件名保存表单。然后执行表单,当用户单击下一条或上一条时,对于文本框中显示的一个父表的部门名称,在子表中将列出所有属于该部门的职工记录信息,如图5-21所示。这是由于我们在两个表之间建立了一对多的关系。 • 在表单中添加一个命令按钮组控件,并设置相应属性使其外观如图5-20所示,注意需将“上一条”命令按钮的Enabled属性设置为.F.。设置命令按钮组的Click事件的代码为: • 建立一个新表单,为该表单添加数据环境,在数据环境中添加表BMDM和表RSB,将表BMDM的“部门名称”字段从数据环境中拖到表单中,在表单中将出现一个文本框控件,该控件的ControlSource属性将自动设置为BMDM.部门名称。在RSB的标题处按下鼠标拖到表单中,将出现一个表格控件,该控件的RecordSourceType属性自动被设置为1-别名,RecordSource属性自动被设置为:RSB。

  21. 页框控件 • 页框是一个包含页面的容器对象,用户可在页框中定义多个页面,以生成带选项卡的对话框。 • 在表单中添加页框控件的步骤为: • 在表单控制工具栏中单页框控件按钮; • 移动鼠标指针到表单中,单击并拖拽到合适的大小; • 页框的常用属性有: • PageCount:设置页框中页面的个数。 • 页面的常用属性有: • Caption:设置页面的名称。 • 在页面中加入控件的步骤如下: • 选中要加入控件的页面; • 在表单控制工具栏中单击所需控件,移动鼠标到所选页面中,单击并拖拽到合适大小。 • 在页框中选择不同页面的步骤如下: • 在页框中单击鼠标右键,选择编辑,则页框呈现出选中状态,边框变粗; • 单击要选择的页面标签。

  22. 如图1 图2 [例5-7] 建立一个 及 所示含有两个页面的增加及浏览人事数据的表单。 • 设计步骤如下: • 创建一个新表单,向新表单中添加一个页框控件,向表单添加数据环境,数据环保中添加RSB.DBF和BMDM.DBF两个表文件。注意:必需删除两表间的关系。 • 打开RSBWH表单,选中所有控件,单击常用工具栏的【复制】按钮,在页框控件上单击鼠标右键,选择【编辑】菜单项,单击常用工具栏的【粘贴】按钮,并调整控件到合适的位置,如图1所示。并将RSBWH表单的Init事件的代码复制到当前表单的Init事件中;将RSBWH表单数据环境的Opentables和Closetables事件的代码复制到当前表单的相应事件中。 • 将数据环境窗口显示出来,单击页框的第二个页面。拖拽RSB表(鼠标指针指向RSB的标题行,然后单击并拖拽)到页框的第二个页面上,并调整表格到合适的位置,如图2所示。 • 添加Page1的Click事件的代码为: • GO BOTTOM &&确保回到页面1时表指针指向最后一条记录。 • 以ykbd为文件名保存该表单,然后执行表单,将出现如图1所示的表单,在表单中单击第二个页面,将显示一个表格,如图2所示。表格中列出表的记录。

  23. 超级连接 • 超级链接对象含有一个NavigateTo方法程序,它允许用户指定一个网址,执行该方法程序时Visual FoxPro就会启动因特网浏览器,并根据指定的网址进入网络的站点来显示网页。

  24. [例5-8] 在表单上创建一个命令按钮,要求表单运行时单击该命令按钮即可显示搜狐网站的主页。 如图所示 • 在表单上添加超级链接控件和命令按钮控件各一个。 • Commandl的Caption属性设置为:搜狐 • Commandl的Click事件代码编写如下: • Thisform.Hyperlinkl.NavigateTo(“http://www.sohu.com”) &&Hyperlinkl为超级链接控件的Name,括号内为搜狐网站的网址 • 保存表单并运行,表单名称为“cjlj”。

  25. ActiveX控件 • 基本概念 • 向表单添加控件或对象 • “新建”选项按钮 • “由文件创建”选项按钮 • “创建控件”选项按钮 • 向表单控件工具栏添加AttiveX控件 • 添加步骤 • 显示方法 • 删除方法 • 选定“新建”选项表示将在表单上新建一个对象,这种对象是某种文件类型的文档。在插入对象对话框的对象类型列表中包含文档,图象、声音等多种文件类型,用户选定其中一项并按确定按钮后,Visual FoxPro将自动打开这种类型的应用程序,供用户输入文档的内容。 • 对话框中有一个【显示为图标】复选框,可用来确定新建的对象以图标显示,还是直接显示文档的内容。若选定该复选框,该文档在表单上显示成一个图标,表单运行时若双击图标,Visual FoxPro会调用相应的应用程序来打开文档,清除该复选框,表示在表单上直接显示文档内容。 • OLE对象和ActiveX控件添加到表单控件工具栏后,还须进行表单控件工具栏显示转换才能显示出来。 • 转换方法如下:在表单控件工具栏中选定查看类按钮,并在随后弹出的菜单中选定【ActiveX控件】命令,表单控件工具栏就会自动转换成显示OLE对象和ActiveX控件按钮的工具栏,此后用户就可使用这些按钮在表单上创建对象。图中显示了新增的Microsoft Word文档和Microsoft公式3.0两个按钮。 • 若要恢复到原状态,仍须选定查看类按钮,并在弹出菜单中选定【常用】命令即可。 • 选定【工具】【选项】命令,在如图5-26所示的“选项对话框”的【控件】选项卡中选定【ActiveX控件】选项按钮,在列表中选定所要添加的若干OLE对象和ActiveX控件复选框(例如选定Microsoft Word文档和Microsoft 公式3.0),单击“设置为默认值”按钮,单击【确定】按钮退出选项对话框。 • 注意,在图5-26中,【可插入对象】和【控件】两个复选框默认为选定,此时在选定列表框中同时显示可供插入的对象与ActiveX控件。若清除了某一复选框,列表中便将去掉相应部分的选项。 • ActiveX原来是微软公司提出的一组技术标准,其中也包括控件的技术标准。所谓ActiveX控件,就是指符合ActiveX标准的控件,其数量现已超过了1000种,例如在Windows的SYSTEM文件夹中含有大量带.OCX扩展名的文件,就都属于ActiveX控件。在本章前几节介绍的控件,仅是ActiveX控件中常见于Visual FoxPro界面的一小部分。 • 为了使Visual FoxPro能够在需要时利用更多的ActiveX控件,在“表单控件”工具栏中设置了一个英文名为Olecontrol的ActiveX控件按钮“”。 • 要删除表单控件工具栏中的OLE对象按钮或ActiveX控件按钮,可通过【工具】菜单的【选项】命令来打开“选项对话框”,并在其【控件】选项卡的列表中清除有关复选框便可。 • 选定【创建控件】选项按钮表示可由用户指定一个ActiveX控件并放置在表单上。选定该选项按钮后,插入对象对话框中将显示【添加控件】按钮,单击该按钮,弹出浏览对话框,指定Visual FoxPro的主目录的文件FPOLE.OCX,然后选择【打开】,“对象类型”列表中将出现大量ActiveX控件选项,这些都是表单控件工具栏以外可供用户选用的控件,用户选定一项后并按确定按钮,指定的ActiveX控件就会出现在表单上。 • 选定【由文件创建】选项按钮表示用户须指定一个存在的文档,并作为对象放置在表单上。 • 选定该选项按钮后,插入对象对话框中将显示一个浏览按钮和一个文本框,用户可通过浏览按钮选一文件,或在文本框中直接输入路径及文件名。按确定按钮后表单窗口内即产生一个文档对象,该文档是以图标显示,还是文件内容显示,可由显示为图标复选框指定。 • 从“表单控件”工具栏中选定ActiveX控件按钮“”,在表单中单击鼠标,屏幕上将弹出一个如图5-25所示的“插入对象”对话框。该控件的功能主要由对话框中的3个选项按钮决定,【新建】与【由文件创建】选项按钮用于添加OLE对象,【创建控件】选项按钮则用于在表单中添加一个ActiveX控件。

  26. ActiveX绑定控件 • 显示通用型字段中的OLE对象时,应注意以下三点: • (1)在表单窗口所创建的OLE绑定型控件显示为一个含对角线的方框,用户可按需要将它拖至所期望的大小。创建的第1个OLE绑定型控件的Name属性默认为Oleboundcontrol1。 • (2)必须将控件与通用型字段绑定。就是说,应该在控件的ControlSource属性中设置通用型字段名。 • (3)表单运行时,仅当记录指针指向含有数据的通用型字段的记录时;OLE绑定型控件区域内才会显示数据。 • OLE绑定型控制可以用来显示通用字段。建立一个OLE绑定对象的步骤如下: • 在表单控制工具栏中,选择OLE绑定型控制按钮; • 移动鼠标到表单要插入控件的位置,单击鼠标;然后调整其大小; • 设置对象的ControlSource属性将OLE对象与通用字段连接起来。

  27. 表单管理 • 给表单传递参数的步骤如下: • 在表单上建立属性用来接受参数 • 例如ItemN和IremQ. • 在表单的Init事件代码中,写入接受参数语句: • PARAMETE cStr,nNo • 在表单的Init事件代码中,把参数赋给属性,如下列: • This.ItemN=cStr • This.ItemQ=nNo • 当运行表单时,在DO FORM命令中包含WITH从句。 • 如:DO FORM myform1 WITH "Ball",34 • 从表单中返回结果的步骤为: • 设置表单的WindowType属性为1,使表单具有模块化的性质。 • 在表单的Unload事件代码中,包含RETURN命令和返回值。 • 在运行表单的程序或方法的DO FORM命令中包含关键字TO。 • 如:DO FORM myform2 TO No1 • 表单参数的传递 • 表单结果的返回 • 操作表单控件 • 命名表单对象 • 操作表单对象 • 关闭一个活动的表单 • 如果在Command 窗口用DO FORM命令来运行表单,则表单对象变量是一个公共变量。可以用变量名来访问表单。 • 在程序中用DO FORM命令运行一个表单,在程序或过程结束之后,对象就消失了,但是表单仍然是可见的。 • 在DO FORM命令中使用NAME子句可以命名表单对象。 • 例如,以下两条语句运行同一个表单,但是建立了两个不同的表单对象变量: • DO FORM myform3 NAME stu1 • DO FORM myform4 NAME stu2 • 在命令窗口和程序中可用: • 表单名.Release &&表单名是由DO FORM … NAME <表单名>命令指定的表单名。 • 或 表单文件名.Release 来关闭并释放表单。

  28. [例5-9] 在[例5-7]的表单中增加一个“选项”按钮,用来设置输入表单各项的默认值。 *将原系统的默认值保存在一组变量里 d1=2 d2=This.Parent.Optiongroup1.Value n1=This.Parent.Spinner1.Value r1=This.Parent.Spinner2.Value y1=This.Parent.Combo2.Value n2=This.Parent.Spinner3.Value r2=This.Parent.Spinner4.Value y2=This.Parent.Combo3.Value DO FORM cscdzb WITH n1,n2,a TO m &&调用子表单,传递参量n1、n2、a,返回值m IF m &&如果用户在“选项”对话框单击【确定】退出 *清除原系统默认的职称选项 FOR i=This.Parent.Combo4.ListCount TO 1 STEP -1 This.Parent.Combo4.RemoveListItem(i) ENDFOR *添加用户设置的职称选项 FOR i=1 TO ALEN(a,0) IF TYPE("a[i]")<>"C" EXIT ENDIF This.Parent.Combo4.AddListItem(a[i],i) ENDFOR *将用户设置的默认值存入表单 Thisform.d1=d1 Thisform.d2=d2 Thisform.n1=n1 Thisform.r1=r1 Thisform.y1=y1 Thisform.n2=n2 Thisform.r2=r2 Thisform.y2=y2 Thisform.szcs() &&调用自定义方法设置用户定义的默认值 ENDIF *按用户设置,设置默认值 IF This.d1=1 This.chk婚否.Value=1 ELSE This.chk婚否.Value=0 ENDIF This.Optiongroup1.Value=This.d2 This.Spinner1.Value=This.n1 This.Spinner2.Value=This.r1 This.Combo2.Value=This.y1 This.Spinner3.Value=This.n2 This.Spinner4.Value=This.r2 This.Combo3.Value=This.y2 PARAMETE n1,n2,zc &&接收参数说明语句 *将系统默认值带到选项设置窗口 This.Spinner1.Value=n1 This.Spinner3.Value=n2 FOR i=1 TO ALEN(zc,0) IF TYPE("zc[i]")<>"C" EXIT ENDIF This.List1.AddListItem(zc[i],i) &&将系统默认的职称选项添加到列表框 ENDFOR IF nKeyCOde=13 &&如果用户按了回车键 *判断输入项在列表中是否存在 t=.F. FOR i=1 TO This.Parent.List1.ListCount IF ALLTRIM(This.Value)==ALLTRIM(This.Parent.List1.List(i)) t=.T. &&列表中存在该项 EXIT ENDIF ENDFOR Thisform.t=.T. &&表明用户单击【确定】退出该对话框 *将用户设置的默认值保存在主从型变量中,从而带回主程序 d1=This.Parent.Optiongroup2.Value d2=This.Parent.Optiongroup1.Value n1=This.Parent.Spinner1.Value r1=This.Parent.Spinner2.Value y1=This.Parent.Combo2.Value n2=This.Parent.Spinner3.Value r2=This.Parent.Spinner4.Value y2=This.Parent.Combo1.Value *清空数组a原有的数据 FOR i=1 TO 100 a(i)=.F. ENDFOR *将用户设置的职称默认值保存在a数组中 FOR i=1 TO This.Parent.List1.ListCount a(i)=This.Parent.List1.List(i) ENDFOR Thisform.Release IF !t &&如果列表中不存在该项 This.Parent.List1.AddListItem(This.Value) &&将该项添加到列表中 ELSE MESSAGEBOX("该项已存在!请重新输入!") &&否则输出"该项已存在!请重新输入!" ENDIF This.Value="" &&清空文本框 Thisform.Refresh() ENDIF • 操作步骤如下: • 打开rsbwh表单,另存为cscdbd表单。在表单中添加一个“选项”命令按钮。并在该控件的Click事件中添加下列代码: • 属性设置:除了设置表单属性使外观如图所示外,还需设置列表框的属性MultiSelect的值为:.T.-真。并设置表单的属性WindosType的值为:1,这一点非常重要。定义一个表单属性,取名为:t 。 • 并在保存命令按钮的Click事件中增加一行代码: • Thisform.szcs() &&调用自定义方法设置用户定义的默认值 • 放在原代码倒数第一行的前面。 • 代码设置: • 设置表单Init事件的代码为: • 设置表单Unload事件的代码为: • 设置文本框的KeyPress事件的代码为: • 设置列表框的KeyPress事件的代码为: • 设置【确定】命令按钮的Click事件的代码为: • 设置“取消”命令按钮的Click事件的代码为: IF nKeyCOde=7 &&如果用户按了Del键 FOR i=1 to This.ListCount IF This.Selected(i) This.RemoveListItem(i) &&删除所有选中的项 ENDIF ENDFOR ENDIF • Thisform.t=.F. &&用户单击取消退出该对话框 • Thisform.Release DIME a(100) *取出系统默认的职称 FOR i=1 TO This.Parent.Combo4.ListCount a(i)=This.Parent.Combo4.List(i) ENDFOR • 定义上面代码用到的5个表单属性,和一个用户自定义方法szcs( )(请参阅6.5节),并设置属性值为:Thisform.d1:0;Thisform.d2:1;Thisform.n1:1960;Thisform.r1:1949;Thisform.y1:1;Thisform.n2:1;Thisform.r2:1;Thisform.y2:1。并设置方法szcs( )的代码为: RETURN Thisform.t &&表单的返回值 • 新建一个名为cscdzb的表单,并添加五个标签控件,一个文本框控件,两个单选框控件,一个列表框控件,两个命令按钮控件。并将cscdbd表单的输入日期的控件的组合复制过来,复制两次,设置成图5-25所示的外观。

  29. 5.3 多表单应用程序 5.3.1 MDI文档界面 • 多文档界面与单文档界面的概念 • 多文档界面(Multiple-Document Interface,简称MDI)是指应用程序主窗口中能包含多个应用程序窗口。 • 单文档界面(Single-Document Interface,简称SDI)是指应用程序窗口只允许显示和操作一个文档,此文档直接显示在应用程序窗口内。 • MDI文档界面的设计 • 表单类型:顶层表单、子表单和浮动表单 • 顶层表单:是一个没有父表单的独立表单。 • 子表单:用于创建MDI应用程序的文档窗口,它包含在另一个主窗口中。 • 浮动表单:是由子表单变化而来的,它属于父表单的一部分,但并不是包含在父表单中。

  30. 表单类型

  31. 表单类型设定 1)顶层表单设定: 在“表单设计器”中将表单的 ShowWindow 属性设置为“2 - 作为顶层表单”。 2)子表单设定: 将表单的 ShowWindow 属性设置为下列值之一: 0 - 在屏幕中 (默认)。 1 - 在顶层表单中。 3)浮动表单设定: 先将表单的 ShowWindow 属性设为0或1(即子表单),然后设置Desktop属性值为.T.。

  32. MDI应用程序的建立 建立MDI应用程序的步骤: 1)建立顶层表单; 2)建立相关的子表单; 3)在顶层表单中调用子表单。 • MDI窗口之间的参数传递 命令格式: DO FORM <子表单名> [WITH <实参表>] [TO <内存变量> ] 功能:主表单与子表单相互传递数据。 说明: (1)WITH <实参表>子句由主表单向子表单传递数据。 (2)TO <内存变量>子句从子表单返回的值存入到<内存变量>中。

  33. (3)在子表单的Init事件代码中应该有如下代码来接受主表单中WITH <实参表>的数据: PARAMETERS <形参表> <实参表>和<形参表>中的参数用逗号分隔,<形参表>中的参数数目不能少于<实参表>中的参数数目。多余的参数变量赋值为.F.。 主表单带参数调用子表单,要求子表单WindowtType属性值要设为1-模式表单。 [例5-10]创建如下所示的顶层表单以及子表单,要求用户从子表单中输入的圆半径值,在主表单中求出相应的圆周长和圆面积。

  34. 主表单向子表单传递数据 设计步骤: • 设计主表单(circle.scx) 新建表单,进入表单设计器,增加4个标签,3个文本框和2个命令按钮。 编写程序代码: 编写【输入半径】按钮Command1的Click事件代码: bj=THISFORM.Text3.Value DO FORM radius WITH bj TO r THISFORM.Text1.Value=2*pi()*r THISFORM.Text2.Value=pi()*r^2 THISFORM.Text3.Value=r • 设计子表单(radius.scx) 新建表单,进入表单设计器,增加1个标签,1个文本框和1个命令按钮。 用户定义属性:R,初始值为0。 编写程序代码: radius.scx表单的Init事件代码: PARAMETERS bj

  35. 带参返回调用 radius.scx表单的Activate事件代码: THISFORM.Text1.Setfocus radius.scx表单的Unload事件代码: RETURN THISFORM.R 编写【确定】按钮Command1的Click事件代码: THISFORM.R=THISFORM.Text1.Value THISFORM.Release

  36. 5.3.2 表单集 表单集(Formset)是一个容器,其中可包含多个表单,并将这些表单作为一个组进行操作。 表单集具有以下优点: (1)可同时显示和隐藏表单集中的表单。 (2)能可视化地调整各个表单的相对位置。 (3)由于表单集及其所有的表单都存储在同一个.SCX文件中,因而共享一个数据环境,数据表关联后,在一个表单中的父表移动记录指针,在另一个表单中的子表的记录指针也相应移动。 (4)运行表单集时,将加载表单集中所有表单和表单的所有对象。

  37. 表单集的建立及相关操作 打开“表单设计器”,从【表单】菜单中,选择【创建表单集】命令,即可建立一个新的表单集Formset1,它在“属性”窗口的对象列表中。 • 添加新表单:主菜单的【表单】菜单,选择【添加新表单】命令 • 删除表单:首先选择要删除的表单,然后从主菜单的【表单】菜单,选择【移除表单】命令,删除选定的表单。 • 删除表单集:如果表单集中只剩一个表单,则可删除表单集。 • 表单集的释放:命令RELEASE THISFORMSET或设置为随最后一个表单的释放而自动释放,此时表单集的AutoRelease属性为.T.。

  38. [例5-11]利用表单集建立如下所示增资情况查询表单zzcx.scx。[例5-11]利用表单集建立如下所示增资情况查询表单zzcx.scx。

  39. 步骤1:新建表单集zzcx.scx 步骤2:向表单集添加新表单 步骤3:设置数据环境 步骤4:设置Form1和Form2表单 (1)设置Form1:将数据环境中rsb.dbf窗口的标题栏拖放到Form1表单中,产生一个人事表表格。在表格的上方添加1个标签和1个命令按钮。 编写【结束】按钮Command1的Click事件代码: RELEASE THISFORMSET (2)设置Form2:将数据环境中zz.dbf窗口的标题栏拖放到Form1表单中,产生一个增加工资的表格。

  40. 5.4 类 5.4.1 基本概念 • 类的基本概念 • 类(class) :类是对一组具有相同属性和方法的对象的抽象,是对象的原型。 • 对象(object):是将数据和对该数据的所有必要操作的代码封装起来的程序模块,即对象是包含属性(数据)和行为(方法)的逻辑实体。 • 基类(base class) :基类是VFP系统定义的类,它是用户创建新类的基础。

  41. 父类(parent class)和子类(subclass):以某个类的定义为起点派生出来的新类称为子类,前者称为父类。子类将继承父类的全部特征。 • 用户定义类(user-defined class) : 是指由基类派生出来的子类,VFP还允许从用户定义类再派生出子类,因此用户定义类可以是子类,也可作为父类。 • 容器类(container classes)和控件类(control clases): • 类库(class library):类库是用来存储以可视方式设计的类的文件,其文件扩展名为.VCX。

  42. 类的特征 • 类的继承性:是指用户可以通过已经存在的类来构造出新类,新类继承该类的所有属性和事件,并加以扩充。 • 类的封装性 :封装就是指将对象的方法程序和属性代码包装在一起。类的封装性指类的内部信息对于用户是屏蔽的,内部的复杂性可以被隐藏起来,仅保留出封装的外部接口。 • 类的多态性:所谓类的多态性,指在类的层次结构中,各层中的对象对同名方法程序或属性的调用是不同的,进而产生完全不同的行为。

  43. 5.4.2 用户定义类 用户也可以在已有基类的基础上,创建自己的子类——用户定义类。 • 建立用户定义类 创建步骤: 步骤一:打开“新建类”对话框: 菜单【文件】→【新建】命令→在“新建”对话框中,选择【类】,然后单击【新建文件】按钮。 步骤二:在“新建类”对话框中设定新建类的类名、父类和类库: 步骤三:在“类设计器”窗口中进行设置操作:“类设计器”窗口与“表单设计器”窗口相同,在“属性”窗口中可以查看和编辑类的属性,在“代码”编辑窗口中可以编写各种事件和方法程序的代码。

  44. 指定新类从哪个类派生出来的。可以从列表框中选择系统给出的基类。 输入要创建的类名 用于输入新类库名或指定已有库类的名字。

  45. [例5-12]新建一个带“退出”按钮的用户定义类,它继承命令按钮(CommandButton)基类,类名为“退出”,存于新类库名mylib.vcx中。 步骤一:打开“新建类”对话框:在命令窗口中使用命令:CREATE CLASS 步骤二:设置“新建类”对话框:在“类名”文本框中输入退出,在“派生于”下拉列表中选择CommandButton作为基类,在“存储于”文本框中输入mylib.vcx。 步骤三:设置“退出”类属性与事件:在“类设计器”中,设置退出类的Caption属性值由“Command1”改为“退出”,然后再双击这个“退出”按钮,打开代码输入窗口,为Click事件编写如下代码: THISFORM.Release

More Related