识别 CommandBar 图标的 FaceID

 

原文地址:
http://spreadsheetpage.com/index.php/site/tip/identifying_commandbar_images

 

从 Excel 97 到 Excel 2003 都在内置的菜单和工具栏中使用了大量的图标。你可以通过设置 FaceID 属性为特定的整数把这些内置的图标用在你的自定义菜单和工具栏上。但问题是如何确定每个图标对应的整数。

 

下面的子程序创建了一个包含前250个 FaceID 图标的自定义工具栏(见下图)。你可以通过修改 IDStart 和 IDStop 的值来看更多的图标。最后一个 FaceID 应该是3518(也包括很多的空图标)。

 

          

 

在创建工具栏后,将鼠标光标移动到一个按钮上可以查出图标的 FaceID 值。点击工具栏的按钮不会有任何反应因为子程序没有指定任何宏到 OnAction 属性。

 

显示 FaceId 的子程序

Sub ShowFaceIDs()
    Dim NewToolbar As CommandBar
    Dim NewButton As CommandBarButton
    Dim i As Integer, IDStart As Integer, IDStop As Integer
    
'   Delete existing FaceIds toolbar if it exists
    On Error Resume Next
    Application.CommandBars("FaceIds").Delete
    On Error GoTo 0
    
'   Add an empty toolbar
    Set NewToolbar = Application.CommandBars.Add _
        (Name:="FaceIds", temporary:=True)
    NewToolbar.Visible = True
    
'   Change the following values to see different FaceIDs
    IDStart = 1
    IDStop = 250
    For i = IDStart To IDStop
        Set NewButton = NewToolbar.Controls.Add _
            (Type:=msoControlButton, Id:=2950)
        NewButton.FaceId = i
        NewButton.Caption = "FaceID = " & i
    Next i
    NewToolbar.Width = 600
End Sub 

 

译注:上述代码仅适用于 Excel ,在 Excel 2003 中测试正常。如果需要在 Word 中运行,NewToolbar.Controls.Add 方法中的 Id 参数会导致报错,只需要去掉 Add 方法中的 Id 参数即可:

Sub ShowFaceIDs()
    Dim NewToolbar As CommandBar
    Dim NewButton As CommandBarButton
    Dim i As Integer, IDStart As Integer, IDStop As Integer
    
'   Delete existing FaceIds toolbar if it exists
    On Error Resume Next
    Application.CommandBars("FaceIds").Delete
    On Error GoTo 0
    
'   Add an empty toolbar
    Set NewToolbar = Application.CommandBars.Add _
        (Name:="FaceIds", temporary:=True)
    NewToolbar.Visible = True
    
'   Change the following values to see different FaceIDs
    IDStart = 1
    IDStop = 500
    For i = IDStart To IDStop
        Set NewButton = NewToolbar.Controls.Add _
            (Type:=msoControlButton)
        NewButton.FaceId = i
        NewButton.Caption = "FaceID = " & i
    Next i
    NewToolbar.Width = 600
End Sub 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是为VB6开发环境制作插件,添加自定义工具栏按钮,并设置自定义图标的例子: 1. 打开VB6开发环境,创建一个新的ActiveX DLL项目。 2. 在“项目”菜单中,选择“组件”选项,然后单击“浏览”按钮。 3. 浏览到VB6的安装目录(例如:C:\Program Files (x86)\Microsoft Visual Studio\VB6),然后选择“VB6EXT.OLB”文件。 4. 选择“VBIDE”选项卡,然后选中“CommandBarControls”复选框。 5. 单击“确定”按钮,然后在“工具箱”窗口中找到“CommandBar”控件。 6. 将“CommandBar”控件拖放到“UserControl”表单上。 7. 在“代码”窗口中添加以下代码: ```vb Private Sub UserControl_Initialize() Dim cmbBar As CommandBar Dim cmbButton As CommandBarButton Set cmbBar = Application.CommandBars.Add("MyToolBar", vbToolbarTop) Set cmbButton = cmbBar.Controls.Add(msoControlButton) With cmbButton .Caption = "My Button" .FaceId = 71 .Style = msoButtonIconAndCaption .Tag = "MyButtonTag" .OnAction = "MyButton_Click" End With End Sub Public Sub MyButton_Click() MsgBox "Hello, world!" End Sub ``` 8. 在“工具箱”窗口中找到“ImageList”控件,将其拖放到“UserControl”表单上。 9. 在“属性”窗口中设置“ImageList”的“Images”属性为“3”。 10. 在“代码”窗口中添加以下代码: ```vb Private Sub UserControl_ReadProperties(PropBag As PropertyBag) Set m_ImgList = PropBag.ReadProperty("ImageList", Nothing) If Not m_ImgList Is Nothing Then Set m_ImgList = PropertyPage.ToRuntimeCtrl(m_ImgList) End If End Sub Private Sub UserControl_WriteProperties(PropBag As PropertyBag) If Not m_ImgList Is Nothing Then PropBag.WritePropertyObject "ImageList", m_ImgList End If End Sub Public Property Set ImageList(ByVal vNewValue As ImageListCtl.ImageList) Set m_ImgList = vNewValue End Property Public Property Get ImageList() As ImageListCtl.ImageList Set ImageList = m_ImgList End Property ``` 11. 在“工具箱”窗口中找到“PictureBox”控件,将其拖放到“UserControl”表单上。 12. 在“属性”窗口中设置“PictureBox”的“AutoSize”属性为“False”,“Height”属性为“16”,“Width”属性为“16”。 13. 在“代码”窗口中添加以下代码: ```vb Private m_ImgList As ImageListCtl.ImageList Private Sub UserControl_Resize() If Not m_ImgList Is Nothing Then With m_ImgList Set .ListImages(3).Picture = .PictureFromHandle(.ImageHandles(3), 16, 16, vbTransparent) Set PictureBox1.Picture = .ListImages(3).Picture End With End If End Sub ``` 14. 在“项目”菜单中选择“属性”选项,然后在“组件”选项卡中设置“描述”和“版本”信息。 15. 在“文件”菜单中选择“保存ActiveX DLL”,然后编译项目。 16. 在VB6开发环境中打开VB6的Add-In Manager(在“工具”菜单中),然后单击“加载”按钮。 17. 浏览到刚才保存的ActiveX DLL文件,然后选择它。 18. 单击“确定”按钮,然后在VB6开发环境的工具栏上就会看到刚才添加的自定义按钮了。 以上就是为VB6开发环境制作插件,添加自定义工具栏按钮,并设置自定义图标的例子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值