VB功能扩展

我们在设计一个VB窗体时,常常放上许多控件,为了使这些控件看上去整整齐齐,我们不得不设置一大堆Left、Top、Height、Width属性,您是否已经感到厌烦并想转向Powerbuilder或Delphi等别急,让我们现在就来扩展一下VB的功能。

VB4.0提供了一个新功能:Add-Ins,利用这一功能我们就可以把自己的程序加到VB4的系统菜单Add-Ins里去,作为VB的扩展功能。我们设计的程序将具有以下功能:选取窗体上某些控件后,通过菜单选取,使它们大小相同、间距相同、边缘对齐等等。有了这些功能,我们设计界面时就能节省大量时间,大大提高工作效率。限于篇幅,这里只介绍其中一个功能:使所选取控件从左到右大小相同。理解了这段程序,其它功能就很容易实现了。首先建一个新项目:alignment.mark,不需要任何窗体,在Tools菜单里选Project Options, 将 Project Name设为\Exam”,将Start Mode设为Object Application后退出。然后在菜单Ins ert里选取ClassModule,建立一个新类,属性设置如下:

Name=HSizeAlign;Creatable=False;Public=True 输入以下程序:

Public VBInstance As Object ’当前所运行的VB
Private TheseControls As Object
Private Control As Onject ’控件对象变量
Private AllHeight As Long
Private AllWidth As Long
Private MinLeft As Long ’标记最左边界值
Public Sub AfterClick()
MinLeft=99999 ’设一极大初值
Set ThereControls = VBInstance.ActiveProject.Ac - tiveForm.SelectedControlTemplates
For Each Control In TheseControls
If Control.Properties(Left)<MinLeft Then
AllHeight=Control.Properties(Height)
AllWidth=Control.Properties(Width)
MinLeft=Control.Properties(Left)
End If
Next
For Each Control In TheseControls
Control.Properties(Height)=AllHeight
Control.Properties(Width)=AllWidth
Next
End Sub

再定义一个新类,属性设置如下:

Name=Alignment;Creatable=True;Public=True
Dim ThisInstance As Object
Dim HSizeAlignMenu As Object
Dim HSizeAlignHandler As New HSizeAlign
Dim HSizeConnectCookie As Long
Sub ConnectA n(VBInstance As Object)
’加入菜单项,进行连接
Set ThisInstance=VBInstance
Set HSizeAlignMenu=ThisInstance.AddinMenu.
MenuItems.Add(HSize Alignment)
Set HSizeAlignHandler.VBInstance=ThisInstance
HSizeConnectCookie=HSizeAlignMenu.ConnectEvents
(HSizeAlignHandler)
End Sub
Sub DisconnectAddIn(Mode As Integer)
’解除连接,删除菜单项
HSizeAlignMenu.DisconnectEvents HSizeConnect-Cookie
ThisInstance.AddinMenu.MenuItems.Remove HSizeAlignMenu
End Sub
再加入一个Module,输入以下程序:
Declare Function WritePrivateProfileString Lib
KERNEL(ByVal AppName$,ByVal KeyName$,ByVal keydefault$,ByVal FileName$)
Declare Function GetPrivateProfileString Lib
KERNEL(ByVal AppName$,ByVal KeyName$,ByVal keydefault$,ByVal ReturnString$,By
Val NumBytes As Integer,ByVal FileName$)
’以上说明可用API Text Viewer拷贝
Sub Main()
Dim ReturnString As String
Section$=Add-Ins16
ReturnString=String$(255,Chr$(0))
ErrCode=GetPrivateProfileString(Section$,
Exam.Alignment,NotFound,ReturnString,Len(ReturnString)+1,VB.INI)
If Left(ReturnString,InStr(ReturnString,Chr(0))-1)=NotFoundThen
ErrCode=WritePrivateProfileString%(Section$,Exam.Alignment,0,VB.INI)
End If
End Sub

Exam.Alignment里,\Exam”为项目名,\Alignment”为与Add-In菜单连接的类名。以上程序编译运行后,在VB菜单Add-Ins里选取Add-In Manager,将弹出一对话框,选取Exam. Alignment后退出,Add-Ins菜单里就多了一项HSize Alignment;使用时先选取所需排列控件,然后选此菜单项即可。本程序的运行环境为:VB4.0,Windows3.1;486 DX2/66 8M。

时间: 2024-09-20 00:27:04

VB功能扩展的相关文章

RTC基本的缺陷和代码质量分析功能扩展

本文将深入介绍使用 RTC 提供的 Work Item API 实现灵活.全面.便捷的自定义缺陷分析功能,降低项目管理的复杂度,节约项目管理的人力成本,提供更丰富的项目管理参考数据,从而提高项目管理的精确度. RTC(Rational Team Concert)提供了软件生命周期各个阶段所需要的管理功能,而且为软件工程师提供了可以进行功能扩展开发的软件开发包.本文将介绍如何使用 RTC Plain Java API,基于 RTC 中的项目缺陷信息,统计出相关代码质量数据. 所有正在使用 RTC

