我已经开始在Delphi 2009中使用新的内置Ribbon控件并使用自定义框架,因此应用程序按钮和迷你工具栏滑到窗口框架上,但我想知道是否在Vista上它应该使用像玻璃效果一样Office 2007会这样做,如果是这样,我将如何启用此设置.
谢谢你的帮助.
我正在使用 VSTO 3.0,并且功能区设计器给了我一个明显跨文档共享的功能区。
因此,如果我有需要显示在功能区(或切换按钮)中的文档特定状态(例如 XML 标记的数量),那么所有文档似乎都共享功能区实例
我该如何修复这个 TIA
我一直在网站http://wpf.codeplex.com/上查找并发现Ribbon控件找到了我的需求.我想知道它是否需要机器上的任何Office许可证等,或者这只需要工具包DLL.
它是否需要Win-7或兼容XP机器?
我正在制作Office 2007插件,我正在尝试使用XML而不是可视化设计器来自定义功能区但由于某种原因我无法获得使用它的图像...你究竟要做什么?我添加了一个名为Icon1的资源png并尝试了这个:
<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
<ribbon startFromScratch="false">
<tabs>
<tab id="TabToolss" label="Tools">
<group id="MyGroup" label="My Group" visible="true">
<button
id="Button1"
image="WordAddIn1.Properties.Resources.Icon1"
onAction="Button1_Click"
showImage="true"
/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Run Code Online (Sandbox Code Playgroud)
没有运气......不知道为什么.即使我把完整的文件路径放在那里它也行不通.
我从来没有让它工作过一次,所以也许我只是不按照它的方式去做...
我试图在delphi中使用功能区控件,但我遇到了图标问题.我有一个ImageList(16x16 - 显然更高的分辨率是坏的 - 功能区故障),我想用它作为功能区图标.但是这个问题不断发生:
当我取消选中"大图标"复选框时,小按钮(Action2)就可以了.但更大的不是.
另一方面,当我勾选复选框时,会发生这种情况:

如何正确设置功能区?这太疯狂了 :/
我在我的Delphi应用程序中有一个DevExpress VCL功能区有时候应用程序正在进行一些更新,在那段时间我需要确保用户没有做任何事情,所以我希望能够禁用所有控件功能区,但我不能让每个选项卡上的控件计数工作
无论我怎么做,ComponentCount都返回0但我可以看到控件.我的testcode看起来像这样:
procedure TfrmMain.RibbonDisable(var aMessage: TMessage);
var
i: integer;
begin
try
for i := 0 to ribMain.TabCount - 1 do
begin
ribMain.Tabs.Items[i].Active := True;
ShowMessage(IntToStr(ribMain.ActiveTab.ComponentCount));
end;
except
on E:exception do
Logfile.Error('frmMain.RibbonDisable: ' + E.Message);
end;
end;
Run Code Online (Sandbox Code Playgroud) 我在 WPF 中使用 Ribbon 控件,我注意到有 2 个不同的版本。
使用 Microsoft.Windows.Controls.Ribbon;
使用 System.Windows.Controls.Ribbon;
当我同时使用它们时。有了这个:
<ribbon:RibbonWindow x:Class="WPSDashboard.Views.ShellWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ribbon="clr-namespace:System.Windows.Controls.Ribbon;assembly=System.Windows.Controls.Ribbon"
xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
xmlns:prism="clr-namespace:Microsoft.Practices.Prism.Regions;assembly=Microsoft.Practices.Prism"
Title="WPSDashboard"
x:Name="RibbonWindow"
Width="640" Height="480">
<Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Ribbon Region -->
<r:Ribbon x:Name="Ribbon" prism:RegionManager.RegionName="RibbonRegion">
<r:Ribbon.ApplicationMenu>
<r:RibbonApplicationMenu SmallImageSource="Images\SmallIcon.png">
<r:RibbonApplicationMenuItem Header="Exit"
x:Name="MenuItemExit"
ImageSource="Images\Exit.png"
Command="{Binding ExitCommand}"/>
</r:RibbonApplicationMenu>
</r:Ribbon.ApplicationMenu>
</r:Ribbon>
<Grid x:Name="ClientArea" Grid.Row="1">
<!-- Workspace Region-->
<GridSplitter HorizontalAlignment="Left" Width="2" Grid.Column="1"/>
<ContentControl x:Name="WorkspaceRegion" Grid.Column="1" prism:RegionManager.RegionName="WorkspaceRegion" />
</Grid>
</Grid>
</ribbon:RibbonWindow>
Run Code Online (Sandbox Code Playgroud)
我的 Ribbontabs 将加载,但窗口现在看起来像这样:我无法单击关闭并最小化和最大化。<---

