彩票走势图

ActiveX控件 Xtreme Suite Pro配置教程:内置11种界面开发必备控件,满足你的各种需求!

翻译|使用教程|编辑:鲍佳佳|2021-07-16 11:23:42.570|阅读 598 次

概述:该套包提供了Windows开发人员所需要的11种最受欢迎的控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和 Task Panel。本文主要讲解ActiveX组件的配置和以及如何注册。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

Xtreme Suite Pro是为Windows开发人员提供的用于ActiveX COM的用户界面套包,创建包含完整的高度可自定义的用户界面组件(包括Visual Studio样式对接窗格和Office样式功能区,工具栏和菜单),以使您的应用程序具有现代外观。该套包提供了Windows开发人员所需要的11种最受欢迎的控件,包括Command Bars、Controls、Chart Pro、Calendar、Docking Pane、Property Grid、Report Control、Shortcut Bar、Syntax Edit、Skin Framework 和 Task Panel。

点击下载Xtreme Suite Pro最新试用版

Codejock ActiveX 组件是独立的 .OCX 文件,必须在将使用它们的目标计算机上复制和注册。一个组件 (.OCX) 文件公开了一组使用它提供的控件所必需的类和接口。这些控件可以在任何开发环境和任何支持 ActiveX 技术的编程语言中使用。

使用 ActiveX 组件和相关语言相关问题的方法超出了本文的范围,因为它对于每种编程语言都是独一无二的。假定开发人员熟悉与他选择的编程语言相关的 ActiveX 概念和最佳实践。

本文解释了以下相关问题:

  1. 选择正确的组件配置
  2. 注册组件
  3. 版本控制组件
  4. 许可组件
  5. 已知问题和解决方法

选择正确的组件配置

每个 Codejock ActiveX 组件都有 3 种配置:

  1. 32 位 ANSI
  2. 32 位 Unicode
  3. 64 位 Unicode

组件文件名反映其配置,例如:

  • Codejock.ChartPro.v18.0.1.ocx - 32 位 ANSI
  • Codejock.ChartPro.Unicode.v18.0.1.ocx - 32 位 Unicode
  • Codejock.ChartPro.Unicode.x64.v18.0.1.ocx - 64 位 Unicode

 选择与您的主机应用程序兼容的正确配置很重要,因为 Windows 不允许在一个地址空间中混合模块的位数,旧的编程语言不支持 Unicode 字符集。

可能的安装选项是:

  1. 仅当您的应用程序不支持 Unicode 时才安装 32 位 ANSI 组件,例如启用多字节字符集的 Visual Basic 6 应用程序或 32 位 C++ 应用程序。
  2. 仅当您的应用程序支持 Unicode 时才安装 32 位 Unicode 组件,例如具有 x86 TargetCPU 的C# 应用程序、32 位 Microsoft Office 应用程序或启用 Unicode 字符集的 32 位 C++ 应用程序
  3. 如果您的应用程序是 64 位应用程序,则同时使用 32 位和 64 位 Unicode 组件,例如具有 x64 或AnyCPU TargetCPU 的C# 应用程序、64 位 Microsoft Office 应用程序或启用了 Unicode 字符集的 64 位 C++ 应用程序。即使不使用 32 位 Unicode 组件,安装 32 位 Unicode 组件也
    很重要,因为 Windows 操作系统要求所有 64 位 COM 对象都安装相应的 32 位组件。
  4. 还可以安装三种配置以涵盖所有可能的用例。

组件可以安装到至少对安装组件的所有潜在用户都是只读访问的任何位置。

注册组件

仅将组件文件复制到目标位置才能使用它是不够的,它们必须注册并包含许可证(在下一节中描述)。即使在开发机器上安装 SuitePro 或独立的 ActiveX 组件后,也必须在使用组件之前注册必要的配置。

可以使用安装包中包含的Registrator工具在开发机器上注册组件。通常可以在以下位置找到它:%ProgramFiles(x86)%\Codejock Software\ActiveX\Xtreme SuitePro ActiveX v18.0.1\Bin\Registrator.exe