WebRTC源码入手和底层功能扩展资料分享

 WebRTC源码入手和底层功能扩展资料分享 "webrtc源码分析群"里有同学说要在源码里加入新功能,想找下有没有相关资料可以分享下,好了解代码框架和入手修改代码,但是相关的资料少之又少,所以我找了相关的资料,希望能对大家有所帮助. WebRTC代码结构: http://blog.sina.com.cn/s/blog_40d608bb01010n73.htmlhttp://www.cnblogs.com/fangkm/p/4370492.htmlhttp://mojiapp.cn

WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式、水印、Label标签、功能扩展

原文:WPF自定义控件与样式(3)-TextBox & RichTextBox & PasswordBox样式.水印.Label标签.功能扩展 一.前言.预览 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要是对文本输入控件进行样式开发,及相关扩展功能开发,主要内容包括: 基本文本框TextBox控件样式及扩展功能,实现了样式.水印.Label标签.功能扩展: 富

CI框架源码解读之利用Hook.php文件完成功能扩展的方法_php实例

本文实例讲述了CI框架源码解读之利用Hook.php文件完成功能扩展的方法.分享给大家供大家参考,具体如下: 看了hook.php的源码,就知道CI使用hook来进行扩展的原理了. hook的基本知识 http://codeigniter.org.cn/user_guide/general/hooks.html CI中hook的使用经历了一个:开启hook,定义hook,调用hook,执行hook的过程. 手册中已经告知了开启.定义.调用的方法.那么hook的实现原理是啥呢. <?php if

使用Iptables的功能扩展全面封杀P2P流量

Linux真是好东西啊!Linux系统不但稳定,平台相对安全,而且还是开放源代码且是免费的,其中的iptables更是功能强大,所以笔者公司一直在用他做公司的内部网关, 并通过iptables 的设置做一些安全方面的初步设定.于是从网上查询iptables资料,呵呵,很多网友已经做过了相关的尝试,并且由于P2P在网络上的影响,使很多 Linuxer们开发出了相关的patch,专门来应对P2P对网络性能的不良影响,通过研究网上的绝大多数资料,看到很多种解决方法,见的最多的是使用 netfilter

自动化测试学习(二) selenium IDE功能扩展

通过上一节的学习,相信我们已经会selnium IDE的基本使用了,为了使selenium 更强大,其实selenium 还提供了良好的扩展能力. ----//用户扩展 用户扩展就是使用javaScript文件来创建定制化特性,添加新功能,通常情况下这种扩展就是定制化命令,但扩展并不仅限于命令. 这里有一些列的扩展:http://wiki.openqa.org/display/SEL/Contributed+User-Extensions 1.下面我们利用扩展的方式,产生一个用户随机数字 为了使

IBM FileNet P8 Application Engine的工作原理及新功能扩展

FileNet P8 Application Engine 介绍 FileNet P8 介绍 FileNet P8 是可靠的.可扩展的.高可用性的企业平台,由四大引擎 Content Engine(CE), Process Engine (PE),Application Engine(AE)/WorkplaceXT ,Rendition Engine 组成,通过这些引擎实现存储.管理.保护和处理信息,将业务流程流畅化.自动化,提高操作效率. 每个引擎承载着不同的功能: Content Engin

&quot;爱说说&quot;技术原理:与TXT交互及MDataTable对Json的功能扩展(二)

关于爱说说在技术选型的文章见:"爱说说"技术原理方案的定选思考过程   本篇将讲述"爱说说"比较重大的技术问题点及解决手段:   爱说说:http://speak.cyqdata.com/   杂说几句: 一开始,原本是打算在秋式开源团队找一JS人才来引导前台页面的呈现的,毕竟本人在JS还停留在原始的编码阶段,于是当时聊了一下. 再后来,接下来几天,由于秋式开源团队内部管理上有点小调整,还有新开任务小组的事,连续忙了几天,"爱说说"就也停了几天.

菜鸟学自动化测试(二)----selenium IDE 功能扩展

通过上一节的学习,相信我们已经会selnium IDE的基本使用了,为了使selenium 更强大,其实selenium 还提供了良好的扩展能力. ----//用户扩展 用户扩展就是使用javaScript文件来创建定制化特性,添加新功能,通常情况下这种扩展就是定制化命令,但扩展并不仅限于命令. 这里有一些列的扩展:http://wiki.openqa.org/display/SEL/Contributed+User-Extensions   1.下面我们利用扩展的方式,产生一个用户随机数字 为