知识大全 自己动手编写组件

Posted 属性

篇首语:胸怀万里世界, 放眼无限未来。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 自己动手编写组件相关的知识,希望对你有一定的参考价值。

ASP讲座之十:自己动手编写组件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

   一 组件编写速成——编写组件最基本的步骤    本部分主要讲解编写组件的基本步骤 如果你有进一步学习的欲望 请参照VB 帮助文档中 创建 ActiveX DLL 部分(MSDN Library中文档文件名为Vbcon chm)     目的 编写一个最简单的加法器组件 这个组件有两个属性 一个方法 我们从最熟悉的地方开始 那就是先假设这个组件已经存在 看看在ASP使用该组件的代码     <%  Dim objSum   先创建该组件 组件标识为 TestDll Sum  Set objSum = Server CreateObject( TestDll Sum )   记住TestDll Sum 中的 TestDll Sum   objSum augend =     augend 属性为被加数  objSum addend =     addend 属性为加数  Result = objSum Plus     Plus 方法求和  Response Write Result  Set objSum = Nothing  %>  请务必记住这几个关键词 TestDll Sum augend addend Plus 这将与接下来的工作紧密关联 下面是详细步骤    运行VB 在 文件 菜单中 单击 新建工程 →在 新建工程 对话框中 双击 ActiveX DLL 图标→Visual Basic 将向该新工程中自动添加一个类模块 Class (在 工程资源管理器 中可以看到 如图 )    .按 F 键打开 属性 窗口 双击 名称 属性把 Class 改成 Sum    .在 工程 菜单中 单击 工程 属性 打开 工程属性 对话框 在 工程名称 中填写TestDll 在 工程描述 中填写 创建ActiveX DLL示例 如图   提示 ASP创建组件中的标识TestDLL Sum这两项的意思明白了吧    .在 文件 菜单中 单击 保存工程 分别使用下面的名称保存工程文件 SetupDll cls和SetupDll vbp    .为 Sum 类创建属性   ( ) 在 工具 菜单中 选择 添加过程 打开 添加过程 对话框 在 名称 框中 输入augend 单击 属性 然后单击 确定 如图 (注意 当前焦点应在代码窗口 否则 添加过程 菜单无效)   ( ) 在 工具 菜单中 选择 添加过程 打开 添加过程 对话框 在 名称 框中 输入addend 单击 属性 然后单击 确定    .为 Sum 类创建方法   在 工具 菜单中 单击 添加过程 打开 添加过程 对话框 在 名称 框中 输入Plus 在类型中 你可以选择 子程序 或 函数 本例中由于要返回加数与被加数之和 故单击 函数 然后单击 确定   现在 前面ASP代码中的五个关键词语都已用上 这下很多东西都明白了吧    .类模块Sum代码窗口中所有代码如下   Option Explicit  Private mdbl_augend As Double  Private mdbl_addend As Double    Public Property Get augend() As Double  augend = mdbl_augend  End Property    Public Property Let augend(ByVal vNewValue As Double)  mdbl_augend = vNewValue  End Property    Public Property Get addend() As Double  addend = mdbl_addend  End Property    Public Property Let addend(ByVal vNewValue As Double)  mdbl_addend = vNewValue  End Property    Public Function Plus()  Plus = augend + addend  End Function  你已经注意到以上代码与系统生成的代码有点不同 主要是Public Property Get augend() As Variant部分用实际的数据类型Double替代了   注意 实际上 当执行 x = objSum augend 语句时 调用的是 Property Get 过程 获取mdbl_augend的值 而执行 objSum augend = 语句时 将调用 Property Let 过程 将 赋给 mdbl_augend    .最后一步 在 文件 菜单中 单击 生成 Dll(K)… 生成文件SetupDll dll     到这里 组件已创建好了 现在 我们可以先在VB 中编写一个测试工程 测试一下该文件正确与否    .在 文件 菜单中 单击 新建工程 →双击 标准EXE    .在 工程 菜单中 单击 引用 →在 引用 对话框中按 浏览 按钮 选择刚刚编译过的 SetupDll dll 文件→单击 确定    .最后在代码窗口中编写如下代码   Option Explicit  Private Sub Form_Load()  Dim objSum As TestDll Sum  Set objSum = New Sum    objSum augend =   objSum addend =   MsgBox objSum Plus  End Sub  运行一下 结果正确 接下来我们在ASP中使用这个组件 将SetupDll dll拷到Web服务器中 并用 Regsvr exe setupdll dll 命令注册该组件 然后在浏览器中执行本部分开头的ASP程序 如果不行的话 你可以尝试先用VB 的打包工具打包 然后再安装 组件会自动注册 而且一些必需的VB 运行文件也会自动安装   说明 本部分所有程序均在下载包的Setupdll zip中   上面的例子中我们使用属性过程Property Get和Property Let来添加属性(Property Get读取属性的值 而Property Let给属性赋值) 若需要对设置的值进行校验 可在Property Let过程编写适当代码 如下面代码   Public Property Let augend(ByVal vNewValue As Double)  If vNewValue < Then  MsgBox 搞什么!小于 的值 自己心算就行了   Else  mdbl_augend = vNewValue  End If  End Property     二 给组件添加属性和方法的其他途径     .添加属性最简单的一种方法 添加公共变量 如上例最简单的代码如下   Option Explicit  Public augend As Double   添加 augend 属性  Public addend As Double   添加 addend 属性    Public Function Plus() As Double  Plus = augend + addend  End Function  但是 该方法只能设置可读/写属性 且不能对所赋值进行校验 如果仅需添加只读属性 在上例中 删除Public Property Let augend(ByVal vNewValue As Double)过程 则augend便成了一只读属性 不能赋值 当然 若要添加只写属性 只需删除Property Get过程就可以了      .使用类生成器实用工具  VB 中还有一个添加属性和方法的工具 在 外接程序 菜单中 单击 外接程序管理器 在跳出的外接程序管理器对话框中选择 VB Class Builder Utility 并在加载行为中选择 加载/卸载 (如图 ) 然后再在 外接程序 菜单中单击 类生成器实用工具 您一看就会用      三 告诉你几个要注意的问题     . 上面的例子是一个简单得不能再简单的组件 比较实用的组件一般都至少还有一个模块(Module)    . 如果不小心 Visual Basic 可产生 单线程 组件   也许最常见的一个陷阱就是使用了没有被设计为在 ASP 下运行的组件 如 单线程 组件 因此 请确保在 项目属性 页的 通用 选项卡上将线程模块设置为 单元线程    . 关于 类型不匹配 错误   一个好的建议是最好声明 Out 参数为 Variant 注意上例中没有这样设置    . 关于全局变量的使用   尽量避免在组件中使用全局变量 在 Visual Basic 术语中 这表示在标准的 BAS 模块中没有 Public 或 Global 变量 因为Global 变量并不是真正意义上的全局 每个线程都有自己的副本 如果几种方法恰好在同一线程中执行 它们将看到相同的变量 否则它们访问的是这些变量的不同副本 这意味着您可能给一个全局变量赋了值(在线程 A 中) 但其另一个用户(在线程 B 中执行)看不到新值 其原因是 Visual Basic 内部使用 线程本地存储 (TLS) 来引用全局变量 这意味着每个线程都有自己的 Public 变量的副本 并且因为它存在多个副本 全局数据并不是真正 全局的 也就是说 恰好在同一线程中运行的用户才会访问到同一个变量 不论他们是否期望如此     最后顺便提一下 VB 引入了一种全新的Visual Basic应用程序 IIS应用程序 你可以象创建ActiveX DLL一样创建IIS应用程序 任何用Active Server Pages创建的应用程序都可以在VB开发环境中创建 你可以用单个的VB应用程序完全替代所有的Active Server Pages cha138/Article/program/net/201311/13230