我怎样才能让边框变得正常而不是小? …
我开发了一个包含自定义功能区的 Excel 加载项。我希望能够在某些情况下使功能区上的控件无效(启用/禁用),但是我能找到的每个示例都使用模块级或全局变量在首次加载功能区时存储功能区对象。这似乎是一个很好的方法,但是,正如这里列出的那样,有些情况下变量可以为空。
所以我想知道,是否有不同的方法来实现在 Excel 功能区中启用/禁用控件的结果,而不使用变量来存储功能区对象,甚至根本不使用 invalidate 方法?
我有一个本机MFC C++应用程序,我有一个基于功能区UI的版本和基于工具栏的版本.两个EXE的大小相似(~30mb),但运行基于功能区的版本大约需要25s,而工具栏版本大约需要5s.这只是用工具显示框架窗口.我已经介绍了基于功能区UI的版本的启动,并确保花费时间CMFCRibbonBar::LoadFromResource和更深入的时间
BOOL CMFCRibbonInfoLoader::LoadImage(CMFCRibbonInfo::XImage& image, BOOL bSingle)
{
'
'
'
image.m_Image.SetTransparentColor(GetGlobalData()->clrBtnFace); // 15%
image.m_Image.SmoothResize(dblScale); // 64%
'
}
Run Code Online (Sandbox Code Playgroud)
深入挖掘,似乎花了很多时间手动着色工具栏〜总时间的44%.
有没有办法加快这个加载时间,可能是通过设置一个非透明的绘图方案?25秒运行一个程序似乎有点过分,这是一个8核4ghz AMD 8350与EXE图像来自SSD.
编辑: 试过以下有助于理解问题,但没有真正做出有用的答案.
经过一些调整后,似乎是调用 afxGlobalData.EnableRibbonImageScale(FALSE);禁用缩放,但可能会在某些显示器上直观地留下不良结果.如果图像尺寸对于显示器开始是正确的,在我的1920x1080显示器上为40x40像素,则也会跳过缩放.我还没有尝试过,但我想如果你为所有的色带控件指定HDPI图像,你很幸运能够为你的HDPI图像获得1:1的缩放,它也会被跳过.搜索MFC源代码(\ Program Files(x86)\ Microsoft Visual Studio 14.0\VC\atlmfc\include\afxglobals.h)m_bIsRibbonImageScale并获取m_dblRibbonImageScale大部分相关代码.
如果大按钮图像不是32x32,则功能区编辑器似乎将它们视为原样,并且错误地切断基本BMP.因此,将基本大按钮BMP调整为40x40会导致屏幕上出现垃圾.
编辑:我以为Vlad的答案会起作用,但显然MFC功能区资源中使用的XML不是Ribbon XML.请在此处查看MSDN上的相关问题.
编辑进一步讨论在MSDN上这里
我在包含工作簿中所有可见工作表的功能区中有这个下拉列表。用户可以在其中选择一个工作表以跳转到它。这很重要,因为此工作簿中有大量工作表。不幸的是,当工作表的名称很长时,它不会完全显示。我想让它更宽。
我使用 Microsoft Office 的 CustomUI 编辑器使用我不太熟练的 XML 技能创建它。这是代码的一部分:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="InitS3Ribbon">
<ribbon>
<tabs>
<tab id="s3Tab" label="S3 Menu">
<group id="grGeneral" label="General">
<dropDown id="navigation" label="Navigation" getItemCount="GetNavigateItemCount" getItemLabel="GetNavigateLabel" onAction="MenuNavigate" getSelectedItemIndex="SetNavigateIndex" showLabel="true" />
<button id="bShowHideSheet" imageMso="PivotPlusMinusButtonsShowHide" label="Show/Hide sheets" size="normal" onAction="MenuShowHideSheets" />
<button id="bPreviousPage" imageMso="LeftArrow2" label="Previous sheet" size="large" onAction="MenuPreviousSheet" />
<button id="bNextPage" imageMso="RightArrow2" label="Next sheet" size="large" onAction="MenuNextSheet" />
</group>
Run Code Online (Sandbox Code Playgroud)
我发现这个资源说它可以用SizeString属性进行更改,但我什至不确定如何或在何处将其包含在我的代码中。在我看来它应该在 VBA 部分?我不确定我是否理解,我希望得到指导。我不确定现在是否编辑 XML 或 VBA 以及如何编辑。
ribbon ×10
delphi ×3
c# ×2
excel ×2
ms-office ×2
vba ×2
wpf ×2
xml ×2
.net ×1
aero-glass ×1
delphi-2009 ×1
devexpress ×1
excel-2013 ×1
icons ×1
mfc ×1
performance ×1
prism ×1
vcl ×1
vsto ×1
xaml ×1