标签: windows-ribbon-framework

如何使Windows Ribbon Framework尊重用户的字体大小?

Office 2007/2010团队的功能区荣誉是用户的(菜单)字体大小.

Windows功能区框架丝带(通过MS画图,和我的应用程序中使用)忽略了用户的(即我)字体的喜好.

截图显示:

  • Excel 2010
  • MS Paint(WRF)
  • 我的申请(WRF)

在此输入图像描述

如何获取Windows Ribbon Framework功能区以符合用户的字体大小?

奖金Chatter

没有单一的"Windows字体".允许用户配置六种不同的字体:

  • 图标标题字体
  • 状态字体
  • 消息字体
  • 菜单字体
  • 标题字体
  • 小标题字体

Office团队的功能区使用菜单字体,这是有道理的,因为功能区是一个菜单.您可以使用以下方式检索菜单字体:

//Win32
SystemParametersInfo(SPI_GETNONCLIENTMETRICS, 0, ref nonClientMetrics, 0); 
nonClientMetrics.lfMenuFont;

//.NET
SystemFonts.MenuFont;

//Delphi
TScreen.MenuFont
Run Code Online (Sandbox Code Playgroud)

色带颜色:

默认情况下,功能区不符合用户的配色方案(请在我的屏幕截图中注明蓝色条带,我的棕色玻璃颜色).这里一个API来改变颜色的色带,你可以在第三色带(一个在我的应用程序托管)看到.

//change ribbon background color
IPropertyStore(framework).SetValue(UI_PKEY_GlobalBackgroundColor, glassColor);

//change ribbon font color
IPropertyStore(framework).SetValue(UI_PKEY_GlobalTextColor, Color.Black);    
Run Code Online (Sandbox Code Playgroud)

奖金阅读

windows-ribbon-framework

17
推荐指数
1
解决办法
1635
查看次数

检测快速访问命令状态

我们有一个使用Windows Ribbon Framework进行UI 的应用程序.该应用程序本身是用Delphi编写的,并使用Windows Ribbon Framework for Delphi与功能区API进行交互.

我们的功能区XML将很少的命令放入快速访问工具栏.然后,使用可以通过使用内置功能区机制(选择下拉/下拉按钮并单击命令名称)或选择More commands打开配置对话框的命令来删除/添加命令.

快速访问快照

我遇到的问题是我无法找到一种方法来获取QA集合中的当前命令状态(无论它们是否可见).

在上面的示例(图片)中,我想检测前五个命令是否被检查,而最后一个命令不是这样,我可以相应地准备配置对话框.

枚举IUICollection和访问存储在里面的项目我没有问题.我也可以获得UI_PKEY_CommandId每个项目.但是,我无法找到读取已检查/未检查状态的方法.我尝试阅读UI_PKEY_BooleanValueUI_PKEY_Enabled集合中的所有项目,但他们没有返回该状态.

我也尝试过监视,IUICommandHandler.UpdateProperty但是当选中/取消选中此项时,它不会被调用(除了用UI_PKEY_Label键调用它).

Ribbon API甚至支持此功能吗?

delphi ribbon windows-ribbon-framework

9
推荐指数
0
解决办法
252
查看次数

Windows功能区框架:如何更改字体外观和大小?

如何更改Windows Ribbon Framwork的UIRibbon 使用的字体和字体大小?

功能区使用的字体与用户选择的字体与Windows首选项不匹配 - 这是我的应用程序使用的首选项.这意味着随着Windows中的字体变大,功能区变小.

请注意每个屏幕截图中的功能区如何变小:

Segoe UI 9pt(Windows默认)

替代文字

Segoe UI 12pt(我用的是什么)

替代文字

Segoe UI 16pt(客户使用什么)

替代文字

你可以看到,当我们到达16pt时,功能区上的文字很难阅读.

背景

用户可以将Windows配置为使用其首选字体大小,例如:

  • 8PT
  • 宋体
  • 12磅

和他们喜欢的字体,例如:

  • MS Sans Serif
  • 微软Sans Serif
  • 宋体
  • Segoe UI
  • 宋体

Windows Ribbon Framework默认使用的字体不是用户的首选项.

