VFP6表单设计课件_第1页
VFP6表单设计课件_第2页
VFP6表单设计课件_第3页
VFP6表单设计课件_第4页
VFP6表单设计课件_第5页
已阅读5页,还剩147页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2024/8/151

VFP6表单设计

2024/8/1527.1设计表单

7.1.1设置数据环境7.1.2创建单文档和多文档界面7.1.3用表单集扩充表单返回退出2024/8/1537.1设计表单

表单又称为界面或窗体,是VFP提供的一种功能强大的界面。各种对话框和窗口都是表单的不同表现形式。它可以使用户在简单明了的界面中查看数据或将数据记录输入到表中。在表单设计器中可以处理下列内容:■表单中不同类型的对象■与表单相关联的数据■顶层表单或子表单■能一起操作的多个表单■基于自定义模板的表单表单和表单集是拥有自己的属性、事件和方法程序的对象,在表单设计器中可以设置这些属性、事件和方法程序。表单集包含了一个或多个表单,可以将它们作为一个整体来操作。例如,如果一个表单集中有四个表单,可以在运行时用一个命令来显示或隐藏它们。可以通过表单向导、表单设计器和快速表单来创建表单。可以2024/8/154用如下的三种方法之一新建一个表单:■在“项目管理器”中选定“表单”,并选择【新建】按钮。■在【文件】菜单中选择【新建】命令,再选定“表单”,再选择【新建文件】按钮。■使用CREATEFORM命令。通过项目管理器创建表单示例1、选择“文档”选项卡2、选择“表单”3、单击【新建】4、进入新建表单程序,弹出“新建表单”对话框单击“表单设计器”窗口新表单在新表单(Form1)上可以可视化地添加控件并进行属性、方法程序设计。2024/8/1557.1.1设置数据环境

每一个表单或表单集都包括一个数据环境(DataEnvironment)。数据环境是一个对象,它包含与表单相互作用的表或视图,以及表单所要求的表之间的关系。可以在“数据环境设计器”中直观地设置数据环境,并与表单一起保存。在表单运行时,数据环境可以自动打开、关闭表或视图。而且,通过设置“属性”窗口中ControlSource(指定与对象对立联系的数据源)属性设置框,在这个属性框中列出了数据环境中的所有字段,数据环境将帮助设置控件用的ControlSource属性。1、常用数据环境属性

2024/8/156单击打开图片2、向数据环境设计器中添加表或视图向数据环境设计器中添加表或视图时,可以看到属于表或视图的字段或索引。若要向数据环境中添加表或视图,可以按如下步骤来进行:(1)打开“数据环境设计器”,从“数据环境”菜单中选择“添加”1、在表单上右击,弹出表单的快捷菜单2、在快捷菜单中单击“数据环境”菜单项,打开“数据环境设计器”3、添加表或视图的方法与建立查询时添加表或视图相同4、在此框中选择Student后单击【添加】2024/8/157

在关闭了“添加表或视图”对话框后,若还想向“数据环境”中添加表或视图,可采用以下方法之一:

■在“数据环境设计器”中右击,打开数据环境的快捷菜单,从中选择“添加”菜单项,将“添加表或视图”对话框再次打开,添加方法与上述相同。

■在“数据不境设计器”处于激活状态时,系统菜单上会有【数据环境】菜单,可以单击【数据环境】|【添加】将“添加表或视图”对话框再次打开。

■将要添加的表或视图从打开的项目或“数据库设计器”拖放到“数据环境设计器”中。若已将“数据环境设计器”关闭了,要添加表或视图时,除了用前文所介绍的在表单上右击打开表单的快捷菜单,用快捷菜单操作以外,也可以在系统菜单上单击【显示】|【数据环境】,将“数据环境设计器”打开,打开了“数据环境设计器”后的添加方法与上相同。当“数据环境设计器”处于活动状态时,“属性”窗口会显示与数2024/8/158单击打开动画据环境相关的对象及属性。在“属性”窗口的“对象”框中,数据环境的每个表或视图,表之间的每个关系,以及数据环境本身均是各自独立的对象。要打开“属性”窗口,可以在表单或“数据环境设计器”中右击,在快捷菜单上选择【属性】菜单项在“数据环境设计器”中右击,打开快捷菜单。单击【属性】菜单项打开“属性”窗口。选项卡属性或方法程序列表属性值或方法程序属性及方法程序功能说明单击对象选择框2024/8/1593、从数据环境设计器中移去表当将表从数据环境中移去时,与这个表有关的所有的关系也随之移去。若要将表和视图从数据环境设计器中移去,可以:(1)在“数据环境设计器”中选择要移去的表或视图。(2)在“数据环境”快捷菜单中选择【移去】命令。在“数据环境设计器”中选择要移去的表或视图。在选定表或视图上右击,打开快捷菜单。单击【移去】2024/8/15104、在数据环境设计器中设置关系如果添加进数据环境设计器的表具有在数据库中设置的永久关系,这些关系将自动地加到数据环境中。如果表中没有永久的关系,可以在数据环境设计器中设置这些关系。要在数据环境设计器中设置这些关系,可以将字段从主表拖到相关表中的相匹配的索引标识上。也可以将字段从主表拖到相关表中的字段上。如果和主表中的字段对应的相关表中没有索引标识,系统将提示是否创建索引标识。1、先向表单的“数据环境设计器”添加两个表,如图按“学号”字段设置Student表与Grade表的一对多关系:在“数据环境设计器”中的Student表中选择“学号”字段并将其拖到Grade表的“学号”字段上。右击表间的关系连接线打开快捷菜单2024/8/1511在快捷菜单中单击“属性”,打开属性窗口:在属性选择列表中选择OneToMany单击“属性选择框”弹出属性值选择.T.-真表达式生成器按钮取消按钮确定按钮属性选择框将两表设置为一对多关系父表别名如果在建立关系前Grade表没有按关联字段(学号)建立索引,则在将“学号”从Student表中拖到Grade表时将弹出对话框:单击【确定】时系统将先按“学号”为Grade表建立索引,然后才建立两表间的关系。2024/8/15125、在数据环境设计器中编辑关系在数据环境设计器中设置了一个关系后,在表之间将有一条连线指出这个关系。若要编辑关系的属性,可在“属性”窗口中从属性列表框选择要编辑的关系。关系的属性对应于SETRELATION和SETSKIP命令中的子句和关键字。RelationalExpr(指定基于父表中的字段而又与子表中的索引相关的表达式)属性的默认设置为主表中主关键字字段的名称。如果相关表是以表达式作为索引的,就必须将RelationalExpr属性设置为这个表达式。例如,如果相关表以UPPER(cust_id)作为索引,就必须将RelationalExpr属性设置为UPPER(cust_id)。如果关系不是一对多关系,必须将OneTOMany属性(指定是否只有在子表中遍历了所有相关记录之后才移动父表记录的记录指针)设置为“假”(.F.)。这对应于使用SETRELATION命令时不发出SETSKIP命令。将关系的OneToMany属性设置为“真”(.T.),相当于发出SETSKIP命令。当浏览父表时,在记录指针浏览完子表中所有的相关记录之前,记录指针一直停留在同一父记录上。

