感谢本线程中提供的帮助和建议,我使用 Microsoft Ribbon 框架创建了我的第一个非 Delphi 功能区。
按照A.Bouchez 在该线程中发布的指南,我成功地编译了我的项目并看到了 Microsoft Ribbon 的运行情况。
但是,在执行命令时,我似乎无法让功能区响应输入。
我总是使用 TActionManager 来管理我的事件,因此我所需要做的就是将每个 TAction 从 TActionManager 链接到功能区。按照上面链接的教程,我尝试了以下方法但无济于事:
// actNew is the name of a TAction set in the TActionManager
procedure TfrmMain.actNewExecute(Sender: TObject);
begin
ShowMessage('execute new event');
end;
procedure TfrmMain.CommandCreated(const Sender: TUIRibbon; const Command: TUICommand);
begin
inherited;
case Command.CommandId of
cmdNew: // cmdNew was defined in the Ribbon Designer
begin
// link the ribbon commands to the TActions
actNew.OnExecute(Command as TUICommandAction); // obviously will not work …Run Code Online (Sandbox Code Playgroud) 这是VS2010 + Office 2010加载项.我想要的只是在多个内置选项卡中添加一个按钮(或按钮组).例如,我的按钮应该在New Mail Message Ribbon和New Appointment Ribbon中都可用.我尝试添加一个新选项卡(在可视设计器中),但似乎不起作用.按钮组显示在"新邮件"选项卡上,但不显示在"约会"选项卡上.顺便说一下,我正在使用以下ID:TabNewMailMessage和TabAppointment.
我有一个工作的动态菜单,它是绑定到由应用程序动态控制的分层项目集合的数据.以下参考是WPF声明:
<Menu Grid.Row="1" Grid.ColumnSpan="2" ItemsSource="{Binding Actions}" Style="{StaticResource ResourceKey=dynamicMenu}">
<Menu.Resources>
<HierarchicalDataTemplate DataType="{x:Type wm:AppAction}" ItemsSource="{Binding Path=Items}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="MenuItem">
<Setter Property="IsCheckable" Value="{Binding IsCheckable}" />
<Setter Property="IsChecked" Value="{Binding IsChecked}" />
<Setter Property="Visibility" Value="{Binding Path=IsVisible, Converter={wc:BoolToCollapsedConverter}}"/>
<Setter Property="Command" Value="{Binding Command}" />
<Setter Property="Icon" Value="{Binding Image}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Text}" Value="">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type MenuItem}">
<Separator HorizontalAlignment="Stretch" IsEnabled="False"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<StackPanel Orientation="Horizontal">
<Image Source="{Binding ImageSource}" />
<TextBlock Text="{Binding Text}" />
</StackPanel>
</HierarchicalDataTemplate>
</Menu.Resources>
</Menu>
Run Code Online (Sandbox Code Playgroud)
现在我想使用Microsoft Ribbon控件渲染这个底层菜单结构,最初使用RibbonTab和RibbonGroup为级别0和RibbonButton为级别1(每个选项卡上的单个组)构建它.
不幸的是由于某种原因它没有显示任何东西.这是我到目前为止所说的内容的宣言: …
在下面的链接中,Microsoft描述了两种限制平板电脑上应用程序屏幕旋转的方法.
http://msdn.microsoft.com/en-ca/library/windows/apps/hh700342.aspx
发生的事情是德尔福的(XE3)TRibbon不能很好地处理旋转.它往往会挂起来.
正如所料,MS网站描述了如何从MS开发产品中做到这一点.我不知道如何在我的Delphi项目中做到这一点.
方法1:
将此添加到您的appxmanifest文件:
<InitialRotationPreference>
<Rotation Preference="landscape"/>
<Rotation Preference="landscapeFlipped"/>
</InitialRotationPreference>
Run Code Online (Sandbox Code Playgroud)
我还没有找到appxmanifest应该成为应用程序的一部分,所以我可以在delphi中执行此操作.
方法2:
用代码调用它:
Windows.Graphics.Display.DisplayProperties.AutoRotationPreferences =
Windows.Graphics.Display.DisplayOrientations.Landscape;
Run Code Online (Sandbox Code Playgroud)
要将其迁移到delphi,我需要知道API DLL信息,以便我可以做类似的事情.
有任何想法吗?
是否有一个COM对象或DLL可以让我们访问它?
快速概述我有一个Excel AddIn目标Excel 2013.AddIn有一个自定义RibbonUI,其中包含几个包含工作簿特定值的只读EditBox.使用MDI接口,Excel 2007和2010中的相同AddIn工作正常,但使用2013及其SDI接口.
使用简单的VSTO AddIn,我添加了一个带有EditBox的简单RibbonUI.出于测试目的,我只是想让EditBox反映它出现的窗口的Workbook.Fullname.就像我能够找到的那样,RibbonUI是一个单例,并且没有明显的方法来控制每个工作簿/窗口上的任何编辑控件的值.如果我打开2个Excel工作簿并来回切换(更新Excel.Application的ActiveWorkbookChanged属性上的值),则两个工作簿始终反映最新值.更糟糕的是,只有一个事件会触发,但两个窗口都会更新.
问题的关键在于我无法找到一种方法来控制每个窗口/工作簿中编辑控件的值.我在Excel 2013中找到了单文档界面的编程,除了它没有提到,或提供有关如何执行它的任何参考,只需要你.
我稍后会尝试使用一些示例进行更新,但我想知道是否有人在Excel 2013下使用SDI解决了这个问题?很明显,2013年内置的Ribbon控件可以执行此操作(例如,字体设置),但是文档在如何从用户AddIn完成类似操作方面似乎非常稀疏.
所以我在 PowerPoint 演示文稿中创建了一个宏,我想让其他人可以轻松使用这个宏。从我收集到的信息来看,最好的方法是创建一个Add-in。
我遇到了几篇文章,说明要执行以下操作,但我仍然遇到问题:
我已经完成了上面提到的所有事情,甚至可以在我选择PowerPoint Add-Ins时看到新的 Add-in 。我来这里是因为我找不到运行新加载项的方法,而且我不希望它在启动时自动加载或通过在幻灯片上创建按钮来干扰演示。相反,我希望允许用户从功能区运行此加载项。
想法?
我正在使用 Fluent-Ribbons 在 wpf 中创建我的视图。为了更好地组织我的代码,我想将不同的 RibbonTabItems 放入它们自己的文件中。
问题是:设计器没有显示ribbontab的内容。我只看到空白页。
有没有办法让 RibbonTab 在设计器中可见?
我正在学习如何使用 Spring Boot 和 Spring Cloud 来使用微服务。我在选择 spring cloud 和 boot 版本时遇到问题 - 我无法使用注释,@RibbonClient因为我还没有找到依赖项。
我想使用最新版本的 spring cloud 和 spring boot,但我没有找到功能区依赖项。我想使用spring boot 2.4.1和spring cloud 2.20.0.x。
我找到了好看的彩带(DotNetBar,DivElements,...)的几个控制集,但都需要至少100美元的许可证.是否有一个看起来像商业一样好的免费控件?
我正在使用Microsoft提供的WPF功能区控件.
问题在于,当我使用DataTemplate填充a时RibbonApplicationSplitMenuItem,我得到一个额外的嵌套级别,我认为不应该存在.
以下是相关的WPF代码:
<Window.Resources>
<DataTemplate DataType="{x:Type cfg:PluginInfoConfigurationElement}" x:Key="GotoPluginAppMenuItem">
<ribbon:RibbonApplicationMenuItem
Header="{Binding Path=Key}"
ImageSource="{Binding Path=Image}"/>
</DataTemplate>
</Window.Resources>
<ribbon:RibbonApplicationMenu>
<ribbon:RibbonApplicationSplitMenuItem x:Name="LoadPluginMenuItem"
ItemsSource="{Binding Source={StaticResource NlpModel}, Path=AvailablePlugins}"
Header="Plugins"
ItemTemplate="{StaticResource GotoPluginAppMenuItem}">
</ribbon:RibbonApplicationSplitMenuItem>
<ribbon:RibbonApplicationSplitMenuItem x:Name="LoadPluginMenuItem2"
Header="Plugins">
<ribbon:RibbonApplicationMenuItem
Header="FooPlugin"
ImageSource="Images/icon-32.png"/>
<ribbon:RibbonApplicationMenuItem
Header="Invalid"
ImageSource="Images/icon-32.png"/>
</ribbon:RibbonApplicationSplitMenuItem>
<!-- Other items to fill the menu -->
</ribbon:RibbonApplicationMenu>
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
使用DataTemplate http://img571.imageshack.us/img571/9915/screentemplate.png 使用数据模板.
我想要什么http://img43.imageshack.us/img43/9168/screendesired.png 没有模板.
如您所见,使用DataTemplate时会出现额外的嵌套级别.我怎么能防止这种情况?
ribbon ×10
c# ×4
wpf ×3
.net ×2
delphi ×2
vsto ×2
add-in ×1
data-binding ×1
datatemplate ×1
excel-2013 ×1
macros ×1
outlook ×1
powerpoint ×1
spring-boot ×1
spring-cloud ×1
tablet ×1
vba ×1