注册人

如果组件与应用程序一起分发,则必须在应用程序安装期间注册每个 .OCX 模块。通常,这可以通过使用以管理员身份执行的%SystemRoot%\System32\regsvr32.exe工具来实现,例如使用此命令行进行静默日历注册:

regsvr32.exe /s Codejock.Calendar.v18.0.1.OCX

或此命令行用于静默注销日历组件:

regsvr32.exe /s /u Codejock.Calendar.v18.0.1.OCX

重要的是要了解应该注册组件的目标机器可能已经注册了相同版本的 Codejock 组件。虽然重新注册相同版本的组件没有坏处,但如果使用 Codejock 组件的应用程序被卸载,取消注册组件可能会破坏依赖于这些组件的其他应用程序。有两种方法可以解决此问题:

  1. 在应用程序卸载期间保持 Codejock 组件完整。这会造成污染,但无需额外的努力即可提供最佳的稳定性保证。
  2. 向您的应用程序添加引导程序,以确保在执行应用程序之前正确注册必要的组件。如果检测到未注册的组件,引导程序会触发重新安装流程。

如果需要手动检查 Codejock 组件注册,可以使用来自 Windows SDK 的标准 OLE 查看工具:

注册人

版本控制组件

每个 ActiveX 组件都有一组唯一的类、接口和类型库 ID,与它注册到系统相关。为了避免版本冲突,所有 Codejock 组件都会在每个新版本中重新生成它们的 ID。

虽然这确保了相同组件但不同版本的 2 个或多个安装可以独立地共存于同一系统中,但它使开发机器上的组件升级过程比仅安装较新版本要复杂一些。根据开发环境和编程语言,这种情况可以通过不同的方式和不同的副作用来解决。

例如,项目加载期间的 Visual Basic 6 IDE 可以确定引用的组件有可用的更新版本,并提示自动升级现有组件。不幸的是,Microsoft Office 在 ActiveX 组件升级方面不如 Visual Basic 6 IDE 灵活,它不会提示自动升级,而是仅使用当前组件版本,或者如果控件不存在则根本不实例化控件,即使有更新的版本可用。在这种情况下,升级控件的唯一方法是删除旧控件并插入新控件并重新存储以前的属性。

许可组件

所有 Codejock ActiveX 组件都需要有有效的许可证才能运行。ActiveX 许可证不应与付费订阅混淆,它只是一个小的文本文件 .LIC,每个 .OCX 文件必须与 .OCX 文件一起分发,这并不意味着任何额外费用。

当您将 Codejock 组件与您的应用程序一起分发时,有两种方式可以包含许可证:

  1. 作为单独的 .LIC 文件(最好)
  2. 嵌入到应用程序中

将许可证作为单独的 .LIC 文件分发

这是分发许可证的一种更可取且最简单的方法。所需要做的只是将每个 .OCX 组件的 .LIC 文件复制到同一位置。使用此方法可确保组件获取许可证(如果存在)。与将许可证嵌入应用程序不同,不会出现跨模块问题。

例如,您将适用于 32 位和 64 位平台的 Codejock Calendar ActiveX 组件作为应用程序的一部分安装到%ProgramFiles(x86)%\<YourCompanyName>\<YourApplicationName>\bin目录,则 bin 目录应包含以下文件:

  • Codejock.Calendar.v18.0.1.OCX
  • Codejock.Calendar.Unicode.v18.0.1.OCX
  • Codejock.Calendar.Unicode.x64.v18.0.1.OCX
  • Codejock.Calendar.v18.0.1.LIC

如果要包含 CommandBars 组件,还需要将Codejock.CommandBars.v18.0.1.LIC复制到同一位置。


分发嵌入应用程序的许可证

在某些情况下,分发单独的 .LIC 文件是不可能的,例如,当您为 Web 浏览器或任何其他类型的远程客户端开发 ActiveX 组件时。在这种情况下,唯一的选择是将许可证文本嵌入到应用程序中。