注意:如果在表单或表单集中想设置一对多关系,必须将OneToMany属性设置为“真”(.T.),甚至在数据库中已经建立了永久一对多关系时也必须如此。返回2024/8/15137.1.2创建单文档和多文档界面

VFP允许创建两种类型的应用程序:■多文档界面(MDI)各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口顶端。VFP基本上是一个MDI应用程序,带有包含于VFP主窗口中的命令窗口、编辑窗口和设计器窗口。■单文档界面(SDI)应用程序由一个或多个独立窗口组成,这些窗口均在Windows桌面上单独显示。MicrosoftExchange即是一个SDI应用程序的例子,在该软件中打开的每条消息均显示在自己独立的窗口中。由单个窗口组成的应用程序通常是一个SDI应用程序,但也有一些应用程序综合了SDI和MDI的特性。例如,VFP将调试器显示为一个SDI应用程序,而它本身又包含了自己的MDI窗口。为了支持这两种类型的界面,VFP允许创建以下几种类型的表单:■子表单:包含在另一个窗口中,用于创建MDI应用程序的表2024/8/1514表单。子表单不可移至父表单(主表单)边界之外,当其最小化时将显示在父表单的底部。若父表单最小化,则子表单也一同最小化。■浮动表单:属于父表单(主表单)的一部分,但并不是包含在父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能在父窗口后台移动。若将浮动表单最小化时,它将显示在桌面的底部。若父表单最小化,则浮动表单也一同最小化。浮动表单也可用于创建MDI应用程序。■顶层表单:没有父表单的独立表单,用于创建一个SDI应用程序,或用作MDI应用程序中其他子表单的父表单。顶层表单与其他Windows应用程序同级,可出现在其前台或后台,并且显示在Windows任务栏中。1、指定表单类型创建各种类型表单的方法大体相同,但需设置特定属性以指出表单应该如何工作。如果创建的是子表单,则不仅需要指定它应在另外一个表单中显示,而且还需指定是否是MDI类的子表单,2024/8/1515即指出表单最大化时是如何工作的。如果子表单是MDI类的,它会包含在父表单中,并共享父表单的标题栏、标题、菜单以及工具栏。非MDI类的子表单最大化时将占据父表单的全部用户区域,但仍保留它本身的标题和标题栏。若要建立一个子表单,可以:■用“表单设计器”创建或编辑表单。■可将表单的ShowWindow属性设置为下列值之一:●0-在屏幕中:子表单的父表单将为VFP的主窗口。●1-在顶层表单中。当子窗口显示时,子表单的父表单是活动的顶层表单。如果希望子窗口出现在顶层表单窗口内,而不是出现在VFP主窗口内时。可选用该项设置。2024/8/1516■如果希望子表单最大化时与父表单组合成一体,可设置表单的MDIForm属性(指定表单是否为MDI窗口)为“真”(.T.);如果希望子表单最大化时仍保留为一独立的窗口,可设置表单的MDIForm属性为“假”(.F.)。浮动表单是由子表单变化而来。若要指定为浮动表单,可以:■用“表单设计器”创建或编辑表单。■可将表单的ShowWindow属性设置为以下值之一:●0-在屏幕中。浮动表单的父表单将出现在VFP主窗口。●1-在顶层表单中。当浮动窗口显示时,浮动表单的父表单将是活动的顶层表单。■将表单的DeskTop属性(指定表单是否包含在VFP主窗口中)设置为“真”(.T.)。若要指定顶层表单,可以:■用“表单设计器”创建或编辑表单。■将表单的ShowWindow属性设置为“2-作为顶层表单”。2024/8/15172、显示位于顶层表单中的子表单如果所创建的子表单中的ShowWindow属性设置为“1-在顶层表单中”,则不需直接指定一顶层表单作为子表单的父表单。而是在子窗口出现时,VFP指派成为该子表单的父表单。若要显示位于顶层表单中的子表单,可以:■创建顶层表单。■在顶层表单的事件代码中包含DOFORM命令,指定要显示的子表单的名称。例如,在顶层表单中建立一个按钮,然后在按钮的Click事件代码中包含如下的命令,如图所示:注意:在显示子表单时,顶层表单必须是可视的、活动的。因此,不能使用顶层表单的Init事件来显示子表单,因为此时顶层表单还未激活。■激活顶层表单,如有必要,触发用以显示表单的事件。2024/8/15183、隐藏VFP主窗口在运行顶层表单时,可能不希望VFP主窗口是可视的。使用应用程序对象的Visible属性(指定对象是可见还是隐藏)按要求隐藏或显示VFP主窗口。若要隐藏VFP主窗口,可以:■在表单的Init事件中,包含下列代码行:Appliction.Visible=.F.■在表单的Destroy事件中,包含下列代码行:Appliction.Visible=.T.在某些方法程序或事件中,可使用THISFORM.Release命令关闭表单。注意:也可以在配置文件中包含以下行,用以隐藏VFP主窗口:SCREEN=OFF4、在顶层表单中添加菜单若要在顶层表单中添加菜单,可以:■创建顶层表单的菜单。返回2024/8/1519■将表单的ShowWindow属性设置为“2-作为顶层表单”。■在表单的Init事件中,运行菜单程序并传递两个参数:Domenuname.mprWITHoForm,LAutoRename其中,oForm是表单的对象引用。在表单的Init事件中,THIS作为第一个参数进行传递。LAutoRename指定了是否为菜单取一个新的唯一的名字。如果计划运行表单的多个实例,则将.T.传递给LAutoRename。例如,可以使用下列代码调用名为mySDImenu的菜单:DOmySDImenu.mprWITHTHIS,.T.7.1.3用表单集扩充表单

