Visual FoxPro经典教程

上传人:仙*** 文档编号:83446527 上传时间:2022-05-01 格式:DOC 页数:44 大小:563.50KB
返回 下载 相关 举报
Visual FoxPro经典教程_第1页
第1页 / 共44页
Visual FoxPro经典教程_第2页
第2页 / 共44页
Visual FoxPro经典教程_第3页
第3页 / 共44页
点击查看更多>>
资源描述
wordVisual FoxPro经典教程:第九章:创建表单第九章:创建表单利用表单,可以让用户在熟悉的界面下查看数据或将数据输入数据库。但表单提供的远不止一个界面:它还提供丰富的对象集,这些对象能响应用户或系统事件,这样就能使用户尽可能方便和直观地完成信息管理工作。本章内容要点: 设计表单 创建新表单 在表单中添加对象 处理对象 管理表单设计表单Visual FoxPro 提供了一个功能强大的表单设计器,使得设计表单的工作变得又快又容易。在表单设计器中可以处理如下内容: 表单中不同类型的对象。 与表单相关联的数据。 顶层表单或子表单。 能一起操作的多个表单。 基于自定义模板的表单。 表单和表单集是拥有自己的属性、事件和方法程序的对象,在表单设计器中可以设置这些属性、事件和方法程序。表单集包括了一个或多个表单,可以将它们作为一个整体来操作。例如,如果在表单集中有四个表单,可以在运行时用一个命令显示或隐藏它们。创建新表单在“表单设计器中可以新建表单,而且在设计时刻就能看见其中各对象显示在用户面前的外观。假如要新建一个表单 请在“项目管理器中选定“表单,并选择“新建按钮。 -或者 - 从“文件菜单中选择“新建命令,选定“表单按钮并选择“新建文件按钮。 -或者 - 使用CREATE FORM命令。 表单设计器带如下工具栏的:表单设计器、表单控件、布局和调色板有关“表单设计器的详细内容,请参阅用户指南中的第八章“用表单管理数据。有关工具栏的详细内容,请在“帮助中查找“工具栏,并选择与所需信息有关的工具栏。设置数据环境每一表单或表单集都包括一个数据环境。数据环境是一个对象,它包含与表单相互作用的表或视图,以与表单所要求的表之间的关系。可以在“数据环境设计器中直观地设置数据环境,并与表单一起保存。在表单运行时数据环境可自动打开、关闭表和视图。而且,通过设置“属性窗口中ControlSource 属性设置框,在这个属性框中列出数据环境的所有字段,数据环境将帮助您设置控件的ControlSource 属性。假如要打开数据环境设计器1. 从“显示菜单中选择“数据环境。 2. 从快捷方式菜单中选择“添加。 3. 在“添加表或视图对话框中选择一表或视图添加到数据环境中去。 数据环境设计器常用数据环境属性下面是在属性窗口中经常设置的数据环境属性:属性说明默认设置AutoCloseTables控制当释放表或表单集时,是否关闭表或视图。“真(.T.)AutoOpenTables控制当运行表单时,是否打开数据环境中的表或视图。“真(.T.)InitialSelectedAlias当运行表单时选定的表或视图。设计时刻为 。如果没有指定,在运行时首先加到“数据环境中的临时表最先被选定。向数据环境设计器中添加表或视图向数据环境设计器中添加表或视图时,可以看到属于表或视图的字段和索引。假如要向数据环境中添加表或视图1. 在“数据环境设计器中,从“数据环境菜单中选择“添加。 2. 在“添加表或视图对话框中,从列表中选择一个表或视图。 -或者 -如果没有打开的数据库或项目,请选择“其他来选择表。也可以将表或视图从打开的项目或“数据库设计器拖放到“数据环境设计器中。当“数据环境设计器处于活动状态时,“属性窗口会显示与数据环境相关联的对象与属性。在“属性窗口的对象框中,数据环境的每个表格或视图、表格之间的每个关系,以与数据环境本身均是各自独立的对象。从数据环境设计器中移去表当您将表从数据环境中移去时,与这个表有关的所有关系也随之移去。假如要将表或视图从数据环境设计器中移去1. 在“数据环境设计器中选择要移去的表或视图。 2. 从“数据环境菜单中选择“移去命令。 在数据环境设计器中设置关系如果添加进数据环境设计器的表具有在数据库中设置的永久关系,这些关系将自动地加到数据环境中。如果表中没有永久的关系,您可以在数据环境设计器中设置这些关系。假如要在数据环境设计器中设置关系 将字段从主表拖动到相关表中的相匹配的索引标识上。 数据环境设计器与在表间设置的关系您也可以将字段从主表拖动到相关表中的字段上。如果和主表中的字段对应的相关表中没有索引标识,系统将提示您是否创建索引标识。在数据环境设计器中编辑关系在数据环境设计器中设置了一个关系后,在表之间将有一条连线指出这个关系。假如要编辑关系的属性 在“属性窗口中,从名称列表框选择要编辑的关系。 关系的属性对应于SET RELATION 和SET SKIP命令中的子句和关键字。RelationalExpr 属性的默认设置为主表中主关键字字段的名称。如果相关表是以表达式作为索引的,就必须将 RelationalExpr 属性设置为这个表达式。例如,如果相关表以 UPPER(cust_id) 作为索引,就必须将 RelationalExpr 属性设置为 UPPER(cust_id)。如果关系不是一对多关系,必须将OneToMany 属性设置为“假(.F.)。这对应于使用SET RELATION命令时不发出SET SKIP命令。将关系的OneToMany 属性设置为“真(.T.),相当于发出 SET SKIP命令。当您浏览父表时,在记录指针浏览完子表中所有的相关记录之前,记录指针一直停留在同一父记录上。注释 如果在表单或表单集中想设置一对多关系,必须将 OneToMany 属性设置为“真(.T.),甚至在数据库中已经建立了永久一对多关系时也必须如此。创建单文档和多文档界面Visual Foxpro 允许创建两种类型的应用程序: 多文档界面 (MDI) 各个应用程序由单一的主窗口组成,且应用程序的窗口包含在主窗口中或浮动在主窗口顶端。Visual FoxPro 根本上是一个 MDI 应用程序,带有包含于 Visual FoxPro 主窗口中的命令窗口,编辑窗口和设计器窗口。 单文档界面 (SDI) 应用程序由一个或多个独立窗口组成,这些窗口均在 Windows 桌面上单独显示。Microsoft Exchange 即是一个 SDI 应用程序的例子,在该软件中打开的每条消息均显示在自己独立的窗口中。 由单个窗口组成的应用程序通常是一个 SDI 应用程序,但也有一些应用程序综合了 SDI 和MDI 的特性。例如,Visual FoxPro 将调试器显示为一 SDI 应用程序,而它本身又包含了自己的MDI 窗口。为了支持这两种类型的界面,Visual FoxPro 允许创建以下几种类型的表单: 子表单:包含在另一个窗口中,用于创建 MDI 应用程序的表单。子表单不可移至父表单主表单边界之外,当其最小化时将显示在父表单的底部。假如父表单最小化,如此子表单也一同最小化。 浮动表单:属于父表单主表单的一局部,但并不是包含在父表单中。而且,浮动表单可以被移至屏幕的任何位置,但不能在父窗口后台移动。假如将浮动表单最小化时,它将显示在桌面的底部。假如父表单最小化,如此浮动表单也一同最小化。浮动表单也可用于创建 MDI 应用程序。 顶层表单:没有父表单的独立表单,用于创建一个 SDI 应用程序,或用作 MDI 应用程序中其他子表单的父表单。顶层表单与其他 Windows 应用程序同级,可出现在其前台或后台,并且显示在 Windows 任务栏中。 子表单、浮动表单和顶层表单指定表单类型创建各种类型表单的方法大体一样,但需设置特定属性以指出表单应该如何工作。如果创建的是子表单,如此不仅需要指定它应在另外一个表单中显示,而且还需指定是否是MDI 类的子表单,即指出表单最大化时是如何工作的。如果子表单是 MDI 类的,它会包含在父表单中,并共享父表单的标题栏、标题、菜单以与工具栏。非 MDI 类的子表单最大化时将占据父表单的全部用户区域,但仍保存它本身的标题和标题栏。假如要建立一个子表单1. 用“表单设计器创建或编辑表单。 2. 可将表单的ShowWindow属性设置为如下值之一: o 0 - 在屏幕中 (默认)。子表单的父表单将为 Visual FoxPro 主窗口。 o 1 - 在顶层表单中。当子窗口显示时,子表单的父表单是活动的顶层表单。如果希望子窗口出现在顶层表单窗口内,而不是出现在 Visual FoxPro 主窗口内时,可选用该项设置。 3. 如果希望子表单最大化时与父表单组合成一体,可设置表单的MDIForm 属性为“真(.T.);如果希望子表单最大化时仍保存为一独立的窗口,可设置表单的MDIForm 属性为“假(.F.)。 浮动表单是由子表单变化而来。假如要指定为浮动表单1. 用“表单设计器创建或编辑表单? 2. 可将表单的ShowWindow 属性设置为以下值之一: o 0 - 在屏幕中 (默认)。浮动表单的父表单将出现在 Visual FoxPro 主窗口。 o 1 - 在顶层表单中。当浮动窗口显示时,浮动表单的父表单将是活动的顶层表单。 3. 将表单的Desktop 属性设置为“真(.T.)。 假如要指定顶层表单1. 用“表单设计器创建或编辑表单。 2. 将表单的ShowWindow 属性设置为“2 - 作为顶层表单。 显示位于顶层表单中的子表单如果所创建的子表单中的ShowWindow 属性设置为“1 - 在顶层表单中,如此不需直接指定一顶层表单作为子表单的父表单。而是在子窗口出现时,Visual FoxPro 指派成为该子表单的父表单。假如要显示位于顶层表单中的子表单1. 创建顶层表单。 2. 在顶层表单的事件代码中包含DO FORM命令,指定要显示的子表单的名称。 例如,在顶层表单中建立一个按钮,然后在按钮的Click 事件代码,包含如下的命令:DO FORM MyChild注释 在显示子表单时,顶层表单必须是可视的、活动的。因此,不能使用顶层表单的Init 事件来显示子表单,因为此时顶层表单还未激活。3. 激活顶层表单,如有必要,触发用以显示子表单的事件。隐藏 Visual FoxPro 主窗口在运行顶层表单时,可能不希望 Visual FoxPro 主窗口是可视的。使用应用程序对象的Visible 属性按要求隐藏或显示 Visual FoxPro 主窗口。假如要隐藏 Visual FoxPro 主窗口1. 在表单的Init 事件中,包含如下代码行: 2. Application.Visible = .F.3. 在表单的Destroy 事件中,包含如下代码行:4. Application.Visible = .T.在某些方法程序或事件中,可使用命令关闭表单。注释 也可以在配置文件中包含以下行,用以隐藏 Visual FoxPro 主窗口。SCREEN = OFF有关设置 Visual FoxPro 的详细内容,请参阅安装指南中的第三章“配置 Visual FoxPro。在顶层表单中添加菜单假如要在顶层表单中添加菜单1. 创建顶层表单的菜单。有关创建顶层表单菜单的详细内容,请参阅第十一章“设计菜单与工具栏。 2. 将表单的ShowWindow属性设置为“2 - 作为顶层表单。 3. 在表单的Init 事件中,运行菜单程序并传递两个参数:DO WITHoForm, lAutoRenameoForm 是对表单的对象引用。在表单的Init 事件中,THIS 作为第一个参数进展传递。IAutoRename 指定了是否为菜单取一个新的唯一的名字。如果计划运行表单的多个实例,如此将 .T. 传递给IAutoRename。例如,可以使用如下代码调用一个名为mySDImenu的菜单:DO mySDImenu.mpr WITH THIS, .T.用表单集扩大表单可以将多个表单包含在一个表单集中,作为一组处理。表单集有以下优点: 可同时显示或隐藏表单集中的全部表单。 可以可视的模式调整多个表单以控制它们的相对位置。 因为表单集中所有表单都是在单个 .scx 文件中用单独的数据环境定义的,可自动地同步改变多个表单中的记录指针。如果在一个表单的父表中改变记录指针,另一个表单中子表的记录指针如此被更新和显示。 注释 运行表单集时,将加载表单集所有表单和表单的所有对象。加载带有多个控件的多个表单会花几秒钟的时间。创建表单集表单集是一个包含有一个或多个表单的父层次的容器。可在“表单设计器中创建表单集。假如要创建表单集 从“表单菜单中,选择“创建表单集选项。 如果不需要将多个表单处理为表单组,如此不必创建表单集。创建表单集以后,如此可向其中添加表单。添加和删除表单创建了表单集以后,可添加新表单或删除表单。假如要向表单集中添加新表单 从“表单菜单中,选择“添加新表单。 假如要从表单集中删除表单1. 在“表单设计器“属性窗口的对象列表框中,选择要删除的表单。 2. 从“表单菜单中选择“移除表单。 如果表单集中只有一个表单,可删除表单集而只剩下表单。假如要删除表单集 从“表单菜单中选择“移除表单集。 表单以表的格式存储在 .scx 后缀的文件中。创建表单时, .scx 表包含了一个表单的记录,一个数据环境的记录,和两个内部使用记录。为每个添加到表单或数据环境中的对象添加一个记录。如果创建了表单集,如此为表单集与每个新表单各添加了一个记录。每个表单的父容器为表单集,每个控件的父容器为其所在的表单。提示 当运行表单集时,假如不想在最初让表单集里的所有表单可视的。可以在表单集运行时,将不希望显示的表单的Visible 属性设置为“假(.F.)。将希望显示的表单,其 Visible 属性设置为“真(.T.)。在表单中添加对象为了在表单中设计所需的功能,您需要添加适宜的控件,设置表单和控件属性并编写代码。可以将如下类型的对象添加到表单中: 控件 容器 用户自定义类 OLE 对象深入了解容器和控件对象Visual FoxPro 中的对象根据它们所基于的类的性质可分为两类: 容器可以作为其他对象的父对象。例如,一个表单作为一个容器,是放在其中的复选框的父对象。 控件可以包含在容器中,但不能作为其他对象的父对象。例如复选框就不能包含其他任何的对象。 在“表单设计器中既可以设计容器,也可以设计控件。容器可以包含列标头,除了表单、表单集、工具栏、计时器和其他列对象控件之外的任何对象命令按钮组命令按钮表单集表单、工具栏表单页框、表格、任何控件表格列选项按钮组选项按钮页框页面页面表格、任何控件添加 Visual FoxPro 容器除表单集和表单外,Visual FoxPro 还提供四个根本容器类。Visual FoxPro 容器类命令按钮组选项按钮组表格页框假如要在表单中添加容器对象 从“表单控件工具栏上选择所需的容器对象的按钮表格、页框或按钮组,并在表单中拖动,调整到想要的大小。 在表单中添加命令按钮组或选项按钮组时,默认情况下,按钮组包含两个按钮。在表单中添加页框时,页框默认包含两个页面。将ButtonCount 属性或PageCount 属性设置为需要的数目,可以包含更多的按钮或页面。向表单中添加表格时,ColumnCount 属性的默认值为 -1,表示处于 AutoFill 状态。这样,在运行时表格将显示与 RowSource 表中的字段同样数量的列。如果不想处于“AutoFill状态,可以设置表格的ColumnCount 属性为指定列的数目。有关这些容器对象的详细内容,请参阅第十章“使用控件。收集和记数属性Visual FoxPro 中的所有容器对象都有与它们相关联的记数属性和收集属性。收集属性是引用其每个被包含对象的数组。记数属性是指示其包含的对象数的数值属性。每个容器的收集和记数属性根据包含在容器中的对象类型来命名。下表列出了容器与其相应的收集和记数属性。容器收集属性记数属性应用程序ObjectsFormsCountFormCount表单集FormsFormCount表单ObjectsControlsCountControlCount页框PagesPageCount页ControlsControlCount表格ColumnsColumnCount命令按钮组ButtonsButtonCount选项按钮组ButtonsButtonCount列ControlsControlCount工具栏ControlsControlCount容器ControlsControlCount控件ControlsControlCount这些属性以编程方式循环地处理所包含的所有或指定的对象。例如,以下几行代码设置在表格中列的BackColor 属性,以实现红色与绿色的交替出现功能: IF i % 2 = 0 &偶数列 o.Columns(i).BackColor = RGB(0,255,0) &绿色 ELSE o.Columns(i).BackColor = RGB(255,0,0) &红色 ENDIFENDFOR向表单中添加 Visual FoxPro 控件控件工具栏能使您很方便地在表单中添加任何一种标准的Visual FoxPro 控件。标准 Visual FoxPro 控件复选框超级列表框微调控件组合框图象ActiveX 绑定控件文本框命令按钮标签ActiveX 控件计时器编辑框线条形状假如要在表单中添加控件 在“表单控件工具栏中选择所需的控件按钮,在表单中单击或拖动按钮,把它调整到想要的大小。 有关选择控件的详细内容,请参阅第十章“使用控件。向表单中添加数据绑定型控件通过设置控件的ControlSource 属性为字段或表格的RecordSource 属性为表或视图,可使控件与表、视图、表的字段或视图字段中的数据相联系。但也可通过直接将表和视图从如下位置拖到表单中,以创建数据绑定型控件: “项目管理器 “数据库设计器 “数据环境设计器“表设计器中“字段选项卡的“匹配字段类型到类设置或“选项对话框的“字段映象选项卡的设置,是这种方法创建控件类的根底。有关设置默认控件类的详细内容,请参阅“表设计器或“选项对话框中的“字段映象选项卡。在表单中添加用户自定义对象Visual FoxPro 最强大的功能之一就是能创建在应用程序不同局部都可以使用和重复使用的类。如果创建了类,您就能将它们添加到表单中。假如要基于自定义类上添加对象 在“项目管理器中,将类拖动到容器中。 当给工具栏添加类时,也可直接从“表单控件工具栏中添加。在控件工具栏上添加类库类库必须在注册后才能在“表单控件工具栏中显示出来。假如要注册类库1. 从“工具菜单中选择“选项。 2. 在“选项对话框中选择“控件选项卡。 3. 选择“添加按钮。 4. 在“打开对话框中,选择一个要加到“选定列表中的类库,并选择“打开按钮。 5. 重复步骤 3 和4。 “选定列表中列出了类库中的类,在“表单设计器中可以和Visual FoxPro基类一样方便地使用这些类。“选项对话框的“控件选项卡提示 如果要在每次运行 Visual FoxPro 时“表单控件工具栏中的类库都有效,可在“选项对话框中,选择“设置为默认值。也可以在“表单设计器中直接注册类库。假如要在表单设计器中注册一个类库1. 在“表单控件工具栏中选择“查看类按钮。 2. 从子菜单中选择“添加。 “查看类按钮的子菜单。 在“打开对话框中选择要添加到“表单控件工具栏上的类库,然后选择“打开按钮。 从类库中添加对象到表单如果您从“选项对话框的“控件选项卡或从“查看类子菜单添加类库,您就能在“表单设计器中访问它们。假如要从“表单控件工具栏添加自定义对象1. 在“表单控件工具栏中,选择“查看类按钮。 2. 从已注册类库的列表中选择一个类库,它包含了要加到表单中的控件。 工具栏与选定库中的控件放在一起。已添加到“查看类子菜单中的用户自定义类库3. 单击所需要的控件,并在表单中拖动到适宜大小。 注释 如果想从“查看类工具栏中移去一个可视类库,可以在“选项对话框的“控件选项卡中,选择“选定列表中列出的一个可视的类库,然后选择“移去按钮。如果向不是基于 Visual FoxPro基类的表单添加对象,类库的相对路径.vcx 文件存储在表单的.scx 文件中。如果要将表单或类库移到另一个位置,在运行表单时 Visual FoxPro 将显示一个对话框,用于人工寻找类库。确定表单中的控件数目使用ControlCount 属性可以确定表单中究竞有多少个控件,而Controlsn 属性允许引用表单上的任何一个控件。下面的程序用于打印出当前活动表单上所有控件的Name 属性:ACTIVATE SCREEN &将输出打印到 Visual FoxPro主窗口 ? Application.ActiveForm.Controlsnt.NameENDFOR在表单中添加属性和方法程序可以向表单中添加任意多个新的属性和方法程序。属性拥有一个值,而方法程序拥有一个过程代码,当调用方法程序时,即运行这一过程代码。新建的属性和方法程序属于表单,您可以象引用其他属性或方法程序那样引用它们。新建属性如果已有一个表单集,那么在“表单设计器中参加的属性和方法程序就属于表单集。如果没有建立表单集,如此属性和方法程序属于表单。假如要在表单或表单集中添加新属性1. 从“表单菜单中选择“新建属性命令。 2. 在“新建属性对话框中,键入属性的名称。还可以参加关于这个属性的说明,它将显示在“属性窗口的底部。 在表单中添加属性创建数组属性数组属性和其他属性一样都属于表单或表单集,不同的是可用 Visual FoxPro 的数组命令和函数处理它。假如要创建一个数组属性1. 在表单中添加新属性。 2. 在“新建属性对话框的“名称框中键入数组属性的名称,包括数组的大小和维数。 例如,要创建一个 10 行的二维数组,应在“新建属性对话框的“属性名框中键入 arrayprop10,2。在表单中添加完数组属性后,属性在属性窗口中以只读方式显示。您可以在运行时刻管理数组,重新设置数组的维数,也可对数组属性的元素赋值。有关使用数组属性的示例,请参阅本章稍后的“管理表单的多个实例。创建新方法程序您可在表单中添加方法程序,并且可以用调用表单类方法程序的方式调用它。假如要在表单或表单集中创建一个新方法程序1. 从“表单菜单中选择“新建方法程序。 2. 在“新建方法程序对话框中,键入方法程序的名称。还可以包含有关这个方法程序的说明,这是可选的。 调用用户自定义方法程序和调用基类方法程序一样,都使用下面的语法:ObjectName.MethodName您建立的方法程序同样可以承受参数并返回值,这种情况下,您可以使用赋值语句来调用方法程序:cVariable =ObjectName.MethodName(cParameter,nParameter)包含预定义常量为了在方法程序中使用预定义常量,可在表单或表单集中用#INCLUDE命令包含一个头文件。头文件一般包含由#DEFINE 预处理器伪指令定义的编译时的常数。假如要在表单中包含文件1. 从“表单菜单中选择“包含文件。 2. 在“包含文件对话框的“包含文件文本框中指定文件。 -或者 -选择对话框按钮,打开“包含对话框并选定文件。3. 选择“确定。 处理对象在设计时刻有几种方法处理对象: 在“表单设计器窗口中通过拖动来设置对象的大小和位置。 选择“布局工具栏上的对齐工具,或者选择“格式菜单中的选项可以对齐控件。 在“调色板工具栏中选择前景和背景颜色来设置颜色。 在“属性窗口中设置属性。表单或表单集中对象的属性主要是在属性窗口中设置。 在设计时刻设置属性打开“属性窗口会显示选定对象的属性或事件。如果选择了多个对象,这些对象共有的属性将显示在“属性窗口中。要编辑另一个对象的属性或事件,可在“对象框中选择这个对象,或者直接从表单中选择这个控件。“属性窗口假如要设置属性1. 在“属性窗口中,从属性和事件列表中选择一个属性。 2. 在属性设置框中,为选中的属性键入或选择需要的设置。 注释 那些在设计时刻为只读的属性,例如对象的Class 属性,在属性窗口的属性和事件列表框中以斜体显示。如果属性要求输入字符值,不必用引号将这个值括起来。例如,要将一个表单的标题设为 CUSTOMER,只需在属性设置框中键入 CUSTOMER;假如想让表单的标题是“CUSTOMER,即想让引号也出现在窗口的标题上,在属性设置框中键入“CUSTOMER。使用表达式设置属性通过属性窗口,您可以将属性设置为表达式或函数的结果。假如要用表达式设置属性 在“属性窗口中,选择“函数按钮来打开“表达式生成器。 -或者 - 在属性设置框中键入“=号,并在后面键入表达式。 例如,如果您想设置表单的Caption 属性,使它在运行表单时能够指示当前的活动表,可在属性设置框中键入 =ALIAS( )。在属性窗口中设置一个属性表达式,以与在运行时刻或设计时刻初始化对象时,才对这个属性表达式进展求值。如果建立了对象,除非您或用户明确地改变它,属性设置都不会改变。疑难解答 如果将属性设置为用户自定义函数的结果,那么当设置或修改这个属性,以与运行表单时,将对这个函数进展求值。如果用户自定义函数出现错误,有可能打不开这个表单。也可以在对象的Init 事件中将属性设置为用户自定义函数,如下例所示:THIS.Caption = myfunction( )如果用户自定义函数出现错误,就不能运行表单,但可以修改它。定义表单行为当您在“表单设计器中设计表单时,表单是“活的:除非Visiable 属性设置为“假(.F.),您对表单的外观和行为的修改将立刻在表单上反映出来。如果将WindowState 属性设置为 1 最小化或2 最大化,表单设计器中的表单会立即表现这一设置。如果将Movable 属性设置为“假(.F.),那么不但用户在运行时刻不能移动表单,即使在设计时刻也不能移动它。因此您应该在设置那些决定表单行为的属性之前,先完成表单的功能设计,并添加所有需要的控件。下表列出了在设计时刻常用的表单属性,它们定义了表单的外观和行为:属性说明默认值AlwaysOnTop控制表单是否总是处在其他打开窗口之上。“假(.F.)AutoCenter控制表单初始化时是否让表单自动地在 Visual FoxPro 主窗口中居中。“假(.F.)BackColor决定表单窗口的颜色。255,255,255BorderStyle决定表单是否没有边框,还是具有单线边框、双线边框或系统边框。如果 BorderStyle 为 3 可调边框,用户就能重新改变表单大小。3Caption决定表单标题栏显示的文本。Form1Closable控制用户是否能通过双击“关闭框来关闭表单。“真(.T.)DataSession控制表单或表单集里的表是否能在可全局访问的工作区中打开,或仅能在表单或表单集所属的私有工作区内打开。1MaxButton控制表单是否具有最大化按钮。真 (.T.)MinButton控制表单是否具有最小化按钮。真 (.T.)Movable控制表单是否能移动到屏幕的新位置。真 (.T.)ScaleMode控制对象的尺寸和位置属性的度量单位是 foxels 还是像素。由“选项对话框中的设置决定。由“选项对话框中的设置决定。Scrollbars控制表单所具有的滚动条类型。0 - 无TitleBar控制标题栏是否显示在表单的顶部。1 - 打开ShowWindow控制表单是否在屏幕中、悬浮在顶层表单中或作为顶层表单出现。0 - 在屏幕中WindowState控制表单是否最小化、最大化还是正常状态。0 - 普通WindowType控制表单是否非模式表单默认还是模式表单。如果表单是模式表单,用户在访问应用程序用户界面中任何其他单元前必须关闭这个表单。0 - 无模式您可以使用LockScreen 属性,使控件布局属性在运行时的调整看起来更清晰。指定表单的图标在 Visual FoxPro for Windows 中,可指定表单的图标;当该表单在 Windows NT 窗口中最小化或位于 Windows 95 的标题栏上时显示为这个图标。如果要指定表单的图标,将表单的Icon 属性设置为一个 .ICO 文件的文件名。假如要指定表单的图标1. 打开表单。 2. 打开“属性窗口。 3. 将Icon属性设置为希望显示的.ico 文件。 编辑事件代码和方法程序代码事件是用户的行为,如单击鼠标或鼠标的移动,也可以是系统行为,如系统时钟的进程。方法程序是和对象相联系的过程,只能通过程序以特定的方式激活。有关事件和方法程序的讨论,请参阅第三章“面向对象程序设计。当触发事件或激活方法程序时,您可以指定要执行的代码。假如要编辑事件或方法程序代码1. 从“显示菜单中选择“代码命令。 2. 在“过程框中选择事件或方法程序。 3. 在编辑窗口中键入代码,在触发事件或激活方法程序时将执行这些代码。 例如,如果在表单上已有一个标题为“退出的命令按钮,在这个按钮的Click 事件中可包括这样一行代码:提示 假如要在代码编辑窗口中查看不同过程,请按 PGDN或 PGUP 键。当用户单击这个命令按钮时,表单被从屏幕和内存中删除。如果不想从内存中释放表单,可在 click 事件中以这样一行代码代替:注释 如果表单集、表单或表单集中任何表单上任何对象的Init 事件代码返回“假(.F.),就不能创建这个表单或表单集。保存表单在运行表单之前需要先将它保存。如果在未保存之前就试图运行这个表单或关闭表单设计器,Visual FoxPro 将提示是否保存已做过的修改。假如要保存表单 在“表单设计器中,从“文件菜单中选择“保存命令。 将表单和控件保存为类您也可以将表单或表单上的控件子集保存为类定义。如果您打算创建基于表单的子类,或在其他表单中重新使用这些控件,可将表单作为类定义来保存。假如要将表单或选定的控件保存为类定义1. 从“文件菜单中选择“另存为类。 2. 在“另存为类对话框中,选择“当前表单或“选定控件。 “另存为类对话框3. 在“类名框中输入类的名称。 4. 在“文件框中输入保存类的文件名。 5. 选择“确定按钮。 如果您没有给出文件扩展名,保存文件时会加上默认的.VCX 扩展名,如果将表单保存为类定义,您就可以用 MODIFY CLASS命令对它进展修改。有关创建类的详细内容,请参阅第三章“面向对象程序设计。运行表单您可以从界面直接运行表单,或在程序代码中运行表单。交互地运行表单有几种方法可以运行设计好的表单。如果在“表单设计器中工作,可通过单击“表单设计器工具栏中的“运行按钮测试表单。如果想在“表单设计器重新打开表单,关闭运行表单或在工具栏中选择“修改表单按钮。您也可以从项目中运行表单,或者以编程方式运行它。假如要以交互方式运行表单 在“项目管理器中,选择要运行的表单,再选择“运行按钮。 -或者 - 在“命令窗口中,使用DO FORM命令运行表单。 您也可以从“程序菜单中选择“运行来运行表单,在“文件类型框中选择“表单,选定一个表单再选定“运行按钮。从程序中运行表单假如想在程序中运行表单,需要在与事件相关联的代码、方法程序代码或在程序或过程中包含DO FORM命令。命名表单对象默认情况下,当使用 DO FORM命令时,表单对象的名称与 .scx 文件名称一样。例如,下面的一行代码运行 Customer.scx。Visual FoxPro 自动为这个表单创建一个名为 customer 的对象变量:DO FORM Customer假如要命名表单对象 请使用DO FORM命令的NAME 子句。 例如,下面的命令运行一个表单,同时创建两个表单对象变量名:DO FORM Customer NAME frmCust1DO FORM Customer NAME frmCust2处理表单对象如果在“命令窗口发出DO FORM命令,表单对象就和一个公共变量相关联,您可以通过这个变量名来访问表单对象。例如,在“命令窗口发出下面的命令,打开一个名为 Customer 的表单并改变它的标题。DO FORM CustomerCustomer.Caption = Hello如果在“命令窗口发出下面的命令,在活动的输出窗口中将显示 O,明确 Customer 是一个对象:? TYPE(Customer)如果在程序中发出DO FORM命令,表单对象作用X围限于这个程序,如果程序或过程运行完毕,会移去对象,但表单仍然可见。例如您可以运行下面这个程序:DO FORM Customer在运行完程序后,表单仍然可见,表单上的所有控件仍然处于活动状态,但 TYPE(Customer) 返回 U 明确 Customer 是没有定义的变量。因此在“命令窗口中发出下面的命令将产生错误:Customer.Caption = Hello但您还可以使用应用程序对象的ActiveForm、Forms 和FormCount 属性访问表单。将表单到表单对象变量DO FORM命令中的LINKED 关键字允许将表单和表单对象变量起来。如果包含了 LINKED 关键字,当与表单对象相关联的变量超出X围时,表单将被释放。例如,下面命令创建一个到对象变量 frmCust2 的表单:DO FORM Customer NAME frmCust2 LINKED当释放 frmCust2 时,表单也关闭。关闭活动的表单假如想允许用户通过单击“关闭按钮,或选择由这个表单控制的菜单中的“关闭命令来关闭活动的表单,需要设置表单的Closable 属性。假如要允许用户关闭活动表单 在“属性窗口中,将Closable 属性设置为“真(.T.)。 -或者 - 使用RELEASE命令。 例如,您可以通过在“命令窗口或程序中发出下面的命令来关闭和释放表单 frmCustomer:RELEASE frmCustomer也可以在一个控件,比如标题为“退出的命令按钮的Click 事件代码中包含下面的命令,它允许用户关闭和释放表单:可以在与表单的对象相关联的代码中使用RELEASE命令,但在 RELEASE 方法程序中却不会执行包含的任何代码。疑难解答 当释放表单时,同时也从内存中释放了为这个表单创建的对象变量。每一个表单集有一个单独的变量,因此不释放表单集就不能释放表单集中的表单。如果想要释放表单集,可使用 RELEASE THISFORMSET命令。如果想将一个表单从屏幕移去,不再让用户看见或使用它,可以使用 THISFORM.Hide命令。在运行时刻设置属性Visual FoxPro 中的对象模式能让您在运行时刻对属性进展充分的控制。在对象层次上引用对象假如想操作一个对象,需要确定它和容器层次的关系。在容器层次的最高级表单集或表单需要引用对象变量。除非使用DO FORM命令中的NAME 子句,否如此对象变量和.scx 文件有一样的名称。通过引用由点号 (.) 分隔的对象变量、控件和属性可以处理属性:objectvariable.form.control.property =Setting下表列出的属性或关键字使在对象层次上引用对象变得更容易:属性或关键字引用ActiveControl当前活动表单中具有焦点的控件ActiveForm当前活动表单ActivePage当前活动表单中的活动页Parent对象的直接容器THIS对象或对象的过程或事件THISFORM包含对象的表单THISFORMSET包含对象的表单集例如,假如要改变表单集中 frmCust 表单的一个命令按钮的标题,这个表单集保存在 Custview.scx 文件中,可在程序中或命令窗口中使用下面的命令:CustView.frmCust.cmdButton1.Caption = Edit可在表单或表单集中使用 THIS、THISFORM 和THISFORMSET 引用对象。例如,要想在单击命令按钮时改变它的标题,可在命令按钮的Click 事件代码中包含下面的命令:THIS.Caption = Edit下表给出了使用 THISFORMSET、THISFORM、THIS 和Parent 设置对象的示例:命令包含命令的地方THISFORMSET.frm1.cmd1.Caption = OK表单集中除frm1之外任何表单中任何控件的事件或方法程序代码。THISFORM.cmd1.Caption = OK所在表单中除 cmd1 之外任何控件的事件或方法程序代码。THIS.Caption = OK想要改变其标题的控件的事件或方法程序代码。THIS.Parent.BackColor = RGB(192,0,0)表单上一个控件的事件或方法程序代码。这个命令将表单的背景颜色改为暗红色。在运行时刻使用表达式设置属性在运行时刻也可以使用表达式或函数来设置属性。假如要在运行时刻用表达式来设置属性 为属性指定一个表达式。 -或者 - 为属性指定一个用户自定义函数的结果。 例如,根据一个变量的不同值,可以将一个按钮的标题设置为“Edit或“Save。首先在表单的调用程序中声明这个变量:PUBLIC glEditingglEditing = .F.然后在 Caption 设置中使用一个 IIF 表达式:frsSet1.frmForm1.cmdButton1.Caption = ; IIF(glEditing = .F., Edit, Save)可以决定按钮的大小,使用带有表的字段的表达式设置标题:*将按钮宽度设置为 Call 的宽度 +某某的宽度frmForm1.cmdButton1.Width = 5 + ; LEN(ALLTRIM(employee.first_name+ + employee.last_name)*将按钮标题设置为 Call +某某frmForm1.cmdButton1.Caption = Call + ; ALLTRIM(employee.first_name + + employee.last_name)还可以用一个用户自定义函数设置标题:frsSet1.frmForm1.cmdButton1.Caption = setcaption()设置多个属性可以同时设置多个属性。假如要设置多个属性 使用WITH . ENDWITH 结构。 例如,要设置表单中表格的列的多个属性,可在表单中任何事件或方法程序代码中包含下面的语句:.Width = 5.Resizable = .F.ForeColor = RGB(0,0,0).BackColor = RGB(255,255,255).SelectOnEntry = .T.ENDWITH在运行时刻调用方法程序调用对象的方法程序的语法是:如果创建了对象,您就可以在应用程序的任何地方调用这个对象的方法程序。下面的命令调用方法程序来显示表单并将焦点设置到一个命令按钮:*保存在中的表单集假如要隐藏表单,使用这个命令:对事件作出响应当事件发生时,包含在这个事件过程中的代码也被执行。例如,用户单击一个命令按钮,包含在这个命令按钮中的Click 事件过程中的代码也将运行。调用与一个事件相关联的过程代码并不使事件发生。例如,下面的语句执行 frmPhoneLog 的Activate 事件中的代码,但它并不激活表单:而调用表单的Show 方法程序可以显示和激活表单,此时 Activate 事件中的代码也被执行:处理对象的示例下面的例子在一个表单集中设置属性,并从不同对象中调用事件代码。示例的表单集中包含两个表单: frmLeft 和frmRight。表单设计器中的示例表单集左表单中的两个复选框和命令按钮中有与它们相关联的事件代码。左表单的文本框名称为 txtInput。左表单中对象的事件代码对象事件代码chkItalicClickTHISFORM.txtInput.FontItalic = ;chkBoldClickcmdClearClickTHISFORM.txtInput.Value = THISFORM.txtInput.FontBold = .F.THISFORM.txtInput.FontItalic = .F.THISFORM.chkItalic.Value = .F.THISFORM.chkBold.Value = .F.在同一表单中设置另一控件的属性使用 THISFORM 关键字或Parent 属性可在一个控件的事件代码中设置另一个控件的属性。当用户最初单击“斜体和“粗体复选框时,就执行下面两个命令,设置相应的文本框属性:THISFORM.txtInput.FontItalic = .T.THIS.Parent.txtInput.FontBold = .T.在这里,THISFORM 和THIS.Parent 可以互相更改。运行时的示例表单集cmdClear 的单击事件中的代码使用了 THISFORM,来重新设置表单上其他控件的值。设置另一表单的属性您也可以在一个表单中设置另一个表单的属性。右表单中包含有 5 个命令按钮,表单中的第一个按钮的Click 事件中有这样的代码:THISFORMSET.frmLeft.Caption = ; ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)注意在不同表单间设置属性时,必须引用表单集和表单。用户单击右表单上的“改变左表单的标题命令按钮右表单上的第二个命令按钮的单击事件代码演示了如何在表单的对象中设置另一表单的属性:THISFORM.Caption = ; ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)如果用户选择了这个按钮,右表单的标题将变为左表单中文本框中的值。访问不同表单中的对象下面的代码属于“改变粗体设置命令按钮的Click 事件,它改变左表单中的“粗体复选框,调用与这个控件相关联的事件代码。THISFORMSET.frmLeft.chkBold.Value = ;例子中的最后一行调用了 chkBold 的InteractiveChange 事件。也可用下面的命令调用此过程。THISFORMSET.frmForm1.chkBold.InteractiveChange( )如果忽略这个过程调用,虽然复选框的值会改变,但文本框的FontBold 属性永远不会相应地改变。用户单击右表单上的“改变粗体设置命令按钮检查另一表单的属性和调用另一表单的方法程序代码下面的代码属于“隐藏左表单命令按钮的Click 事件,它用于隐藏或显示表单,并根据Visible 属性的值相应地改变按钮的标题。 THIS.Caption = Show Left FormELSE THIS.Caption = Hide Left FormENDIF注意控件事件代码中使用了 THIS 关键字来引用这个控件的属性。用户单击右表单上的“隐藏左表单命令按钮下面的代码属于“退出命令按钮的Click 事件,用于释放表单集,关闭所有的表单:RELEASE ThisFormSet管理表单下面的过程说明在应用程序中有关管理表单的常见任务。隐藏表单您可以隐藏一个表单,使它不可见。在隐藏表单后,用户不能访问表单上的控件,但您仍可以用程序完全控制它们。假如要隐藏表单 请使用Hide 方法程序。 例如,在与命令按钮的Click 事件相关的代码中,您可以包含下面一行代码:当用户单击命令按钮时,表单仍在内存中,但不可见。释放表单当用户完成对表单的操作后,您可以让用户释放表单。在释放表单后,您就不能再访问表单的属性和方法程序了。假如要释放表单 请使用RELEASE命令。 例如,在与命令按钮的Click 事件相关的代码中,您可以包含下面一行代码:当用户单击命令按钮时,表单被关闭。将参数传递到表单在运行表单时,为设置属性值或者指定操作的默认值,有时需要将参数传递到表单。假如要将参数传递到在表单设计器中创建的表单1. 创建容纳参数的表单属性,如 ItemName 和ItemQuantity。 2. 在表单的Init 事件代码中,包含PARAMETERS 语句: 3. PARAMETERS cString, nNumber4. 在表单的
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!