相关参考

知识大全 编写与.NET属性窗口交互的RAD组件(四)

编写与.NET属性窗口交互的RAD组件(四)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  提供

知识大全 编写与.NET属性窗口交互的RAD组件(二)

编写与.NET属性窗口交互的RAD组件(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  扩展

知识大全 编写一个文件目录常用操作的类

  今天对自己以前写的一些常用的组件整理了一下发现对文件目录的操作的一个类还用的比较多于是对他进行了修改一些方法是为在社区中看到有网友提问增加的包括复制目录的文件和子目录移动目录文件和子目录生成Xml

人体奥秘 自己动手摘除阑尾

   阑尾炎是一种常见病,多发病,弄不好容易有生命危险。所以,得了急性阑尾炎要及时治疗。   1961年冬天,前苏联医生列奥尼德?罗戈佐夫随

教你自己动手粉刷涂料

天花板用的时间长了难免会显得破旧,有时还会发现墙面起泡、开裂,甚至整片剥落。这时候,我们就要重新粉刷它。如果想感受一下粉刷的乐趣,就自己动手吧,一定要记得先用刷子刷天花板、灯具边缘,再用滚筒作大面积的

自己动手能治疗银屑病

银屑病是一种难以治愈的皮肤顽疾,但它并不是什么难治之症,这种皮肤病还是可以完全治愈的。其实在生活中,银屑病就可以自己经常动手做一些菜品或食物就能治疗银屑病。下面就为大家简单介绍几种治疗银屑病的食物:1

自己动手能治疗银屑病

银屑病是一种难以治愈的皮肤顽疾,但它并不是什么难治之症,这种皮肤病还是可以完全治愈的。其实在生活中,银屑病就可以自己经常动手做一些菜品或食物就能治疗银屑病。下面就为大家简单介绍几种治疗银屑病的食物:1

知识大全 自己动手写操作系统(三)

    在上两期中(自己动手写操作系统)我向大家讲述了如何使用Linux提供的开发工具在软盘的启动扇区写一些代码以及如何调用BIOS的问题现在这个操作系统已经越来越接近当年LinusTorvalds的

自己动手学做韩国菜

从一两碟小菜的朴素饭桌到国王的山珍海味,韩国菜谱里凝聚着韩国人的精诚和智慧。数不胜数的韩国饮食里,拌饭和烧烤是最具代表性的。如果有兴趣,不妨照着我们推荐的办法尝试下,韩国美食也是同样可以在自己手中诞生

知识大全 自己动手实现Asp.net的MVC框架

自己动手实现Asp.net的MVC框架  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  了解JAV