可以将多个表单包含在一个表单集中,作为一组处理。表单集有以下优点:■可同时显示或隐藏表单集中的全部表单。■可以可视的调整多个表单以控制它们的相对位置。■因为表单集中所有表单都是在单个.SCX文件中用单独的数据2024/8/1520环境定义的,可自动地同步改变多个表单中的记录指针。如果在一个表单的父表中改变记录指针,另一个表单中子表的记录指针则被更新和显示。注意:运行表单集时,将加载表单集所有表单和表单的所有对象。加载带着很多控件的多个表单会花几秒钟的时间。1、创建表单集表单集是一个包含有一个或多个表单的父层次的容器。可在“表单设计器”中创建表单集,若要创建表单集,可从“表单”菜单中,选择“创建表单集”选项。如果不需要将多个表单处理为表单组,则不必创建表单集。创建表单集以后,则可向其中添加表单。2、添加和删除表单创建了表单集以后,可添加新表单或删除表单。若要向表单集中添加附加的表单,可从“表单”菜单中选择“添加新表单”。若要从表单集中删除表单,可以:■在“表单设计器”“属性”窗口的对象列表框中,选择要删除的2024/8/1521表单。■从“表单”菜单中选择“移除表单”。如果表单集中只有一个表单,可删除表单集而只剩下表单。若要删除表单集,可从“表单”菜单中选择“移除表单集”。表单以表的格式存储在.SCX后缀的文件中。创建表单时,.SCX表包含了一个表单的记录,一个数据环境的记录,和两个内部使用记录。为每个添加到表单或数据环境中的对象添加一个记录。如果创建了表单集,则为表单集及每个新表单添加一个附加的记录。每个表单的父容器为表单集,每个控件的父容器为其所在的表单。注意:当运行表单时,若不想在表单集中的所有表单的初始时就设置为可视的,可以在表单集运行时,将不准备显示的表单的Visible属性设置为“假”(.F.)。要显示的表单的Visib1e属性设置为“真”(.T.)。返回2024/8/15227.2向表单中添加对象

7.1.1设置数据环境返回退出7.2.2向表单中添加VFP控件7.2.3向表单中添加数据绑定型控件7.2.4向表单中添加用户自定义对象7.2.5确定表单中的控件数目7.2.6在表单中添加属性和方法程序7.2.7包含预定义常量2024/8/15237.2.1向表单中添加VFP容器

除表单集和表单外,VFP还提供了四个基本容器类:命令按钮组、选项按钮组、表格和页框。若要在表单中添加容器对象,可从“表单控件”工具栏上选择所需的容器对象的按钮(表格、页框或按钮组),并在表单中拖动,调整到所需要的大小。文本框选项按钮组微调控件页框形状生成器锁定标签命令按钮组列表框计时器线条超级连接查看类命令按钮组合框图象ActiveX绑定控件分隔符选定对象编辑框复选框表格ActiveX控件容器命令锁基本容器控件2024/8/1524在表单中添加命令按钮组或选项按钮组时,按钮组默认包含两个按钮。在表单中添加页框时,页框默认包含两个页面,将ButtonCount属性(指定一个命令按钮组或选项按钮组中按钮的数目)或PageCount属性(指定页框对象中所含有的页数)设置为需要的数目,可以包含更多的按钮或页面。向表单中添加表格时,ColumnCount属性(指定表格、组合框或列表框中列对象的数目)的默认值为-1,表示处于AutoFill状态。这样,在运行时表格将显示与RecordSource属性(指定与表格控件建立联系的数据源)中指定的表具有同样字段数量的列。如果不想处于“AutoFill”状态,可以设置表格的ColumnCou-nt属性为指定列的数目。VFP中的所有容器对象都有与它们相关联的记数属性和收集属性。收集属性是引用其每个被包含对象的数组,记数属性是指示其包含的对象数的数值属性。每个容器的收集和记数属性根据包含在容器中的对象类型来命名,下表列出了容器及其相应的收集和记数属性。2024/8/1525【例7-1】建立一个只含一个表格(列数由提供数据的表的字段数确定)和一个命令按钮的表单,运行表单时,表格中显示的内容底色红绿交替。2024/8/1526第2步、单击表单控件工具栏上的(表格)按钮;第1步、在项目管理器中选择“表单”,再单击【新建】单击【新建表单】在系统菜单上单击【显示】|【表单控件工具栏】第2步、单击表单控件工具栏上的(表格)按钮;第3步、在表单上按住鼠标左键拖出一个矩形框,释放鼠标。在表单上单击右键,选择【数据环境】选择Student表后单击【添加】单击【关闭】关闭“数据环境设计器”第5步、选择表单上的表格对象,在“属性”对话框中选择“数据”选项卡,在属性区域选择RecordSource属性,在属性值框中选择Student表对象框中选择Form1选择“方法程序”双击ActivateEvento=THISFORM.Grid1FORI=1TOo.ColumnCount

IFI%2=0o.Columns(i).BackColor=RGB(0,255,0)ELSEo.Columns(i).BackColor=RGB(255,0,0)ENDIFENDFOR要实现此功能,可采取如下步骤:第1步、选择【文件】|【新建】菜单,然后选择“表单”,再选择【新建文件】或在项目管理器中选择“表单”,再单击【新建】,再在对话框中选择【新建文件】;第5步、选择表单上的表格对象,在“属性”对话框中选择“数据”选项卡,在属性区域找到RecordSource属性,在属性值输入文本框中选择“Student”表。第3步、在表单上按住鼠标左键拖出一个矩形框,释放鼠标。第4步、在表单上单击右键,选择【数据环境】,在弹出的“数据环境设计器”中单击右键,选择【添加】,再在弹出的“添加表或视图”对话框中选择“Student”再按【添加】按钮,再按【关闭】按钮,然后关闭“数据环境设计器”。第6步、选择表单,再选择“属性”上的“方法程序”选项卡,双击“ActivateEvent”属性,在方法程序编辑框中输入代码。2024/8/1527第7步、采用相似的方法建立一个命令按钮,将Caption属性(指定对象文本标题)值设置为“退出”。单击“命令按钮”按钮在表单上单击,添加“命令”按钮关闭表单控件工具栏将Caption属性值设置为“退出”在此处更改并输入单击注意:二处的值被修改!双击“退出”按钮输入事件代码THISFORM.RELEASE关闭“属性”窗口和事件代码编辑窗口并单击常用工具栏上的运行按钮。表单运行结果:单击表单上的【退出】按钮可以将表单关闭。返回2024/8/15287.2.2向表单中添加VFP控件

控件工具栏能使用户很方便地在表单中添加任何一种标准的VFP控件,常用的VFP控件如下所示:复选框图像OLE绑定型控件文本框组合框标签OLE容器控件计时器命令按钮线条形状编辑框列表框微调若要在表单中添加控件,可在“表单控件”工具栏中选择所需的控件按钮(单击),在表单中单击或拖动按钮,把它调整到想要的大小。如在上例中向表单添加了一个“表格”控件和一个“命令按钮”控件。返回2024/8/15297.2.3向表单中添加数据绑定型控件

通过给控件的ControlSource属性设置字段或给表格的RecordSource属性设置表或视图,可使控件与表、视图、表的字段、或视图的字段中的数据相联系。但也可通过直接将表和视图从下列位置拖到表单中,以创建数据绑定型控件:■“项目管理器”■“数据库设计器”■“数据环境设计器”“表设计器”中“属性”选项卡的“FieldMapping”设置或“选项”对话框的“FieldMapping”选项卡的设置,是这种方法创建控件类的基础。上例中将表格的RecordSource属性设置为Student,即是将表格的数据源与表Student建立联系。返回2024/8/15307.2.4向表单中添加用户自定义对象