在跨模块场景中,这种方法应该非常谨慎地使用,并且容易出现意外行为,因为不同的环境以不同的方式管理此类场景。例如,如果您开发的 Visual Basic 应用程序不使用报表控件,而是使用另一个使用报表控件的自定义控件,则报表控件的许可证必须从宿主应用程序设置,而不是从自定义控制。在这种情况下,建议将许可证作为单独的 .LIC 文件分发。

它的工作方式是,每个组件都公开自己的GlobalSettings具有 stringLicense属性的类。此属性必须设置为对应 .LIC 文件的前 3 个字符串的逐字值,直到第一个空行,包括所有空格和新行。使用 CRLF 作为新行分隔符(0Dh、0Ah字节序列或"\r\n"转义序列)很重要,因为它在 .LIC 文件中使用。

必须在应用程序初始化流程中尽早分配该属性。对于 Visual Basic,它可以是 的开头Form_Initialize,对于 .NET 应用程序,它可以是主窗口构造函数的开头。在对组件进行任何其他显式或隐式调用之前分配此属性很重要。

以下是如何执行此操作的示例:

  • Visual Basic 6.0
  • 可视化C#
  • Visual Basic .NET

Private Sub Form_Initialize()

    CommandBarsGlobalSettings.License = _
    "CommandBars Control Copyright (c) 1998-2017 Codejock Software" & vbCrLf & _
    "PRODUCT-ID: Codejock.CommandBars.ActiveX.v18.0" & vbCrLf & _
    "VALIDATE-CODE: XXX-XXX-XXX-XXX"

End Sub

已知问题和解决方法

更新 .NET 引用

在某些情况下,当引用 Codejock ActiveX 组件的项目在其创建位置以外的计算机上打开时,或者项目是使用旧版本的 Visual Studio 创建的,或者如果只有较新版本的组件可用,则形成初始化流程最后可能会因 COM 异常而失败。可能有多种原因,最常见的一个是由另一个 Visual Studio 实例为 Codejock ActiveX 组件创建的互操作程序集与可用组件不匹配。以下步骤可能有助于解决此问题:

  1. 确保安装并注册了正确的组件,并且注册的组件配置与项目属性中的TargetCPU匹配(请参阅本文开头的选择正确的组件配置和注册组件)。
  2. 打开您的项目并关闭所有窗口,尤其是资源和表单设计器。
  3. 打开项目引用并删除每个 Codejock 组件的 2 个引用,例如,如果您的项目仅使用 CommandBars,您将有 2 个相关引用:
    • XtremeCommandBars - CommandBars 组件的互操作程序集
    • AxXtremeCommandBars - CommandBars 组件的 ActiveX 控件库
  4. 保存并重新构建项目。预计会因某些或许多错误而失败。
  5. 打开 Visual Studio 工具箱,在任何空白处单击鼠标右键,然后从弹出菜单中选择“选择项目”。
  6. 转到 COM 组件选项卡并在已删除类型库的控件旁边设置复选标记,例如在 Xtreme CommandBars Control 旁边设置复选标记,确保其路径指向正确的位置,然后按 OK。您应该会看到为每个选定控件添加的新工具箱按钮。
  7. 转到解决方案资源管理器并向项目添加一个新的临时表单,名称无关紧要。
  8. 将每个删除的组件引用一个控件放到工具箱中的临时表单上。当您放下时,您会看到自动生成新引用并将其添加到您的项目中。这可能是一个耗时的过程,具体取决于您的硬件和操作系统性能。
  9. 保存项目并重新构建,这次应该没有与之前删除的引用相关的编译错误。如果您确实看到由新组件引起的新编译错误,则接口可能已更改,或者在极少数情况下 Visual Studio 修复了引用组件的公共属性或方法名称,例如,它可以OcxState为名为 的属性生成名称State。
  10. 在调试器下运行项目以确保表单初始化不再失败。
  11. 删除之前创建的临时表单。

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn

文章转载自:

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP