的菜单项“My AddIn”,使用了cbMenu.Controls的Add方法。关于菜单条的层次关系及相应的属性及方法,可以参看VB关于外接
程序的帮助或联机手册。但通过笔者的实践认为,最好的方法是使用F2打开VB的浏览器,其类之间的层次关系以及对象事件,方法,属性一目了然。
关于类Connect中的其它方面的代码,一般来说比较容易理解,这里就不叙述了。
3. 模块AddIn
模块AddIn比较简单,仅包含一个子程序:
Sub AddToINI ()
Dim ErrCode As Long
ErrCode=WritePrivateProfileString ("Add-Ins32","My AddIn.Connect","0","vbaddin.ini")
End Sub
该程序可以在立即窗口中运行,以便将关于此外接程序的信息添加到Windows目录下的vbaddin.ini文件中去,这样VB的外接程序管理器就可以认识该程序,并可将其挂接到VB的IDE环境中。该程序所做的工作很简单,只是在vbaddin.ini文件的[Add-Ins32]下添加一行My AddIn.Connect=0,表明My AddIn没有挂接到IDE环境中,若My AddIn.Connect=1,则VB启动时自动挂接该程序。
4. 窗体frm AddIn
窗体frm AddIn中的代码是由用户编写的,
模板仅给出了一个框架。针对我们上面提出的具体问题,我们设计了一个简单的用户界面,包括如下控件:
(1)标签Label1:Caption="All controls In SelectedForm:"
(2)列表框List1:用于显示表单中的所有控制。
(3)命令按钮fontButton (0):Caption ="&Select Font",用于将选中的窗体上所有控制的字体设为缺省字体。(注:缺省字体为宋体9号字,这种字体在中文环境不同分辨率下效果都比较好)。
(4)命令按钮fontButton (1):Caption ="&Select Font",选择该按钮后将弹出选择字体,然后程序将选中的窗体上所有控制的字体均设为用户选择的字体。
(5)命令按钮ExitButton:Caption="&Exit",用于退出此程序,实际上的工作只是隐藏了窗体frm AddIn。外接程序的真正退出还是需要外接程序管理器中删去。
(6)通用对话框CommonDialog1:用于弹出选择字体的通用对话框,便于用户从中选择所需字体。
下面是窗体代码:
Public VBInstance As vbide.VBE
Public Connect As Connect
Dim mcmpCurrentForm As VBComponent
Option Explicit
Private Sub ChangeFont (NewFontName As String,NewFontSize As Integer,NewFontBold As Boolean,NewFontltalic As Boolean)
Dim control As VBControl
On Error Resume Next
List1.Clear
Set mcmpCurrentForm =VBInstance.SelectedVBComponent
If (mcmpCurrentForm.Type<>vbext-ct-VBForm) And-
(mcmpCurrentForm.Type<>vbext-ct-UseControl) And-
(mcmpCurrentForm.Type<>vbext-ct-DocObject) And-
(mcmpCurrentForm.Type<>vbext-ct-PropPage) Then
Exit Sub
End if
For Each control in mcmpCurrentForm.Designer.VBControls
List.AddItem control.ControlObject.Name
control.ControlObject.FontName= NewFontName
control.ControlObject.FontSize= NewFontSize
control.ControlObject.FontBole= NewFontBole
control.ControlObject.FontItalic= NewFontItalic
Next
End Sub
Private Sub ExitButton-Click (Index As Integer)
Connect.Hide
End Sub
Private Sub FontButton-Click (Index As Integer)
Select Case Index
Case 0
ChangeFont "宋体",9,False,False
Case 1
With CommonDialog1
.Flags = cdlCFBoth
.ShowFont
ChangeFont.FontName,.FontSize,.FontBold,.FontItalic
End With
End Select
End Sub
上面的代码比较简单,关键的代码在于获取屏幕上的所有控制,在Visual Basic5.0下,与早期版本不同,它利用了VBComponent对象的Designer属性获取屏幕上的设计器,它可以是