VFP最强大的功能之一就是能创建在应用程序不同部分都可以使用和重复使用的类。如果创建了类,就能将它们添加到表单中。若要基于自定义类上添加对象,可在“项目管理器”中,将类拖动到容器中,当给工具栏添加类时,也可直接从“表单控件”工具栏中添加。1、在控件工具栏上添加类库类库必须在注册后才能在“表单控件”工具栏中显示出来。若要注册类库,可以:①从“工具”菜单中选择“选项”打开“选项”对话框。②在“选项”对话框中选择“控件”选项卡。③选择“添加”按钮。④在“打开”对话框中,选择一个要加到“选定”列表中的类库,并选择“打开”按钮。⑤重复步骤③和④。“选定”列表中列出了类库中的类,在“表单设计器”中可以和2024/8/1531VFP基类一样方便地使用这些类。注意:如果要在每次运行VFP时“表单控件”工具栏中的类库都有效,可在“选项”对话框中,选择“设置为默认值”。此外,也可以在“表单设计器”中直接注册类库。若要在表单设计器中注册一个类库,可以:①在“表单控件”工具栏中选择“查看类”按钮。②从子菜单中选择“添加”。③在“打开”对话框中选择要添加到“表单控件”工具栏上的类库,然后选择“打开”按钮。2、从类库中添加对象到表单如果从“选项”对话框的“类”选项卡或从“查看类”子菜单添加类库,就能在“表单设计器”中访问它们。若要从“表单控件”工具栏添加自定义对象,可以:①在“表单控件”工具栏中,选择“查看类”按钮。②从已注册类库的列表中选择一个类库,它包含了要加到表单中的控件。返回2024/8/1532③单击所需要的控件,并在表单中拖动到合适大小。注意:如果想从“查看类”工具栏中移去一个可视类库,可以在“选项”对话框的“控件”选项卡中,选择“选定”列表中列出的一个可视的类库,然后选择“移去”按钮。当向不是基于VFP基类的表单添加对象时,类库的相对路径(.vcx文件)存储在表单的.scx文件中。如果要将表单或类库移到另一个位置,在运行表单时VFP显示一个对话框,可以人工寻找类库。7.2.5确定表单中的控件数目

使用ControlCount属性可以确定表单中究竟有多少个控件,而Controls[n]属性允许引用表单上的任何一个控件。下面的程序用于打印出当前活动表单上所有控件的Name属性:ACTIVATESCREEN&&将输出打印到VFP主窗口FORnCnt=1TOApplication.ActiveForm.ControlCount

?Application.ActiveForm.Controls[nCnt].NameENDFOR上述程序中的Application也可以用_Screen替换。返回2024/8/15337.2.6在表单中添加属性和方法程序

可以添加许多个新的属性和方法程序到一个表单。属性拥有一个值,方法程序具有调用它时被运行的过程代码。新建的属性和方法程序与其它属性与方法程序的引用一样。1、建立一个新属性如果有一个表单集,则在“表单设计器”中添加的属性和方法程序就属于此表单集。如果没有建立表单集,则属性和方法程序属于表单。若要向表单或表单集中添加新属性,可以:①从“表单”菜单中选择“新建属性”(NewProperty)命令。②在“新建属性”对话框中,键入属性名。还可以加入关于这个属性的说明,它将显示在“属性”窗口的底部的属性描述中。2、建立一个数组属性一个数组属性可以像其他属性一样都属于表单或表单集,但不同的是数组属性可用VFP的数组命令和函数处理它。若要创建一个数组属性,可以:2024/8/1534①添加新属性到表单。②在“新建属性”对话框的“属性名”框中键入数组属性称,并包括数组的大小和维数。例如,可在“新建属性”对话框的“名称”框中输入myarray(10,5),去创建一个10行5列的二维数组,若要同时对该属性加以说明,则还可以在下部的“说明”框中输入需要对该属性进行说明的内容,如“自定义数组”等。当添加数组属性到表单时,属性作为只读显示在属性窗口中。可以在运行时管理数组,重新设置数组的维数,也可对数组属性的元素赋值。3、创建新方法程序也可向表单中添加方法程序,并且可以用调用表单类方法程序的方式调用它。若要在表单或表单集中创建一个新方法程序,可以:①从“表单”菜单中选择“新方法程序”。②在“新方法程序”对话框中,输入方法程序的名称。还可以包含有关这个方法程序的2024/8/1535说明,这是可选的。调用用户自定义方法程序和调用基类方法程序一样,都使用下面的语法:ObjectName.MethodName建立的方法程序同样可以接受参数并返回值,这种情况下,可以使用赋值语句来调用方法程序:cVariable=ObjectName.MethodName(cParameter,nParameter)7.2.7包含预定义常量

为了在方法程序中使用预定义常量,可在表单或表单集中用#INCLUDE命令包含一个头文件。头文件一般包含由#DEFINE预处理器伪指令定义的编译时的常数。若要在表单中包含文件,可以:①从“表单”菜单中选择“包含文件”。②在“包含文件”对话框的“包含文件”文本框中指定文件,或者选择对话框按钮以打开“包含”对话框并选定文件。③选择“确定”。返回2024/8/15367.3处理对象

7.3.1在设计时设置属性返回退出7.3.2定义表单行为7.3.3编辑事件代码和方法程序代码7.3.4将表单和控件保存为类7.3.5运行表单7.3.6在运行时设置属性2024/8/15377.3.1在设计时设置属性

打开属性窗口会显示选定对象的属性或事件。如果选择了多个对象,这些对象共有的属性将显示在“属性”窗口中。要编辑另一个对象的属性或事件,可在“对象”框中选择这个对象,或者直接从表单中选择这个控件。若要设置属性,可首先在“属性”窗口中,从“属性和事件”列表中选择一个属性。然后在“属性设置”框中,为选中的属性键入或选择需要的设置。注意:那些在设计时为只读的属性,例如对象的Class属性,在属性窗口的“属性和事件”列表框中以斜体显示。如果属性要求输入字符值,不必用引号将这个值括起来。例如,要将一个表单的标题设为Student,只需在“属性设置”框中键入Student;若想让表单的标题是“Student”,即想让引号也出现在窗口的标题上,在“属性设置”框中键入“Student”。通过属性窗口可以将属性设置为表达式或函数的结果。若要用表达式设置属性,可以:2024/8/1538■在“属性”窗口中,选择“函数”按钮来打开“表达式生成器”。■在“属性设置”框中键入“=”号,并在后面键入表达式。例如,如果想设置表单的Caption属性,使它在运行表单时能够指示当前的活动表,可在“属性设置”框中键入:=Alias()。在属性窗口中设置一个属性表达式,并在运行时刻或设计时刻初始化对象时,才对这个属性表达式进行求值。如果将属性设置为用户自定义函数的结果,那么当设置或修改这个属性,以及运行表单时,对这个函数进行求值。如果用户自定义函数出现错误,有可能打不开这个表单。此外,也可以在对象的Init事件中将属性设置为用户自定义函数,如下例所示。This.Caption=myfunction()其中myfunction()为自定义函数名如果用户自定义函数出现错误,就不能运行表单,但可以修改它。如果要指定表单的图标,将表单的Icon属性设置为一个.ico文件的文件名。返回2024/8/15397.3.2定义表单行为

当在“表单设计器”中设计表单时,表单是“可视”的。除非Visible(指定对象是可见还是隐藏)属性设置为“假”(.F.),对表单的外观和行为的修改将立刻在表单上反映出来。如果将WindowState(指定表单窗口在运行时是最大化、最小化还是采用普通大小)属性设置为0(普通)、1(最小化)或2(最大化),表单设计器中的表单会立即体现这一设置。如果将Movable属性(指定在运行时刻用户能否移动对象)设置为“假”(.F.),那么不但用户在运行时不能移动表单,即使在设计时也不能移动它。因此应该在设置那些决定表单行为的属性之前,先完成表单的功能设计,并添加所有需要的控件。表7-3列出了在设计时常用的表单属性,它们定义了表单的外观和行为。2024/8/1540返回2024/8/15417.3.3编辑事件代码和方法程序代码

事件是用户的行为,如单击鼠标或鼠标的移动,也可以是系统行为,如系统时钟的进程。方法程序是和对象相联系的过程,只能通过程序以特定的方式激活。当触发事件或激活方法程序时,可以指定要执行的代码。若要编辑事件或方法程序代码,可以:①从“显示”菜单中选择“代码”命令。②在“过程”框中选择事件或方法程序。③在编辑窗口中键入代码,在触发事件或激活方法程序时将执行这些代码。例如,如果在表单上已有一个标题为“退出”的命令按钮,在这个按钮的Click事件中可包括这样一行代码:THISFORM.Release注意:若要在编辑窗口中查看不同过程,请按【PageDown】或【PageUp】键。当用户单击这个命令按钮时,表单被从屏幕和内存中删除。如果不想从内存中删除表单,可以在Click事件代码中以下一行代码来代替上一行代码:THISFORM.hide&&将表单隐藏起来注意:如果表单集、表单或表单集中任何表单上任何对象的Init事件代码返回“假”(.F.),就不能创建这个表单或表单集。返回2024/8/15427.3.4将表单和控件保存为类

也可以将表单或表单上的控件子集保存为类定义。如果您打算创建基于表单的子类,或在其他表单中重新使用这些控件,可将表单作为类定义来保存。若要将表单或选定的控件保存为类定义,可以:①从“文件”菜单中选择“另存为类”。②在“另存为类”对话框中选择“当前表单”或“选定控件”。③在“类名”框中输入类的名称。④在“文件”框中输入保存类的文件名。⑤选择“确定”按钮。如果没有给出文件扩展名,保存文件时会加上默认的.vcx扩展名,如果将表单保存为类定义,就可以用MODIFYCLASS命令对它进行修改。返回2024/8/15437.3.5运行表单

可以从界面直接运行表单,或在程序代码中运行表单。1、交互地运行表单有几种方法运行设计好的表单。如果在“表单设计器”中工作,可通过单击“表单设计器”工具栏中的“运行”按钮测试表单。如果想在“表单设计器”重新打开表单,可在工具栏中选择【修改表单】按钮。也可以从项目中运行表单,或者以编程方式运行它。若要以交互方式运行表单,可在“项目管理器”中,选择要运行的表单,再选择“运行”按钮。或者在“命令”窗口中,使用DOFORM命令运行表单。也可以从【程序】菜单中选择【运行】来运行菜单,在“文件类型”框中选择“表单”,选定一个表单再选定【运行】按钮。2、从程序中运行表单若想在程序中运行表单,需要在与事件相关联的代码、方法程序代码或在程序或过程中包含DOFORM命令。2024/8/15443、命名表单对象默认情况下,当使用DOFORM命令时,表单对象的名称与.scx文件名称一样。例如,下面的一行代码运行Student.scx表单。VFP自动为这个表单创建一个名为Student的对象变量:DOFORMStudent若要命名表单对象,请使用DOFORM命令的NAME子句。例如,下面的命令运行一个表单,同时创建两个表单对象变量名:DOFORMStudentNAMEmystud1DOFORMStudentNAMEmystud2

4、处理表单对象如果在“命令”窗口发出DOFORM命令,表单对象就和一个公共变量相关联,可以通过这个变量名来访问表单对象。例如,在“命令”窗口发出下面的命令,打开一个名为Student的表单并改变它的标题。DOFORMStudentStudent.Caption=”学生情况登记”2024/8/1545如果在“命令”窗口发出下面的命令,在活动的输出窗口中将显示O,表明Student是一个对象:?TYPE(“Student”)如果在程序中发出DOFORM命令,表单对象作用范围限于这个程序,如果程序或过程运行结束,会移去对象,但表单仍然可见。例如可以运行下面这个程序:*formtest.prgDOFORMStudent在运行完程序后,表单仍然可见,表单上的所有控件仍然处于活动状态,但TYPE(“Student”)返回U表明Student是没有定义的变量,因此在“命令”窗口中发出下面的命令将产生错误:Student.Caption=”学生情况登记”但还可以使用应用程序对象的ActiveForm、Forms和FormCount属性访问表单。5、将表单链接到表单对象变量DOFORM命令中的LINKED关键字允许将表单和表单对象变量2024/8/1546链接起来,如果包含了LINKED关键字,当与表单对象相关联的变量超出范围时,表单将被释放。例如,下面命令创建一个链接到对象变量mystud2的表单:DOFORMStudentNAMEmystud2LINKED当释放mystud2时,表单也关闭。6、关闭活动的表单若想允许用户通过双击控件框,或选择表单“控件”菜单中的“关闭”来关闭活动的表单,则需要设置表单的Closable属性。若要允许用户关闭活动表单,可以:①在“属性”窗口中,将Closable属性设置为“真”(.T.)。②使用RELEASE命令。例如,可以通过在“命令”窗口或程序中发出下面的命令来关闭和释放表单Student:RELEASEStudent

也可以在一个控件,如标题为“退出”的命令按钮的Click事件代码中包含下面的命令,它允许用户关闭和释放表单:2024/8/1547THISFORM.Release

可以在与表单的对象相关联的代码中使用RELEASE命令,但在RELEASE方法程序中却不会执行包含的任何代码。

