Office能够让你写插件。2003系列虽然已经远去,其CommandBar也被2007的Ribbon给替代。但是,你未必就完全了解了这个存在多年看似简单,实则狗屎的CommandBar。
我们翻开手册(其实没有什么手册,在2007之前,office是没有提供给VBA程序员之外的文档的),发现Application对象上有一个CommandBars属性。我们可以调用其Add方法给它添加一个CommandBar。
application.CommandBars.Add("Spike", MsoBarPosition.msoBarTop, false, true);
问题:
我要是第二次启动是不是会创建第二Spike Command Bar,第三次就有三个了?
我们在word中,把command bar显示出来,然后拖拽到底部。
问题:
再次启动word,这个command bar是在顶部还是在底部?
然后我们把我们的插件卸载了。重新启动word 2003。
问题:
Spike Command Bar 还在那里吗?
我们继续翻开手册,发现给command bar添加一个Label也不是什么很难的事情。很简单嘛,一行搞定。
commandBar.Controls.Add(MsoControlType.msoControlLabel, Type.Missing, Type.Missing, Type.Missing, true);
我kao,真TMD的天才。我连Type.Missing都知道用诶。
问题:
这行有错嘛?错误在哪里?
如果要添加的是一个按钮并响应点击事件呢?也很简单,两行搞定
CommandBarButton button = (CommandBarButton) commandBar.Controls.Add(MsoControlType.msoControlButton, Type.Missing, Type.Missing, Type.Missing, true);
button.Click += delegate { MessageBox.Show("Hello!"); };
我要是刚学C#,我都为我自己骄傲。看看,我不但知道它返回的类型是CommandBarButton,还会华丽的delegate语法。
问题:
这行能运行吗?运行起来啥效果?
问题:
第二次启动word,是有一个button还是两个button。
恩,既然自己加一个button能响应点击事件。而且它还有一个参数叫Cancel Default呢。老板正好叫我把Cut按钮给禁用了。简单,找到Cut按钮,响应Click事件,Cancel Default。
CommandBarButton cutButton = (CommandBarButton)application.CommandBars.FindControl(Type.Missing, CUT_BUTTON_CONTROL_ID, Type.Missing, Type.Missing);
cutButton.Click += delegate(CommandBarButton ctrl, ref bool cancelDefault) { cancelDefault = true; };
居然连FindControl都会用,太神奇了。
问题:
这行能用吗?运行起来啥效果?
button还有一个state状态。我一行就能toggle它了:
button.State = button.State == MsoButtonState.msoButtonDown
? MsoButtonState.msoButtonUp
: MsoButtonState.msoButtonDown;
You are the genius!~~~
问题:
我打开了两篇文档,两篇文档对应窗口上的button状态是和文档想关联的。也就是互相状态独立。能做到吗?如果不能,要怎么做?
终结者QA
一天下午,我们PM走过来,创建了一个word的快捷方式在桌面上。把word窗口缩放到一个合适的位置。关闭所有的word实例。然后只见他快速地,迅雷不及掩耳的,说时迟那是快的,三击了word的快捷方式:
问题:
请问有几个word进程
问题:
我的状态独立版的command bar还在那吗?为什么?
分享到:
- 2008-10-29 08:40
- 浏览 2920
- 评论(0)
- 论坛回复 / 浏览 (0 / 2790)
- 查看更多
相关推荐
The CommandBar control is a full toolbar/menu control which currently offers configurable styles, colours and a full-object model for configuring the buttons and menus. The control can draw in Office ...
`Example.exe.manifest` 文件是应用程序的清单文件,其中包含了程序所需的权限和其他元数据信息。 `Example24.png` 和 `Example16.png` 可能是用于CommandBar的图标资源,通常在菜单项或按钮上显示。24x24像素和16x...
asp.net辅助工具之CommandBar The CommandBar class library extends Windows Forms with classes for CommandBar, ReBar, CoolBar, and bitmaped menu controls. 24 bit alpha channel images are supported on...
Visual Studio代码命令栏VSCode状态栏中的命令栏。开始使用特征执行命令: 长时间运行的命令终止3种命令类型: exec :执行命令,例如npm run serve (默认) script :执行package.json脚本palette :执行任何或...
CommandBar 是一个开源项目,它的主要功能是在 Windows 的任务栏上添加一个输入框,这个输入框(ComboBox)允许用户输入命令来快速启动应用程序。这个功能借鉴了类似操作系统的快速启动特性,通过简化用户界面和提高...
原料药名称类型描述默认文本字符串或HTMLElement 要在启动器中渲染的元素查找任何内容[ctrl + k] 风格CSS属性启动器的样式替代{}例子默认用法: import Launcher from 'commandbar-launcher';export const ...
这款工具对于经常在终端中工作的用户来说尤其有用,因为它可以帮助他们快速找到并执行所需的命令,而无需频繁地在不同的资源中查找。 在描述中提到的几个关键特性包括: 1. **命令搜索**:Command Bar允许用户通过...
可以通过`CommandBars("Name")`来访问特定的CommandBar,其中"Name"是CommandBar的名称。一旦获取了CommandBar,就可以修改其属性,如位置、大小、可见性等。 4. **添加Control到CommandBar** `Controls`集合允许...
- 相关资源:`CommandBar_AddBitmap`用于添加按钮图标,`CommandBar_AddAdornments`添加Close按钮,`CommandBar_InsertComboBox`插入组合框,`CommandBar_InsertMenubar`和`CommandBar_InsertMenubarEx`用于插入...
这是一个wsp解决方案,部署到网站中激活功能,就可以在网站管理中进行功能区可见性的设置。总是显示、总是隐藏、或者根据条件隐藏
在实际编程中,知道菜单和工具栏的ID号非常有用。比如: - **创建自定义UI**:你可以使用ID号来创建新的菜单和工具栏,或者复制已有的UI元素。 - **触发命令**:通过ID号,VBA可以模拟用户点击菜单或工具栏上的按钮...
3. **EVC不支持中文显示** - 问题:默认的EVC SDK是为英文环境设计的,因此可能无法正确显示中文字符,特别是在没有安装相应中文字体的情况下。 - 解决方案:要解决这个问题,开发者需要构建一个支持中文的平台并...
在VB6(Visual Basic 6)中,制作工具栏通常涉及到使用控件和自定义图形,尤其是通过位图(BMP)文件来实现自定义的...对于更高级的应用,你可以进一步研究CommandBar控件的其他特性,如添加子菜单、自定义快捷键等。
QFluentWidgets 同时支持 C++ 和 Python,支持 Windows、Linux 和 macOS,包含了数百个现成的组件和示例供你选择,保证能让你找到一个完美的组件作为千里之行的起点。 QFluentWidgets 充分利用了所见即所得的 Qt...
你可以创建新的`CommandBar`,添加按钮或其他控件,并为这些控件指定事件处理程序。 4. **Sub过程和Function过程**:在VBA中,`Sub`过程用于执行一系列操作,而不返回值。在创建工具栏按钮时,通常会为按钮分配一个...
`CommandBar`和`CommandBarControl`对象分别代表菜单栏和菜单项,通过它们我们可以构建所需的UI结构。 为了将这个自定义菜单实际应用到Word中,我们需要在适当的时候调用`Initialize`和`AddMenu`方法。这通常在...
你可以创建CommandBar对象表示工具栏,CommandBarButton对象表示按钮,CommandBarComboBox对象表示下拉框。通过这些对象,可以编程创建自定义的工具栏和菜单,增加更多的功能和快捷方式。 VBA的面向对象特性使得...
用光标选择所需的存储库或用户,然后回车 Git Search可以直接在页面上输入,而不需要长时间输入。 例子: git git <你的回购>拉 git 问题 git <your> git git <你的组织> git Git Search在他们的页面上...
3. **EVC不支持中文显示** 默认的EVC SDK是基于英文环境编译的,可能缺少中文支持。要解决这个问题,开发者需要构建针对中文环境的SDK,或者导入并使用包含中文字体的SDK。在PBP(Platform Builder)中,可以配置...