65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在 VB6 中编写可更新的 Web 页面 ActiveX 控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.25/5 (16投票s)

2004年9月10日

3分钟阅读

viewsIcon

175329

downloadIcon

3263

本文将介绍如何编写一个可嵌入到网页中使用的 ActiveX 控件,该控件可以从网页更新和重新安装。

引言

很多时候,你可能需要在你的 Web 应用程序中使用一个强大的基于 COM 的控件,该控件可能需要在以后进行修改。在某些情况下,简单地引用 .ocx 文件就足够了 (<OBJECT CODEBASE="myActiveXcontrol.ocx" />)。但是,如果需要修改控件的代码并在用户的机器上重新安装,此方法将不起作用。

相反,更好的方法是利用 Visual Studio 的打包和部署向导来创建一个 CAB 文件,该文件用作 <object> 标签中引用的 .ocx 的直接安装(或重新安装)。

步骤 1:在 Visual Basic 中创建控件

作为一个例子,我们将首先在 VB 6.0 中创建一个简单的控件。

打开 MS Visual Basic,然后选择“ActiveX”控件

Main Screen

然后,我在我的控件上放置了两个组件 - 一个名为 cmdTest 的命令按钮和一个名为 txtTest 的文本框

dev Screen

(这是一个非常简单的例子,只是为了展示 Web 客户端脚本如何与嵌入式 ActiveX 控件交互)。

接下来,我们将编写一些代码来测试我们的功能。我们的目标是从我们的网页向文本框传递一个值,然后使用命令按钮在消息框中显示该文本。我们将需要 _click() 的代码和一个 Public 函数来填充文本框(我们需要它是 public,以便可以从 VB 控件的范围之外访问它,即网页代码)。我使用函数 setText() 来完成此操作

Public Function setText(txt As String)
    txtTest.Text = txt
End Function
Private Sub cmdTest_Click()
    MsgBox txtTest.Text
End Sub

步骤 2:打包项目

接下来,我们需要保存、生成和打包我们的项目。我的项目名为 vbActiveX,我的控件名为 ctlVBAX。单击“工具”-->“打包和部署向导”。在主屏幕上单击打包。(它可能会要求你重新编译和/或保存你的项目。只需单击。)

按照屏幕截图进行操作

Sample screenshot

Sample screenshot

Sample screenshot

你的包现在应该存在于你的项目文件夹中的 /Package 中。

步骤 3:编写网页代码

我们的最后一步包括在我们的网页上添加客户端脚本,以及一些 HTML 以与嵌入式 ActiveX 控件交互。

我只是创建了一个名为 "drpValues" 的下拉列表,并给出了选项 "value1"-"vaue5"。我们的目标是用从下拉列表中选择的值来填充 AX 控件(txtTest)上的文本框。我们将需要添加一个 JavaScript 函数来完成此操作

<select id="drpValues" onclick="send_value(this)">
 <option value=""></option>
 <option value="value1">value1</option>
 <option value="value2">value2</option>
 <option value="value3">value3</option>
 <option value="value4">value4</option>
 <option value="value5">value5</option>
</select>
<--this goes into the <head></head> section-->
<script>
function send_value(obj){
 document.all('ctlVBAX').setText(obj.options[obj.selectedIndex].value);
}
</script>

请注意 <object> 标签及其内容

<OBJECT ID="ctlVBAX"
CLASSID="CLSID:748FEF73-28D1-4889-A582-E5F8F526CDD1"
CODEBASE="vbActiveX.CAB#version=1,0,0,0">
</OBJECT>

如你所见,对象 ID 是 ctlVBAX,这是我们在脚本中使用时所引用的。另请注意,CODEBASE 部分包含 .CAB 文件,而不是 .ocx 文件,因此系统会查找 CAB 的版本来初始化 ActiveX 控件。如果它是一个较新的版本,它将更新控件,几乎就像重新安装一样。

通过在 /Package 文件夹中打开 vbActiveX.HTM 来测试该页面。

要测试更新,请更改 ActiveX 控件代码中的一些内容,然后重新生成项目(文件->生成)。然后,将新的 .ocx 从你的主项目文件夹复制到 /support 目录中,并使用那里的批处理文件在 /Package 中重新生成 CAB 文件。最后,将该 CAB 文件复制回你的项目文件夹,然后重新打开该网页。你应该注意到更改已生效。

© . All rights reserved.