注意:当释放表单时,同时也从内存中释放了为这个表单创建的对象变量。每一个表单集有一个单独的变量,因此不释放表单集就不能释放表单集中的表单。如果想要释放表单集,可使用RELEASE.THISFORMSET命令。如果想将一个表单从屏幕移去,不再让用户看见或使用它,可以使用THISFORM.Hide命令。返回2024/8/15487.3.6在运行时设置属性

表单由控件等对象组成。每个对象都有自己的属性,对象的属性是独立存在的,可以分别定义每个对象的属性。打开属性窗口会显示选定对象的属性或事件。如果选择了多个对象,这些对象共有的属性会显示在“属性”窗口中。要编辑另一个对象的属性或事件。可以在“对象”框中选择这个对象,或者直接从表单中选择这个控件。VFP中对象的属性除了能在设计时确定以外,还能在运行时对属性进行充分的控制。1、在对象层次上引用对象若想操作一个对象,需要确定它和容器层次的关系。在容器层次的最高级(表单集或表单)需要引用对象变量。除非使用DOFORM命令中的NAME子句,否则对象变量和.scx文件有相同的名称。通过引用由点号(.)分隔的对象变量、控件和属性可以处理属性,如下所示:Objectvariable.[form.]perty=setting2024/8/1549对象属性设置的一般格式说明:..=对象变量,包含包含对象的容器及对象等。容器和对象间也要用逗点分隔。逗点分隔符逗点分隔符等号赋值操作控件。其中包含有包含控件的容器,容器和控件也要用逗点分隔。需要设置值的属于指定控件的一个属性。所赋的值在【例7-1】中使用表单的ActivateEvent事件中使用了下列代码:o=THISFORM.Grid1o.Columns(i).BackColor=RGB(0,255,0)这两条命令相当于一条命令:THISFORM.Grid1.Columns(i).BackColor=RGB(0,255,0)对象变量控件属性值2024/8/1550可在表单或表单集中使用THIS、THISFORM和THISFORMSET引用对象。例如,要想在单击命令按钮时改变它的标题,可在命令按钮的Click事件代码中包含下面的命令:THIS.Caption=“保存”2024/8/1551对象引用示例:在第5章中的面向对象程序设计中曾用到下述命令:设置Combo2(字体设置)的ClickEvent事件代码(工具栏不能属于一个表单,只能属于表单集)THISFORMSET.ActiveForm.ActiveControl.FontName=THIS.VALUE指定表单集指定属于指定表单集的一个表单指定属于指定表单的一个控件指定属于指定控件的一个属性为指定属性设置值设置Combo3(字号设置)的ClickEvent代码:THISFORMSET.ActiveForm.ActiveControl.FontSize=;VAL(ALLTRIM(THIS.VALUE))

设置Command1的ClickEvent代码:THISFORMSET.ActiveForm.ActiveControl.FontBold=;!THISFORMSET.ActiveForm.ActiveControl.FontBoldTHIS.FontBold=THISFORMSET.ActiveForm.ActiveControl.FontBold说明:赋值时所赋的值既可以是指定值,也可是变量。2024/8/15522、在运行时使用表达式设置属性在运行时也可以使用表达式或函数来设置属性。若要在运行时将属性设置为表达式,可为属性指定一个表达式,或者为属性指定一个用户自定义函数的结果。例如,建立一个“属性设置示例”表单,根据一个变量的不同值,可以将一个按钮的标题设置为“添加”或“保存”,另一个按钮的标题设置为“编辑”或“还原”。首先在创建表单对象时中声明这个变量并设置表单的名称和“退出按钮”的名称:

即在表单的InitEvent方法程序中写入如下代码(也可在ActivateEvent事件中):PUBLICglediting&&定义变量Glediting=.F.&&为变量赋初始值THISFORM.CAPTION="属性示例"&&设置表单名称THISFORM.COMMAND3.CAPTION="退出"&&将Command3按钮名设为“退出”然后在第一个和第二个命令按钮的ClickEvent事件中,分别添加如下代码:glediting=IIF(glediting=.F.,.T.,.F.)&&当点击事件发生时,变量值发生变化THISFORM.Refresh&&调用表单的刷新方法程序2024/8/1553最后在表单的Refresh方法程序中添加如下代码:THISFORM.COMMAND1.CAPTION=IIF(glediting=.F.,"添加","保存")THISFORM.COMMAND2.CAPTION=IIF(glediting=.F.,"编辑","还原")dodefault()

第1、2行命令是根据glediting的值设置命令按钮名称。

Caption设置中使用了一个IIF()表达式。IIF()是一个函数。

IIF()的功能是:该函数计算一个逻辑表达式的值,然后根据计算结果,返回两个表达式中的一个。如果逻辑表达式的值为“真”,则返回第一个表达式;如果值为“假”,则返回第二个表达式。第3条命令的作用是调用父类中的方法程序。在此处是调用表单父类中的Refresh方法程序。在表单中单击【添加】或【编辑】按钮时,按钮名改变。当再次在表单中单击【添加】或【编辑】按钮时,按钮名再次改变。如此循环改变。2024/8/15543、设置多个属性用户可以同时为一个表单的多个对象设置多个属性,此时可使用WITH…ENDWITH结构。例如,对于上面例子中的两个命令按钮,在标题名称变化时还要使它们的宽度、字体、字体风格、背景颜色变化,可在表单的Refresh方法程序代码中包含下面的语句:IFglediting=.F.

WITHTHISFORM.COMMAND1

.Caption="添加".Width=100.FontName="黑体".FontBold=.T..ForeColor=RGB(0,128,255)ENDWITHWITHTHISFORM.COMMAND2.Caption="编辑".Width=100.FontName="黑体".FontBold=.T..ForeColor=RGB(0,128,255)ENDWITHELSEWITHTHISFORM.COMMAND1.Caption="保存".Width=75.FontName="宋体".FontBold=.F..ForeColor=RGB(0,0,0)ENDWITHWITHTHISFORM.COMMAND2.Caption="还原"2024/8/1555.Width=75.FontName="黑体".FontBold=.F..ForeColor=RGB(0,0,0)ENDWITHENDIFDODEFAULT()表单运行后的结果如图返回2024/8/15567.4管理表单7.4.1隐藏和释放表单7.4.2将参数传递到表单7.4.3从表单返回值7.4.4在表单中使用本地和远程数据退出返回2024/8/15577.4.1隐藏和释放表单

用户可以隐藏一个表单,使它不可见。在隐藏表单后,用户不能访问表单上的控件,但仍可以用程序完全控制它们。若要隐藏表单,可使用Hide方法程序。例如,在与命令按钮的Click事件相关的代码中,可以包含下面一行代码:

THISFORM.Hide当用户单击命令按钮时,表单仍在内存中,但不可见。当用户完成对表单的操作后,就可以让用户释放表单。在释放表单后,用户就不能再访问表单的属性和方法程序了。若要释放表单,可以使用RELEASEE命令。例如,在与“退出”命令按钮的Click事件相关的代码中包含下面一行代码:

THISFORM.Release当用户单击“退出”命令按钮时,表单被关闭。返回2024/8/15587.4.2将参数传递到表单

在运行表单时,为设置属性值或者指定操作的默认值,有时需要将参数传递到表单。若要将参数传递到表单,可以:①创建容纳参数的表单属性,如ItemName和ItemQuantity②在表单的Init事件代码中,包含PARAMETERS语句:PARAMETERScString,nNumber③在表单的Init事件代码中,将参数分配给属性:THIS.ItemName=cStringTHIS.ItemQuantity=nNumber例如,现通过向表单传递参数,设置“属性设置示例”表单中二个命令按钮的FontName和FontSize属性,在运行表单时改变其字体和字号。可在表单的Refresh方法程序中的DODEFAULT()命令行前再写入如下代码:THISFORM.COMMAND1.FontName=THIS.ItemNameTHISFORM.COMMAND2.FontName=THIS.ItemNameTHISFORM.COMMAND1.FontSize=THIS.ItemQuantityTHISFORM.COMMAND2.FontSize=THIS.ItemQuantity④当运行表单时,在DOFORM命令中包括一个WITH子句:DOFORM属性设置示例WITH“隶书”,12返回2024/8/15597.4.3从表单返回值

在整个应用程序中都可以使用表单,让用户指定值。若要从表单返回值,可以:①将表单的WindowType属性设置为1,使表单成为模式表单。②在与表单的UnLoad事件相关的代码中,包含一个带返回值的RETURN命令。③在运行表单的程序或方法程序中,在DOFORM命令中包含TO关键字。例如,对“属性设置示例”表单在运行时向其传递参数设置命令按钮的字体和字号,在结束表单的运行时,要求表单将命令按钮最后的状态通过变量返回到一个变量Sign中:向表单传递参数同前,再进行如下设置:先将表单的Window-Type属性设置为“1-模式”;再在表单的UnLoad事件中加入如下代码:RETURNGlediting然后执行下列命令:DOFORM属性设置示例WITH"隶书",12TOSign返回2024/8/15607.4.4在表单中使用本地和远程数据

可以创建这样的表单,它可以很容易地在使用本地数据和远程数据(例如,存储在数据服务器上)之间切换。这样就可以使用本地或测试数据来创建应用程序的原型,然后切换到远程或实际的数据上,而不对表单做实质性的修改。能够在本地和远程数据库之间切换的关键在于使用的是视图而不是直接将表单(及其控件)与表链接。若要访问远程数据,则必须在任何事件中使用视图。因此为了方便本地数据与远程数据的切换,也需为本地数据创建视图。创建表单时,将这两个视图都添加到它的数据环境中,根据需要进行切换。若要创建可在本地和远程数据间切换的表单,可以:①创建数据的两个视图,一个指向远程数据,另一个指向本地数据。②在表单的“数据环境”中添加这两个视图。③在“数据环境”的“属性”中,为两个视图设置同样的Alias属性,并将“数据环境”的OpenViews属性设置为1:LocalOnly或2:2024/8/1561RemoteOnly(取决于表单运行时使用哪个视图)。注意:由于两个视图使用同样的别名,不要选择默认的0:Local和Remote。④在表单中,添加需要的控件,将ControlSource属性设置为视图的相应字段。由于两个视图使用同样的别名,表单运行时控件将自动对那个活动的视图作出反应。创建表单后,通过改变“数据环境”的OpenView属性切换视图的别名。可以在使用“表单设计器”时在“数据环境”中做此工作,如果要在运行时切换视图,还可以写出代码并将其附加到某个事件中。例如,可将这些代码放入ActivateEnevt事件中:THISFORM.DataEnvironment.OpenViews=2&&使用远程视图如果要创建一个可在本地和远程数据间切换的表单,还必须设计定位代码用以容纳两个视图,尤其是设计具有一对多关系的表单。例如,如果表单只访问本地表或视图,可在Next命令按钮中使用下列代码,用来移动指针到临时表的下一个记录:SKIP1THISFORM.Refresh()2024/8/1562但是,当在远程视图中定位时,此代码无效。因为代码假设临时表包含了表单需要的所有数据。通常情况下,希望从远程数据源上下载的数据越少越好。解决的办法是使用带参数的视图。例如,用来编辑客户信息的视图定义如下代码:SELECT*FORMCUSTOMERSWHERECUSTOMERS.COMPANY_NAME=?PCompanyName表单运行时,会在对话框中提示用户输入客户名或允许用户在文本框中输入一个名称。“显示”按钮的代码可能与以下代码相似:pCompanyName=THISFORM.txtpCompanyName.ValueREQUERY(“Customer”)THISFORM.refresh()返回2024/8/15637.5控件使用要点和技巧7.5.1根据任务选择合适的控件

退出7.5.2使用命令按钮和命令按钮组控件

7.5.3用于显示文字、图形或图片的控件

7.5.4使用表格控件

7.5.5使用OLE绑定型控件

7.5.6设置控件的Tab键次序

7.5.7允许用户拖放

7.5.8启用和废止控件

