videojs默认显示controls 按钮功能失效_VBA|自定义菜单栏、工具栏、功能区

本文介绍了如何在Excel2007中利用VBA自定义菜单栏和工具栏,包括创建命令组、插入工具栏命令和新建菜单栏。同时,提到了在Excel2013中创建自定义功能区的方法,以增强用户界面的定制体验。
摘要由CSDN通过智能技术生成

Excel2007中,功能区替代了以前的分层菜单、工具栏和任务窗格系统。

自定义菜单栏、工具栏的效果:

4278a35303597a7596622e94eb0aaad7.png

主要是使用CommandBars对象模型:

71942a62bfba6cdeb00cc735e18f57ef.png

VBA代码:

1 自定义菜单命令组

'自定义菜单命令组Public Sub creatediyMenu()    For Each con In Application.CommandBars("Data").Controls        con.Delete    Next    Dim diyMenu As Object    Dim MenuItem As Variant    Dim Menusub As Variant    MenuItem = Array( _        "首行标题和冻结及边框", "创建工作表目录", _        "工作表按名称排序", _        "设置页眉页脚", _        "隔行插入空行", "删除空行", "删除选定列空单元格的行", _        "删除超级链接", _        "删除形状(图形、文本框等)", _        "设置最后一个字符为上标", _        "多条件排序(ABCD列)", _        "多条件筛选(AB列)", _        "Setting", _        "选区字符统计", _        "借书记录", _        "定位到D列最后一行", _        "显示或隐藏批注", "删除当前表中批注")    Menusub = Array( _        "PERSONAL.XLSB!行操作.首行标题和冻结及边框", _        "PERSONAL.XLSB!表操作.创建工作表目录", _        "PERSONAL.XLSB!表操作.sortShtByName", _        "PERSONAL.XLSB!表操作.设置页眉页脚", _        "PERSONAL.XLSB!行操作.insertBlankRow", _        "PERSONAL.XLSB!行操作.DeleteBlankRow", _        "PERSONAL.XLSB!行操作.批量删除空行_先选定列", _        "PERSONAL.XLSB!数据编辑.删除超级链接", _        "PERSONAL.XLSB!数据编辑.删除形状", _        "PERSONAL.XLSB!数据编辑.设置单元格最后一个字符为上标", _        "PERSONAL.XLSB!排序与筛选和统计.MoreKeySort", _        "PERSONAL.XLSB!排序与筛选和统计.Filter_MoreCriteria", _        "PERSONAL.XLSB!自定义菜单.ExcelSetting", _        "PERSONAL.XLSB!排序与筛选和统计.textcount", _        "PERSONAL.XLSB!借书记录.借书记录", "PERSONAL.XLSB!自定义菜单.newRowPos", _        "PERSONAL.XLSB!排序与筛选和统计.显示或隐藏批注", _        "PERSONAL.XLSB!排序与筛选和统计.删除当前表中批注")     For i = 0 To UBound(MenuItem)        Set diyMenu = Application.CommandBars("Data").Controls.Add(Type:=msoControlButton)        With diyMenu            .Caption = MenuItem(i)            .OnAction = Menusub(i)        End With    Next i    Set diyMenu = NothingEnd Sub

2 插入自定义工具栏命令

Sub 插入自定义工具栏命令()    Dim cmb As Office.CommandBar    Dim bt As Office.CommandBarButton    'Call 删除菜单栏    Set cmb = Application.CommandBars("Formatting")    Set bt = cmb.Controls.Add(Type:=Office.MsoControlType.msoControlButton)    With bt        .Caption = "借书记录"        .FaceId = 2560        .Style = msoButtonIconAndCaption        .OnAction = "PERSONAL.XLSB!借书记录.借书记录"    End WithEnd Sub'下面的Right 过程是自定义按钮的回调函数?Sub Right()    Selection.HorizontalAlignment = Excel.Constants.xlRightEnd Sub

3 创建新的菜单栏

