在Delphi XE5中:我的窗体上有一个TActionManager(称为ActionManager)和一个TRibbon(称为Ribbon)。我正在添加这样的自定义操作:
ActionBar := ActionManager.ActionBars.Add;
newAction := TAction.Create(MainForm.ActionManager);
newAction.Name := 'Topics';
newAction.Caption := 'Topics';
newAction.OnExecute := MainForm.HelpTopicsItemClick;
newMenu := ActionBar.Items.Add;
newMenu.Action := newAction;
newAction.ShortCut := TextToShortCut('F1');
Run Code Online (Sandbox Code Playgroud)
之后,我将它们放在页面/选项卡和组中的功能区上:
rp := TRibbonPage.Create(ActionManager);
rp.Parent := Ribbon;
Ribbon.AddTab(rp).Caption := 'Help';
rg := TRibbonGroup.Create(ActionManager);
rg.Parent := rp;
rg.ActionManager := ActionManager;
rg.Caption := 'Help';
rg.ActionClient := ActionBar;
Run Code Online (Sandbox Code Playgroud)
当我单击它时,该操作工作正常,但是当我按“F1”时,什么也没有发生。当我使用 Delphi 编辑器手动添加操作时,快捷方式工作正常。
我已经尝试过: newMenu.ShortCut := newAction.ShortCut
这没有帮助。我缺少什么?
如何使用 VSTO Ribbons(对于 Outlook 2016)创建动态菜单层次结构?
xml 占位符可能看起来像这样,但我需要在菜单根目录下添加/删除菜单树(而不是 dummySingle)。似乎菜单项需要像“getDependents”回调之类的东西。
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load">
<contextMenus>
<contextMenu idMso="ContextMenuMailItem">
<menu id="Menu Root" label="Menu Root" >
<button id="dummySingle"
label="dummy"
onAction="DummyAction"/>
</menu >
</contextMenus>
</customUI>
Run Code Online (Sandbox Code Playgroud) 我有一个宏,它在打开这个 excel 文件时自动隐藏色带,但是,当我关闭文件时,我希望这些文件重新出现,因此在使用其他文件时,这意味着我不必每次都格式化它们。
我已经为 excel 打开/关闭的时间编写了以下代码。但是,如果不手动单击,则无法使色带重新出现。
Private Sub Workbook_Open()
Application.CommandBars.ExecuteMso "HideRibbon"
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayHeadings = False
Application.DisplayFormulaBar = False
Application.DisplayFullScreen = True
End Sub
Sub Auto_close()
Application.CommandBars.ExecuteMso "hideRibbon"
Application.CommandBars.ExecuteMso "hideRibbon"
ActiveWindow.DisplayGridlines = True
ActiveWindow.DisplayHeadings = True
Application.DisplayFormulaBar = True
End Sub
Run Code Online (Sandbox Code Playgroud) 我想在页脚内容中添加一些按钮,如下图所示.
http://www.telerik.com/help/wpf/images/RadRibbonBar-Features-ApplicationMenu-070.png
有没有办法做到这一点?
似乎找不到任何简单的VBA教程,可以将自定义组添加到Outlook 2010功能区的"主页"选项卡中.
不应该是一些简单的步骤,包括在"主页"选项卡中遍历对象,以编程方式添加具有控件等的组,或重新定义描述"主页"选项卡的XML.
是否有任何示例VBA代码或文章有这个简单的例子?具体来说,我正在尝试添加一个自定义组,其中包含1个文本字段和1个触发自定义宏的按钮.
干杯,戴夫--Tindind在Fedang#outlook-2010-vba
有没有办法简单地隐藏特定的SharePoint功能区栏按钮?我看到了用于隐藏整个功能区栏的CSS代码,但我只想在其上隐藏1个按钮(签到按钮).我尝试过几种方式引用它,例如:
a#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }
ms-cui-ctl-large#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }
a.ms-cui-ctl-large#Ribbon.DocLibListForm.Edit.Commit.CheckIn-Large { display: none; !important }
Run Code Online (Sandbox Code Playgroud)
我的CSS可能是完全错误的,或者我可能会以错误的方式解决它.我怎么能隐藏这个元素?
我正在开发一个程序来管理具有本地UI和远程接口的minecraft服务器.我在功能区栏上有一个按钮,用于启用或禁用远程接口,以及用于输入端口的文本框.目前,我在启用网络时禁用文本框,但是,在我再次将其设置为true后,禁用不会重新启用文本框(设置断点会显示它仍为false).
private void NetToggleChecked(object sender, RoutedEventArgs e) {
portTextBox.IsEnabled = false;
if (ButtonPressedByUser) {
var result = MessageBox.Show("Are you sure you want to enable networking with the current settings?" +
" If not properly configured, it may be possible for an attacker to enter your server.",
"Simple Bukkit Wrapper", MessageBoxButton.YesNo, MessageBoxImage.Warning,
MessageBoxResult.No);
if (result == MessageBoxResult.No) {
ButtonPressedByUser = false;
NetworkToggle.IsChecked = false;
ButtonPressedByUser = true;
return;
}
}
Config.NetConf["enabled"] = "true";
int port;
if (!int.TryParse(Config.NetConf["port"], out port)) {
MessageBox.Show("Port …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程通过VSTO添加Excel功能区.
我的问题和这个问题完全一样.我访问了链接,但它没有帮助我.答案非常糟糕,让我对如何解决这个问题毫无头绪.
如果我直接向项目添加一个Ribbon项目,我可以编译并运行该加载项.但是,当我添加一个新文件夹然后在该文件夹中粘贴一个新项目(功能区)时,我收到一个错误.我认为这与路径有关.
某处,我以某种方式了解到Visual Studio 2012使用了智能文件夹结构(对不起这个糟糕的命名)这意味着它在默认目录中查找文件等.如果你改变了结构,那么你必须编辑一个文件(我不知道哪一个)并指定你的新路径.我怀疑上述问题.
Solution Explorer文件夹结构:

错误消息:
Run Code Online (Sandbox Code Playgroud)> 'MyAddIn.Ribbon.ThisRibbonCollection' does not contain a definition > for 'GetRibbon' and no extension method 'GetRibbon' accepting a first > argument of type 'MyAddIn.Ribbon.ThisRibbonCollection' could be found > (are you missing a using directive or an assembly reference?)
代码:
partial class ThisRibbonCollection
{
internal MyCustomRibbon MyCustomRibbon
{
get { return this.GetRibbon<MyCustomRibbon>(); }
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:为了将部分类指向正确的位置,我需要修改哪些代码(名称空间?)?
请帮帮我。我正在使用xml代码进行adp-project功能区。而且我不明白“ getPressed”和“ onAction”按钮属性之间的区别是什么?
我在ExcelDNA中创建了一个自定义功能区(扩展ExcelRibbon)并重写了GetCustomUI()方法,以便从字符串列表中创建菜单控件.基本上:
public override string GetCustomUI(string RibbonID)
{
string customUIXml =
@"<customUI xmlns='http://schemas.microsoft.com/office/2006/01/customui' loadImage='LoadImage' onLoad='OnRibbonLoaded' >
<ribbon>
<tabs>
<tab id='CustomTab' label='My Dynamic Tab'>
<group id='SampleGroup' label='My Sample Group'>
<menu description='description' enabled='true' id='menuItem' visible='true' size='normal' >";
foreach (string itemName in _ItemNameList)
customUIXml += $"<button id='btn_tool_{itemName}' label='{itemName}' onAction='MyMethod' />";
customUIXml +=
@"</menu>
</group >
</tab>
</tabs>
</ribbon>
</customUI>";
return customUIXml;
}
Run Code Online (Sandbox Code Playgroud)
因为_ItemNameList从不同的文件/系统检索,我不能将此customUI标记直接放入.dna文件(据我所知),因此我通过GetCustomUI()在加载时构建它.
作为概念验证,该onAction方法将_ItemNameList在用户单击菜单项时添加新项.
但是如何让Excel再次调用GetCustomUI以重建XML?
我已尝试使功能区对象本身无效,但这不会触发Excel再次调用GetCustomUI.
我能想到的下一个最好的事情(虽然我还要测试它)是创建一个菜单,其中包含大量不可见的"占位符"按钮(通过指定getVisible回调),当用户点击按钮时,使需要现在变为可见的按钮无效,显示添加到的新项目_ItemNameList.我仍然需要考虑如何获得正确的按钮参考...这也感觉有点脏.
任何想法如何让Excel重建功能区?还可以打开其他想法,以便我可以在ExcelRibbon的菜单中添加项目.