加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

动态生成Ribbon Bar上的按钮和下拉菜单

(2010-09-08 17:28:26)
标签:

it

分类: Delphi相关
先来看这么一个效果
http://hiphotos.baidu.com/rarnu/pic/item/4d97af18ef74fe2634fa4157.jpgBar上的按钮和下拉菜单" TITLE="动态生成Ribbon Bar上的按钮和下拉菜单" />

这是在DevExpress Bar组件下的Ribbon控件,对于直接的可视设计,要做出这样的效果当然是很容易的。
但是如果需要动态的生成这样的按钮和菜单,却是需要费一定的功夫。
由于Ribbon组件上的按钮,实际上由BarManager提供,而Ribbon组件本身,只是一个容器
因此,无法直接将按钮和菜单添加到Ribbon上,而是必须从BarManager中转。

代码如下:
01 procedure TPlugins.GenerateMenu;
02 var
03 il : TdxBarItemLink;
04 btn : TdxBarLargeButton;
05 bUrl: TPluginBtn;
06 i,j: Integer;
07 begin
08 SetLength(pmPlugCategory, Count);   // pmPlugCategory的声明为pmPlugCategory: array of TdxRibbonPopupMenu;
09 for i := 0 to Count - 1 do
10 begin
11     btn := TdxBarLargeButton(FormMain.BarManager.AddItem(TdxBarLargeButton));
12     btn.Caption := Plugins[i].Category + #13#10  // 此处必须换行,否则按钮文字会被拆分
13     btn.buttonStyle := bsDropDown;
14     il := FormMain.barPluginList.ItemLinks.Add;
15     il.Item := btn;
16     pmPlugCategory[i] := TdxRibbonPopupMenu.Create(FormMain);
17     btn.DropDownMenu := pmPlugCategory[i];
18     for j := 0 to Plugins[i].Count - 1 do
19     begin
20       bUrl := TPluginBtn(FormMain.BarManager.AddButton);
21       bUrl.HLibPath := Plugins[i].Detail[j].Path;
22       bUrl.OnClick := FormMain.PluginClick;
23       il := pmPlugCategory[i].ItemLinks.Add;
24       il.Item := bUrl;
25     end;
26 end;
27 end;

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有