返回2024/8/15647.5.1根据任务选择合适的控件VFP的控件具有良好的灵活性和通用性。虽然可以用多种控件来完成某个特定的任务,但最好保持控件的使用方法的一致性。这样,当用户一看到所提供的界面,就知道自己能做什么。例如,标签和命令按钮都具有Click事件,但熟悉图形界面的用户更习惯单击命令按钮来执行指令。表单的绝大部分功能可以归为下列几类:■为用户提供一组预先设定的选择■接受不能预先设定的用户输入■在给定范围内接受用户输入■允许用户执行特定的命令■在给定的时间间隔内执行特定的命令■显示信息1、预先设定选择的控件确保数据库数据有效性的最直接方法之一,就是为用户提供一组预先设定的选项。控制用户的选择,可以保证在数据库中2024/8/1565不存储无效数据。可以用下列控件为用户提供一组预先设定的选择:选项组、列表框、下拉列表和复选框。(1)使用选项组选项组是包含选项按钮的容器。通常,选项按钮允许用户指定对话框中几个操作选项中的一个,而不是输入数据。例如,选项按钮可以指定是向文件或打印机输出结果还是进行打印预览。■设置选项组中的选项按钮数目在表单中创建一个选项组时,它默认包含两个选项按钮,改变ButtonCount属性可以设置选项组中的选项按钮数目。例如,要想使一个选项组包含六个选项按钮,可将这个选项组的ButtonCount属性设置为6。选项组的Value属性表明用户选定了哪一个按钮。例如,选项组有六个选项按钮,如果用户选择了第四个选项,选项组的Value属性就是4。如果选项组的ControlSource属性是一个字符型字段,或者如果在运行表单之前将Value属性设置为一个字符值,则选项组的Value属性就是被选中的选项按钮的标题。2024/8/1566■设置选项按钮的属性要想在“表单设计器”中人工调整选项组或命令按钮组的单个组件,可从在“属性”窗口中设置单个按钮的属性,也可以在运行时通过指定选项按钮的名称和属性值来设置这些属性。如,在表单某一控件的某一方法程序中有如下一行代码,设置OptionGroup1选项组中Option4按钮的标题:THISFORM.OptionGroup1.Option4.Caption=”按学号分类”还可以在运行时使用Buttons属性,并指定选项按钮在组中的索引号来设置这些属性。例如,如果Option4是组中的第四个按钮,下面一行代码同样完成对Option4标题的设置:THISFORM.OptionGroup1.Buttons(4)Caption=”按学号分类”若要设置组中所有按钮的属性,可使用组的SetAll方法程序。下面一行代码将表单中OptionGroup1选项组的所有按钮设置为无效:THISFORM.OptionGroup1.SetAll(“Enabled”,”.F.”,”OptionButton”)SetAll方法程序的功能是为容器对象中的所有控件或某类控件指定一个属性值。其语法格式为:Container.SetAll(<属性名>,<属性值>[,<基类>])2024/8/1567■启用或废止组中的按钮前面的示例表明了如何通过编程方式废止组中的所有选项按钮。当废止了选项按钮时,它们使用选项按钮的DisabledForeColor和DisabledBackColor属性指定的颜色显示。也可以将选项组的Visible属性设置为“假”(.F.),这样用户就不会看到任何迹象。■判断当前选定的按钮根据选项组的Value属性可以判断用户选定了哪个按钮。如果按钮的控件源为数值型,且组中有五个按钮,如果选定了第三个按钮,则选项组的Value属性值为3。如果没有选定选项按钮,选项组的Value属性为0。使用组的Value和Buttons属性,也可以确定选定选项按钮的标题。例如,下面一行代码将选定选项的Caption属性保存到名为cSelected的变量中:*下面的程序代码添加在表单的OptionGroup1选项组的Click事件方法程序中oGroup=THISFORM.OptionGroup1cSelected=oGroup.Buttons(oGroup.Value).CaptionTHISFORM.Refresh2024/8/1568在表单的InitEvent事件方法程序中添加下面一行代码:PUBLICcSelected在表单中加入一个文本框,将其ControlSource属性设为cSelected当此表单运行后,当点击OptionGroup1选项组时,被选中的选项的标题会在表单上的文本框中显示出来。表单设计完成后如图:当运行表单并在选项组中单击Option4时的表单结果如图:■用选项按钮筛选列表对一个表单的数据源如果需要有少数几种数据过滤方式,可以使用2024/8/1569选项按钮允许用户在过滤器之间切换。在下面的示例中,假定有一个包含三个选项按钮的选项组和一个表格控件的表单,表格控件的属性设置如下:对象属性设置GRID1GRID1RecordSourceTypeRecordSource1­—别名Student筛选条件是在选项按钮的Click事件代码中设置的,当用户选择选项按钮时,对表格中数据进行筛选的事件代码如下:2024/8/1570请不要忘记在关闭按钮的Click事件中或Destroy事件中包含SETFILTERTO命令,以便当用户关闭表单时重置筛选条件。注意:当表格的数据源已经更改时,为刷新表格中的数据,可使用Refresh方法程序。按此方法建立表单且运行后的结果如所示。■使用选项按钮将用户的选择存储到表中在少数情况下,可以通过选项按钮获得用户信息,并通过保存Caption属性将这些信息保存在表中。例如,在一个标准化考试2024/8/1571的应用程序中,可以使用选项按钮,使用户在多项选择A、B、C、D中进行选择。还可以用选项按钮在学生表中指明性别等。若要将一个选项按钮的Caption属性保存到表中,可以:①将选项组的Value属性设置为空字符串。②将选项组的ControlSource属性设置为表中的一个字符型字段。③在选项组的Click事件代码中加入如下代码:THISFORM.Refresh例如,在Student表中加入“新生类别”字符型字段,将选项组中选项按钮的标题分别设置为“城应”、“农应”、“城往”和“农往”,并且选项组的ControlSource属性设置为“新生类别”,那么当用户选择标题为“城应”的选择项时,“城应”将被保存在表Student的“新生类别”字段中。(2)使用列表框和下拉列表框列表框和下拉列表框(即style属性为2的组合框控件—下拉列表)为用户提供了包含一些选项和信息的可滚动列表。列表框中,任何时候都能看到多个项;而在下拉列表中,只能看到一个项,用户可单击向下按钮来显示可滚动的下拉列表框。2024/8/1572■常用的列表属性和方法程序■填充列表框或组合框通过设置RowSourceType和RowSource属性,可以用不同数据源中的项填充列表框。RowSourceType属性决定列表框或组合框2024/8/1573的数据源类型,如数组或表,设置好RowSourceType后,设置RowSource属性可指定列表项的数据源。RowSourceType共有十种类型:0-无,表示没有,由程序向列表中添加项;1-值;2-别名;3-SQL语句;4-查询;5-数组;6-字段;7-文件;8-结构;9-弹出式菜单。■创建具有多列的列表框虽然列表框默认为一列,但VFP中的列表框可以包含任意列。多列列表框和表格的区别在于,在多列列表框中用户一次选择一行,而在表格中用户可以选择每个单元,另外不能直接编辑列表中的数据。若要在列表框中显示多列,可以:①将ColumnCount属性设置为所需的列数。②设置ColunWidths属性。例如,如果列表框中有三列,下面的命令将各列宽度分别设置为60、45和80。THISFORM.LIST1.ColumnWidths=”60,45,80”③将RowSourceType属性设置为“6-字段”。2024/8/1574■允许用户选择列表框中的多项默认情况下,一次只能选定一个列表项,但也可以允许用户选择列表中的多个列表项。若要选择列表中的多项,可将列表的MultiSelect属性设置为“真”。为了处理选定的项,例如把它们复制到一个数组或在应用程序的其他地方使用它们,可以循环遍历各列表项,处理Selected属性为“真”的项。下面的代码包含在列表框的InteractiveChange事件中,在comboselected组合框中显示这个列表框中的选定项,并且在txtNoSelected文本框中显示选定项的数目:nNumberSelect=0

&&跟踪数目的变量THISFORM.Combo1.Clear&&清除组合框FORnCnt=1TOTHIS.ListCount

IFTHIS.Selected(nCnt) nNumberSelect=nNumberSelect+1 THISFORM.Combo1.Additem(THIS.List(nCnt)) ENDIFENDFORTHISFORM.Text1.Value=nNumberSelectTHISFORM.Refresh2024/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论