资源介绍
vf6.0,要考二级没系统的下哈 Microsoft Visual FoxPro 6.0 for Windows
的常见问题
这些是有关 Microsoft Visual FoxPro 最常见的问题。在您求助 Microsoft 产品支持服务之前,请先查阅这张列表。
若想打印这些附注,请从“文件”菜单中选择“打印”命令。此文档分为以下四部分:
---------------------------------------------------------------------
部分 1. 技术支持与市场
部分 2. Visual FoxPro 6.0 新增功能
部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植
部分 4. Visual FoxPro 常见问题
---------------------------------------------------------------------
部分 1. 技术支持与市场
问题 1-1: 从何处可以获得产品的更新版本?
答案: 在 Visual FoxPro 的 Web 站点上即可获得产品的更新信息,其中包括有关 Service Pack 和更新的示例、向导及其他代码的信息,该站点的网址为:
www.microsoft.com/vfoxpro
请定期查看该网站,以便下载产品的最新版本。
问题 1-2: 从何处可以得到有关 Visual FoxPro 的详细资料?
答案: 通过 Microsoft Visual FoxPro Web 站点是随时获得各种最新产品发布信息的最佳途径。在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。
问题 1-3: 如何获得技术支持,以及如何报告软件错误?
答案: Microsoft Visual FoxPro Web 站点已经链接到了多种联机支持选项,其中包括覆盖面广阔的有关所有产品 Microsoft Knowledge Base(Microsoft 知识库)。您还可以阅读一份有关常见问题的清单。除联机支持之外,还可以直接通过电话获得技术支持。“帮助”菜单中的选项可列出技术支持的电话号码。这些电话号码也可用于报告产品中的错误。
问题 1-4. 什么是 Knowledge Base?如何使用它?
答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base:
support.microsoft.com
问题 1-5: 是否会有 Visual FoxPro 6.0a?
答案: Microsoft 公司一向承诺为用户提供高质量的产品。如果确实需要,我们将提供 Visual FoxPro 6.0 的错误修订版。但是,修订版不会使用 6.0a 版的形式。Visual FoxPro 6.0 中任何错误的修正都将包含在 Visual Studio Service Pack 中。同时还会在 Visual FoxPro 的 www.microsoft.com/vfoxpro 或 Visual Studio 的www.microsoft.com/vstudio 的 Web 站点上发布修订公告。
问题 1-6: Microsoft 公司为应用程序的开发提供了一些优秀的解决方案。怎样才能知道应该向客户推荐和使用哪种产品?
答案: 在选择适用某项任务的产品时,需要考虑多方面的因素。Microsoft Visual FoxPro web 站点上有一份优秀的策略背景论文,它比较了 Visual FoxPro、Visual Basic、SQL Server 和 Access 等 Microsoft 产品之间的不同。
问题 1-7: 哪里可以找到 Visual FoxPro 的使用示例?
答案: Visual FoxPro 6.0 产品中带有丰富的示例,其中有一些是针对 6.0 版特有功能的新示例。与 Visual FoxPro 以前的版本不同,这些示例将与所有 Visual Studio 示例安装在一起。您必须运行 MSDN Library 的“自定义”安装来安装这些示例。在 Visual FoxPro 中可使用新的 HOME(2) 函数方便地找到已安装示例的位置。
除了产品中所自带的示例外,Microsoft Visual FoxPro web 站点还将经常提供新的示例。
问题 1-8: 我可能会在 Microsoft web 站点上读到一篇文章,并看到 Visual Basic 和 Visual C++ 的代码。这是否意味着我不能使用 Visual FoxPro?
答案: 并不是这样的。尤其是在调用和使用对象时,Visual Basic 和 Visual FoxPro 的语法几乎是相同的。您可以将 Visual Basic 的代码很快地转换成符合 Visual FoxPro 语法的代码。语法上的相似还意味着,Visual Basic 书籍和杂志上的代码也将有助于 Visual FoxPro 的开发人员。
问题 1-9: 多年来我一直在使用 Visual FoxPro?有什么理由需要升级到 Visual Studio?
答案: Microsoft Visual Studio 是专业开发人员的终极应用程序开发解决方案。随着应用程序的开发越来越集中到集成客户/服务器和 Internet 的基于组件的系统,也就需要有一种完善的工具来满足当今开发人员的需要以及不断变化的商务需要。Microsoft Visual Studio 为专业开发人员提供了一整套完整的开发工具。Visual Studio 专业版包括 Visual FoxPro、Visual Basic、Visual C++、Visual J++ 和 Visual InterDev。Visual Studio 企业版除了以上五种工具外还包括 Visual SourceSafe 和 SQL Server。
问题 1-10: 我怎样才能获得其他的市场信息。
答案: 请将电子邮件发往以下地址:
foxmktg@microsoft.com
---------------------------------------------------------------------
部分 2. Visual FoxPro 6.0 新增功能
问题 2-1: Visual FoxPro 6.0 中有哪些新增的功能?
答案: 在 6.0 版本中有很多激动人心的新特性,其中包括自定义自动服务程序 (Automation server) 的改进,Active Document、OLE 拖放支持、Access 和 Assign 方法程序、组件管理库等。有关新特性和新语言的详细内容,请在 MSDN Library 浏览器的 Visual FoxPro 起始页上单击“新增功能”。
问题 2-2: 什么是 Active Document,什么时候需要用到它?它与 Visual Basic 中的 Active Document 有什么不同?
答案: Active Document 是在 Intranet 上配置 Visual FoxPro 应用程序的一种方法。您可以使用 Active Document 在 Microsoft Internet Explorer 浏览器中直接运行由 Visual FoxPro 创建的包含有 Visual FoxPro 代码的表单。
在 Visual Basic 中,Active Document 只是稍做修改的表单,目的是支持 Internet Explorer 的特性。Visual FoxPro 中的 Active Document 与其稍有不同。ActiveDoc 类是一个非可视类,它的功能更类似于一种应用程序对象,用于处理在浏览器中运行已有的 Visual FoxPro 表单所需的事件。因此,不需要转换表单。另外还加入了一些新的属性,如表单的 ScrollBars 和 TitleBar 属性,以便包容到 Internet Explorer 中时可以与其用户界面标准保持一致。
应该注意,在 Internet Explorer 所运行的 Visual FoxPro ActiveDoc 只是一个应用程序文件(.app),它也可以在 Visual FoxPro 中直接运行。也正由于这个原因,需要有 Visual FoxPro 的运行时刻版本。Active Document 更适用于 intranet 环境,这是由于大多数用户是使用调制解调器访问 Internet 的,因此在 intranet 环境中对下载大型 Visual FoxPro 运行时刻文件的限制要宽松得多。值得庆幸的是,运行时刻文件只需下载一次。
问题 2-3: 与 Visual FoxPro 5.0 中的拖放相比,OLE 拖放有什么不同?
答案: 在此版本之前,Visual FoxPro 支持表单与表单上控件之间的拖放。这类拖放只能用于 Visual FoxPro,也就是说其他非 Visual FoxPro 应用程序不能参与拖放操作。
在此版本中,Visual FoxPro 能支持真正的 OLE 拖放,它与其他基于 Windows 的应用程序的拖放完全相同。现在您的应用程序可以使用此标准在 Microsoft Excel 和 Word 等其他应用程序之间拖放数据。
问题 2-4: 为什么有两个应用程序向导?
答案: 为了简化 Visual FoxPro 开发人员开发应用程序的过程,在 6.0 版中加入了很多新特性,其中包括新的应用程序框架、应用程序生成器、和组件管理库。为保持向后兼容性,也保留了 5.0 版中的旧应用程序向导。新的向导只需提供项目名和位置,这大大简化了整个应用程序的创建过程。
问题 2-5: Project 对象和 ProjectHook 对象之间有什么区别?
答案: 当打开一个项目文件 (.pjx) 时,就会创建一个 Project 对象。此项目可以用以下代码引用:
_VFP.ActiveProject
Project 对象拥有“项目信息”对话框中所有信息的相关属性,其中包括文件和服务程序的集合。
由于开发人员常希望与项目有关的各种事件进行交互,比如添加文件或进行连编,因此需要创建一个新类 (ProjectHook) 来支持这些事件的代码。
项目的 ProjectHook 类是可选的。如果象在“项目信息”对话框中指定的那样,把 ProjectHook 类指定给一个项目,那么此类就会在项目打开时实例化(这包括 BUILD APP 等命令),而在项目关闭时被销毁。
问题 2-6: 如何在 列表框 (ListBox) 控件中添加复选框?
答案: 支持向 Visual FoxPro 内部的列表框控件添加复选框是一种较为普遍的要求。在新版的 Microsoft ActiveX ListView 控件及 Treeview 控件中已可以支持复选框。这些控件都包含在 Visual FoxPro 6.0 中(请参阅问题 2-7)。
问题 2-7: 我的 Visual FoxPro 5.0 表单中包含有 ListView 或 TreeView 控件,它们不继承其新版本中的最新功能(如支持复选框)。已发布的应用程序中,由于带有这些表单,而在最终用户的机器上出现表单 OLE 错误,因此无法正常工作。
答案: 在 6.0 版中,包含有以下 ActiveX 控件的文件,其名称已从 Comctl32.ocx 更改为 Mscomctl.ocx:
Microsoft ListView Control
Microsoft TreeView Control
Microsoft ImageList Control
Microsoft ProgressBar Control
Microsoft StatusBar Control
Microsoft Slider Control
Microsoft Tabstrip Control
Microsoft Toolbar Control
纵使 Visual FoxPro 6.0 更新成新的 Mscomctl.ocx 文件,带有这些控件的旧的 5.0 版表单将仍引用旧的文件,因为 ActiveX 控件是由其 OleClass 属性绑定的。旧 Comctl32.ocx 文件中的 ActiveX 控件为版本 1。例如,5.0 表单上 ListView 控件的 OleClass 属性将是:
COMCTL.ListViewCtrl.1
Mscomctl.ocx 文件中新的 ActiveX 控件为版本 2(或更高)。例如:
COMCTL.TreeViewCtrl.2
Visual FoxPro 不会自动升级控件,因此在发布应用程序时必须知道表单使用的是哪种版本的 ActiveX 控件。
问题 2-8: 是否可以在 Visual FoxPro 6.0 中创建用户自定义集合?
答案: Visual FoxPro 5.0 不直接支持创建类似于对象数组的集合。Form 对象的 Controls 属性就是一种集合。Visual FoxPro 6.0 支持 Access/Assign 方法程序,它们可以用于创建真正的用户自定义集合。在 Solutions 示例应用程序中有一个很好的相关示例。
问题 2-9: 为什么 Visual FoxPro 5.0 自动 服务程序无法与 Microsoft Transaction Server 或 Active Server Page 协同工作?
答案: 6.0 版中做了一些服务程序的改进,包括支持套件模型线程以使服务程序的比例范围更佳,并使其在 Active Server Page 和 Transaction Server 中的运行更平滑。类型库的改进使 Visual Basic 等应用程序可以在命令完成清单(command completion dropdown)中看到属性和方法程序。
您可能在使用 Visual FoxPro 6.0 或 5.0 自动 服务程序与 Microsoft Transaction Server 2.0 时还碰到过远程进程调用错误。如果有这样的情况,请确认您至少有 Transaction Server 2.0 的 Service Pack 1 或更高的版本。
问题 2-10: 我希望使用 Visual FoxPro 6.0 编写 Internet 应用程序,在版本中有很多新特性可利用。我应该从哪里着手呢?
答案: Visual FoxPro 提供了众多的工具可以用于创建 Web 应用程序。
新的“Web 发布向导”和 GENHTML 特性都是优秀的工具,可用于生成各种形式的 HTML 以发布 Visual FoxPro 的数据。您可以根据自己的需要,选择生成静态和动态的 HTML。您甚至可以使用“Web 发布向导”来生成脚本,它可以在运行时刻执行,以重新生成 HTML。
Visual FoxPro 还支持创建 COM 组件(以前称为 自动 服务程序),可以用做应用程序的中层对象。可以通过 ODBC 或 ADO 访问和处理 Visual FoxPro 内部数据,或处理商务规则来配置这些对象。还可以在 Active Server Page 和 Microsoft Transaction Server 中直接访问 Visual FoxPro COM 组件。您还可以使用 Visual FoxPro 中所带的 FOXISAPI 扩展功能。可以使用 Microsoft Internet Information Server 调用该扩展功能,通过启动一个可以直接返回 HTML 的方法程序,向 Visual FoxPro COM 组件发出 HTML 请求。
新的 Active Document 技术也可以用于在 Intranet 环境中运行已有的 Visual FoxPro 表单。由于需要 Visual FoxPro 运行时刻,因此它并不是在 Internet 上展开的理想方法。
问题 2-11: 为什么在运行时刻修改表单新的 Scrollbars 属性时,表单上并不显示滚动条?
答案: 在表单建立之前,Visual FoxPro 会读入表单的 Scrollbars 属性设置,因为此属性的值将决定表单的创建方式。如果 Scrollbars 属性的设置为 0(没有滚动条),Visual FoxPro 将创建一个 Visual FoxPro 5.0 式的轻型(light-weight)表单。如果 Scrollbars 属性设置为非 0 值,则 Visual FoxPro 创建的表单将会占用更多的内存。在设计应用程序,请记住,带滚动条的表单需要更多的内存。
如果在设计时刻将 Scrollbars 属性设置为 0,则在运行时刻 Scrollbars 属性将是只读的,因为 Visual FoxPro 最初创建的是一个轻型表单。但是,如果在设计时刻 Scrollbars 属性设置为非 0 值,Visual FoxPro 就会允许在运行时刻对 Scrollbars 属性进行读写,因为有代码可调用 SAVEAS() 函数以创建一个带有滚动条的新表单。如果您不需要带滚动条的表单(例如,带页面框架的表单),那么请在运行时刻将 Scrollbars 属性设置成 0 以节省内存。
如果在设计时刻将 Scrollbars 属性设置为非 0 值,您就可以在运行时刻改变 Scrollbars 属性的值。但是,如果您将 Scrollbars 属性的值改为 0,则 Visual FoxPro 将会隐藏表单上的滚动条,但并不会创建一个新的轻型表单。
---------------------------------------------------------------------
部分 3. 从其他版本的 FoxPro 和 Visual FoxPro 中移植
问题 3-1: 将 Visual FoxPro 5.0 应用程序移植到 Visual FoxPro 6.0 时,需要注意哪些问题?
答案: Visual FoxPro 5.0 应用程序可以直接在 Visual FoxPro 6.0 中运行。如果 5.0 版应用程序中的代码引用了系统菜单(如 _msystem),则必须重新编译代码。您也可以在 6.0 中创建应用程序,然后在 5.0 中运行它们。但是,如果这样做,您的代码就不能包含任何 6.0 的新语言。数据库可以在两种版本之间共享。
菜单 (.mnx) 文件的格式有了一些小修改,以支持新的 ActiveDoc。如果试图在 6.0 中打开 5.0 的菜单,则系统将提示您将其转换成新的格式。
新的菜单文件格式将兼容 5.0 版的 GENMENU,及其他读取 .mnx 文件的 XBase 实用工具。但是 Visual FoxPro 5.0 的菜单设计器将不能打开 6.0 的格式。使用以下的命令可将 6.0 的 .mnx 文件转换回 5.0 格式:
ALTER TABLE mymenu.mnx ALTER COLUMN location N(1)
但是,这样做时,菜单的 NEGOTIATE 信息可能会丢失或破坏。
项目 (.pjx) 文件的格式没做修改,但是,新的 ProjectHook 信息将存储在这些文件中。因此,如果使用的 6.0 项目带有 ProjectHooks (它是可选的),那么应避免在 5.0 中打开它们。
请参阅“帮助”中的“升级”部分。
问题 3-2: 为什么必须运行 SYS(2333,0) 才能使各种 ActiveX 控件在 Visual FoxPro 5.0 中正确工作?
答案: 在 Visual FoxPro 6.0 中默认的是 SYS(2333,0),因此就不再需要运行它了。建议将 _vfp.AutoYield 也设置成 .F. 。
问题 3-3: 将 Visual FoxPro 3.0 应用程序移植到 Visual FoxPro 6.0 时,需要注意哪些问题?
答案: 在 Visual FoxPro 3.0 中编写的应用程序在 Visual FoxPro 6.0 中运行之前需要重新编译,因为两种版本之间的对象代码并不是二进制兼容的。
3.0 和 5.0 的数据库 (.dbc) 文件格式有了变化,因此不能在用 3.0 和 5.0 中编写的应用程序之间共享数据库,除非 3.0 的用户使用远程视图通过 Visual FoxPro ODBC 驱动程序访问数据。
3.0 和 5.0 的表单 (.scx) 文件和类 (.vcx) 文件的格式稍有不同(请参阅问题 3-5)。和 5.0 版一样,当在 6.0 版中打开 3.0 版的表单或类时,将会自动运行转换工具。
5.0 版中的项目文件做了更新以支持源代码管理集成。因此 3.0 版的项目在 6.0 中打开时会自动转换以支持源代码管理。
有关 5.0 和 6.0 版之间菜单和项目文件的差异的详细内容,请参阅问题 3-1。另外也可参阅“帮助”中的“升级”部分。
问题 3-4: 什么是 Visual FoxPro 的跨平台策略?
答案: 请参阅上面的问题 3-2,因为 Visual FoxPro for Macintosh 的现有版本是 3.0 版。对于 Visual FoxPro for Windows 的开发人员有多种跨平台解决方案可供考虑。假设 Mac 机用户以 Microsoft Internet Explorer for Macintosh 为前端平台。Visual FoxPro 6.0 自动 服务程序可用来访问 Fox 数据,并将其按 HTML 格式输出。FoxISAPI 实用工具(带有对 6.0 中新缓冲(pool)管理器的支持)就是这样的一种解决方案。
问题 3-5: 如果在 Visual FoxPro 6.0 中编辑或运行 Visual FoxPro 3.0 的表单,字体会小一些,而且没有粗体。为什么会出现这样的问题,如何避免?
答案: 为了使表单的创建更为简单,我们采用了 Windows 95 的标准,改变了控件的一些默认属性,其中包括 FontSize、FontBold 及 ColorSource。如果在 Visual FoxPro 3.0 中,它们被设置成默认值,那么在 Visual FoxPro 6.0 中它们仍将保持默认值。但是由于两种版本的默认值是不同的,因此文字的显示会有所不同。
如果希望表单的显示保持其在 Visual FoxPro 3.0 中的样子,请将它们转换成项目的一部分。然后当您在 Visual FoxPro 6.0 中打开 Visual FoxPro 3.0 项目时,请选中“转换器”中的“保留 Visual FoxPro 3.0 属性默认值”复选框。
问题 3-6: 将 FoxPro 2.x 应用程序移植到 Visual FoxPro 6.0 上时需要注意哪些问题?
答案: 对于 FoxPro 开发人员,Visual FoxPro 3.0 是一次重要的升级。事实上,由于风格的变化(请参阅问题 3-7),一些人认为 Visual FoxPro 有了一个全新的产品。由于新的面向对象风格,大多数的文件格式都发生了改变。
Visual FoxPro 中带有一个“转换器”实用程序,它可以处理各种文件格式的转换。但是除了可视的用户界面外,它无法将过程式的代码转换成面向对象的代码。需要知道的是,已有的 FoxPro 2.x 代码可以直接运行。我们建议在可能的情况下,将原有的源代码转换成面向对象的代码,以充分利用各项新特性,同时也可提高开发效率。
Visual FoxPro 中最受欢迎的特性之一就是支持真实的数据库(如,表格的集合)。在 FoxPro 2.x 及更早的版本中,“数据库”通常就是指“表格”。
请参阅“帮助”中的“升级”部分。
问题 3-7: 什么时候需要用面向对象的编程方法(OPP)来代替过程式编程?可视化地创建类与通过编程创建类,哪种更好?
答案: 如果您愿意,您仍然可以在 Visual FoxPro 中使用过程式的编程风格。大多数 FoxPro 2.x 版程序都是以过程式风格编写的,它们只需稍做修改即可在 Visual FoxPro 中运行。
但是,在以下这些情况下,请考虑使用 OOP 编程风格:
1. 您的机构正致力于为新的编程项目建立结构化的、可分析的过程。
2. 您愿意花费必要的人力物力开发一个可复用的代码库,而且并不在乎是否能在此项目完成时即收回成本。
3. 您希望充分利用 Visual FoxPro 事件处理、通用代码语法和其他与 OPP 有关的优点。
当您通过编程创建一个类时,您必须了解完成此工作所必需的所有命令,但是您也可以随时检查代码的任何部分。如果可视化地创建一个类,您就不需要了解完成此工作所必需的所有命令,但是您必须查看每一个方法程序。Visual FoxPro 的一大优点是可以将由代码定义的类加入到表单中,再将实例化的对象存储为类,然后再可视化地编辑这些类。这一功能,再加上通过“类浏览器”导出代码的能力,即可将这两种类设计工具完美地结合在一起。
问题 3-8: 如果客户的数据需要扩充,怎样才能将 Visual FoxPro 数据移植到 Microsoft SQL Server 上?
答案: Visual FoxPro 中带有升迁向导,可以将 FoxPro 数据库移植到 SQL Server 或 Oracle 上。在此向导中,可选择在数据库中自动创建远程视图以访问新的 SQL Server 数据。这种方法可以尽可能少地修改那些已有的用于访问数据的表单和报表。
问题 3-9: 为什么有一个新的 Mscomctl.ocx 文件?是否还需要一个新的 Comctl32.ocx 文件?有什么潜在的问题?
答案: Visual FoxPro 5.0 的 Comctl32.ocx 文件中包含有以下 ActiveX 控件:
Treeview
Listview
Slider
Imagelist
Status Bar
Tabstrip
Progress Bar
Toolbar
在 Visual FoxPro 6.0 中,这些控件的更新版本将出现在新的 Mscomctl.ocx 文件中。这样做的主要原因是,在这些控件中加入了支持复选框和 hover 等新特性。
Visual FoxPro 开发人员应注意以下一些问题:
- Visual FoxPro 不会自动更新表单上的 ActiveX 控件以使用更新的版本。因此,那些使用了 Treeview 等控件的表单仍将引用旧的 Comctl32.ocx 文件。
- 当控件加入到表单中后,就不能再改变其版本了。这样做的目的是,当出于某些原因,新的 ActiveX 控件版本不具有向后兼容性时,它们不会破坏原有的代码。
- 通过在“属性”窗口中查看控件的 OleClass 属性,即可确定控件的版本。
例如:
COMCTL.ListViewCtl.1 (新的 Comctl32.ocx 版本)
COMCTL.ListViewCtl.2 (新的 Mscomctl.ocx 版本)
- 当所创建的表单需要发布时,必须知道其所使用的控件版本。如果所有的表单都使用了旧的 Listview 控件,您就不需要附带新的 Mscomctl.ocx 文件。通过“安装向导”可选择在要发布的应用程序中包含哪些特殊文件。
- 对于在一台机器上同时安装并注册了 Comctl32.ocx 和 Mscomctl.ocx 控件的开发人员来说,还必须确认 Mscomctl.ocx 总是最后注册的。当向表单添加 ActiveX 控件时,“插入对象”对话框将会显示一份控件清单。对话框中有可能不显示这些控件的最新版本。
现有的版本并不总是最新的版本,它只是最后注册的版本。因此,如果无意中在安装完 Visual FoxPro 后注册了 Comctl32.ocx,您可以从 Windows“开始”菜单中的“运行”对话框中运行 Regsvr32.exe,即可重新将 Mscomctl.ocx 文件注册。例如,运行:
REGSVR32 c:\Windows\System\Mscomctl.ocx
这可以保证所安装的总是这些 ActiveX 控件的最新版本。
---------------------------------------------------------------------
部分 4. Visual FoxPro 常见问题
问题 4-1: 当启动应用程序的 .EXE 文件时,如何隐藏 Visual FoxPro 桌面?
答案: 在 CONFIG.FPW 配置文件中添加如下命令行:
SCREEN=OFF
注意:如果您无须将 CONFIG.FPW 作为单独的文件提供(也就是说,在连编 .EXE 文件之后,您不需要对它作任何改动 -- 您可向项目中添加 CONFIG.FPW 文件,并将之标记为可包含的,该文件就会连编为 .EXE 文件的一部分。只有顶层表单活动时,Visual FoxPro 才可以隐藏桌面。使用如下命令,您可以用编程方式隐藏桌面(假设已有一个顶层表单处于活动状态中):
_VFP.Visible = .F.
问题 4-2: 如何建立一个带有顶层菜单的顶层表单?
答案: 要建立一个顶层表单,请将表单的 ShowWindow 属性设置为 2- 作为顶层表单。要建立一个顶层菜单,请打开“菜单设计器”。从“显示”菜单中,选择“常规选项”,然后设置“顶层表单”选项。要想将顶层菜单放入顶层表单中,请在表单的 Init(或其他)事件中添加相关的代码。例如:
DO