编辑:将图片向上移动以捕捉被闪亮的东西吸引的松鼠.
编辑2:添加另一张彩色图片,以获得一个凹凸.
编辑3:编辑以获得凹凸
编辑4:添加另一张不同的图片以获得凹凸


功能区允许自定义功能区的颜色.

以下代码片段用于设置UI_PKEY_GlobalBackgroundColor功能区.在这种情况下,我使用的颜色是用户当前选择的Aero配色方案:

    IUIFramework framework;
    ...

    TColor glass = Dwm.GetColorizationColor();
    VarCast(v, ColorToUIHSB(glass), UI_PKEY_GlobalBackgroundColor.pid);

    IPropertyStore ps = framework as IPropertyStore;
    ps.SetValue(UI_PKEY_GlobalBackgroundColor, PROPVARIANT(v));
    ps.Commit;
Run Code Online (Sandbox Code Playgroud)

现在,色带现在已着色,以匹配Windows的配色方案: …

delphi winapi ribbon user-preferences windows-ribbon-framework

9
推荐指数
1
解决办法
8741
查看次数

WPF ::将RibbonComboBox设置为与RibbonGallery不同的样式

我有一个RibbonComboBox用于设置字体大小.它有一个RibbonGallery列出各种字体大小,显示在适当的FontSize:

<r:RibbonComboBox DataContext="{x:Static vm:RibbonDataModel.FontSizeComboBoxData}"
                  SelectionBoxWidth="30">
   <r:RibbonGallery MaxColumnCount="1"
                    Command="{Binding Command}"
                    CommandParameter="{Binding SelectedItem}">
      <r:RibbonGallery.GalleryItemTemplate>
         <DataTemplate>
            <Grid>
               <TextBlock Text="{Binding}"
                          FontSize="{Binding}" />
            </Grid>
         </DataTemplate>
      </r:RibbonGallery.GalleryItemTemplate>
   </r:RibbonGallery>
</r:RibbonComboBox>
Run Code Online (Sandbox Code Playgroud)

编辑这是我的ViewModel:

public static RibbonDataModel
{
  public static GalleryData<object> FontSizeComboBoxData
  {
     get
     {
        lock (LockObject)
        {
           const string key = "Font Size";
           if (!DataCollection.ContainsKey(key))
           {
              var value = new GalleryData<object>
              {
                 Command = HtmlDocumentCommands.ChangeFontSize,
                 Label = "Change Font Size",
                 ToolTipDescription = "Set the font to a specific size.",
                 ToolTipTitle = "Change …
Run Code Online (Sandbox Code Playgroud)

wpf ribbon ribbon-control windows-ribbon-framework ribboncontrolslibrary

8
推荐指数
1
解决办法
1724
查看次数

TRibbon没有显示标签

我在64位Windows机器(Win 7)和32位Windows机器(XP)上运行Delphi 2010.

我正在尝试学习如何使用TRibbon控件.

我一直在关注Marco Cantu的2009年手册中的例子并观看YouTube演示,但我的控制并没有像书中所解释的那样工作.

我通过右键单击控件添加了两个选项卡.然而,当我将它放在主窗体上时,它与我的截图中的TRibbon完全一样.它没有书本或youtube演示中那么高.

我在运行Windows Xp和Delphi 2010的Win 32笔记本电脑上尝试了相同的操作并获得了完全相同的结果

这是我的机器上的样子

64位笔记本电脑截图

这是在演示中看起来的样子

来自youtube视频演示

再来一次.当它放在表格上时,它不会像我在演示中看到的那样形状和高度.即使我添加标签.在我的Delphi 2010安装过程中,我做错了什么?

delphi delphi-2010 windows-ribbon-framework

7
推荐指数
1
解决办法
907
查看次数

如何在Win32 API中检测Ribbon栏的坐标

我正在Win32 API中创建一个使用现代Ribbon样式UI的应用程序.我已经成功测试了SampleRibbon程序.我遇到的唯一问题是,如何检测功能区栏的X和Y坐标?当我在(0,0)处绘制一个控件时,它会隐藏在功能区栏后面.但我不希望它隐藏在酒吧后面.是否有任何功能来获取功能区栏的坐标,以便我可以在功能区下方自动绘制控件.

winapi windows-ribbon-framework

1
推荐指数
1
解决办法
335
查看次数