Const strBarName As String = "我的菜单栏"Public Sub 创建新的菜单栏()    Dim cbr As CommandBar, ctl As CommandBarControl    Call 删除菜单栏    'For Each con In Application.CommandBars(strBarName).Controls        'con.Delete    'Next    Set cbr = Application.CommandBars.Add(strBarName, MenuBar:=True)    cbr.Visible = True    Set ctl = Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30002)    ctl.Copy Application.CommandBars(strBarName)   ' 30002文件下拉菜单    Set ctl = Application.CommandBars("Worksheet Menu Bar").FindControl(ID:=30003)    'Set ctl = Application.CommandBars("Chart Menu Bar").FindControl(ID:=30003)    '30003编辑、30004视图、30005插入、30006格式、30007工具    ctl.Copy Application.CommandBars(strBarName)    With cbr.Controls.Add(msoControlPopup)        .Caption = "帮助"        With .Controls.Add(msoControlButton)            .Caption = "重置"            .OnAction = "删除菜单栏"        End With        With .Controls.Add(msoControlButton)            .Caption = "关于"            .OnAction = "关于"        End With    End WithEnd SubSub 删除菜单栏()    On Error Resume Next    Application.CommandBars(strBarName).Delete    On Error GoTo 0End SubSub 关于()    Dim strMsg As String    strMsg = "这是一个新的菜单栏" & vbCrLf    strMsg = strMsg & "由" & Application.UserName & "创建"    MsgBox strMsg, , "关于"End Sub

自定义功能区参照:

Excel2007|RibbonX控件 & 自定义功能区

在Excel2013中,创建功能区选项卡的操作非常简单,用户可通过打开“Excel选项"对话框直接进行功能区选项卡和组的创建。

-End-

要在 React 中使用 Video.js 并添加自定义控制栏,你可以按照以下步骤: 1. 安装 Video.js 和 React Video.js 在你的 React 项目中安装 Video.js 和 React Video.js: ``` npm install --save video.js react-videojs ``` 2. 导入 Video.js 和 React Video.js 在你的组件中导入 Video.js 和 React Video.js: ``` import videojs from 'video.js'; import 'video.js/dist/video-js.css'; import VideoJS from 'react-videojs'; ``` 3. 创建自定义控制栏 在 `componentDidMount` 生命周期中创建自定义控制栏。你可以使用 Video.js API 创建控制栏,例如: ``` componentDidMount() { const videoJsOptions = { controls: false, sources: [{ src: 'https://example.com/path/to/video.mp4', type: 'video/mp4' }] }; this.player = videojs(this.videoNode, videoJsOptions); const ControlBar = videojs.getComponent('ControlBar'); const CustomControlBar = videojs.extend(ControlBar, { constructor: function() { ControlBar.apply(this, arguments); this.addClass('vjs-custom-control-bar'); } }); videojs.registerComponent('CustomControlBar', CustomControlBar); const customControlBar = new CustomControlBar(this.player); this.player.addChild(customControlBar); customControlBar.addChild('playToggle'); customControlBar.addChild('currentTimeDisplay'); customControlBar.addChild('timeDivider'); customControlBar.addChild('durationDisplay'); customControlBar.addChild('progressControl'); customControlBar.addChild('volumePanel'); customControlBar.addChild('fullscreenToggle'); } ``` 在上面的代码中,我们创建了一个自定义控制栏,并将其添加到了 Video.js 播放器中。控制栏包含了常用的控制按钮和进度条。 4. 渲染 Video.js 播放器 在 `render` 方法中,渲染 Video.js 播放器: ``` render() { return ( <div data-vjs-player> <video ref={ node => this.videoNode = node } className="video-js"></video> </div> ) } ``` 这将在 DOM 中创建一个 `<video>` 元素并将其传递给 Video.js。 5. 完整代码示例 下面是一个完整的代码示例,演示如何在 React 中使用 Video.js 并添加自定义控制栏: ``` import React, { Component } from 'react'; import videojs from 'video.js'; import 'video.js/dist/video-js.css'; import VideoJS from 'react-videojs'; export default class VideoPlayer extends Component { componentDidMount() { const videoJsOptions = { controls: false, sources: [{ src: 'https://example.com/path/to/video.mp4', type: 'video/mp4' }] }; this.player = videojs(this.videoNode, videoJsOptions); const ControlBar = videojs.getComponent('ControlBar'); const CustomControlBar = videojs.extend(ControlBar, { constructor: function() { ControlBar.apply(this, arguments); this.addClass('vjs-custom-control-bar'); } }); videojs.registerComponent('CustomControlBar', CustomControlBar); const customControlBar = new CustomControlBar(this.player); this.player.addChild(customControlBar); customControlBar.addChild('playToggle'); customControlBar.addChild('currentTimeDisplay'); customControlBar.addChild('timeDivider'); customControlBar.addChild('durationDisplay'); customControlBar.addChild('progressControl'); customControlBar.addChild('volumePanel'); customControlBar.addChild('fullscreenToggle'); } componentWillUnmount() { if (this.player) { this.player.dispose(); } } render() { return ( <div data-vjs-player> <video ref={ node => this.videoNode = node } className="video-js"></video> </div> ) } } ``` 注意,如果你需要在组件卸载时销毁 Video.js 播放器,请确保在 `componentWillUnmount` 生命周期中调用 `this.player.dispose()`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值