• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

实例讲解如何在Delphi中动态创建dxBarManager内容

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、dxBarManager中一些非常重要的概念:

   TCategorys:为了方便对dxBarManager中的项目进行归类而设计的一个属性,当然,只使用默认的名字为Default的Category也没有关系,只是如果在设计界面上只用一个而不用其他的Category会显得非常乱。

    TdxBarSubItem:可以挂载其他TdxBarItem项目的一个容器,相当于【主菜单】。

    TdxBarButton:具体的项目栏,相当一个【菜单项】。

    TdxBarSepartor:分隔线。

    TdxBarItemLink:项目链接关系,比如,想要把一个dxBarSubItem对象放置在一个容器对象上(如想放置在dxBar上),其步骤就是:先在dxBar上创建一个dxBarItemLink,然后让这个新建的dxBarItemLink.Item指向这个dxBarSubItem。同样的道理,如果想要把一个dxBarButton对象挂载在一个dxBarSubItem对象容器下,也是先创建一个dxBarItemLink,然后让这个新建的dxBarItemLink.Item指向该dxBarButton。

二、创建一个TdxBarSubItem,并在它下面挂载5个TdxBarButton

 

procedure TMainForm.btn_AddClick(Sender: TObject);
var
  aItemLink: TdxBarItemLink;
  aSubItem: TdxBarSubItem;
  aBarButton: TdxBarButton;
  aSeparator: TdxBarSeparator;//分隔线
  i: Integer;
begin
  //创建一个dxSubItem,相当于创建一个主菜单项
  aSubItem := TdxBarSubItem.Create(Self);
  i := aSubItem.BarManager.Categories.Count+1;
  aSubItem.Caption := Format('系统菜单%d',[i]);

  aItemLink := aSubItem.BarManager.Bars[0].ItemLinks.Add;
  aItemLink.Item := aSubItem;

  //======以下这两行代码,纯属为了把每个dxSubItem归属到一个不同的类别下====//
  //==同时也是为了方便在dxBarManager中统计出到底创建了多少个“主”菜单
  //未清除Category之前,dxBarManager在创建时默认会创建一个名为Default的Category
  aSubItem.BarManager.Categories.Add(Format('Categories_%-2d',[i]));
  aSubItem.Category := i;

  //创建一个dxBarButton,相当于创建一个明细菜单项
  for i := 1 to 5 do
  begin
    aBarButton := TdxBarButton.Create(Self);//内存资源由Self负责管理
    aBarButton.Caption := Format('菜单项%d',[i]);
    aBarButton.OnClick:= mi_ItemOnClick; //动态添加Button的Onclick单击事件

    aItemLink := aSubItem.ItemLinks.Add;
    aItemLink.Item := aBarButton;

    if (i mod 3 = 0) and (i<5) then //放上一个分隔线
    begin
      aSeparator := TdxBarSeparator.Create(Self);
      aSeparator.Caption := '分隔线';
      aSeparator.ShowCaption := False;
      aItemLink := aSubItem.ItemLinks.Add;
      aItemLink.Item := aSeparator;
    end;
  end;
end;

三、显示dxBarManager中的内容,看看它到底创建一些什么东西。

 

 

procedure TMainForm.btn_DisplayClick(Sender: TObject);
var
  I: Integer;
begin
  //看看dxBarManager1中到底有些什么东西
  Memo1.Clear;
  Memo1.Lines.Add(Format('dxBarManager中Category总数量=%d,Category Name分别为:',[dxbarManager1.Categories.Count]));
  Memo1.Lines.AddStrings(dxBarManager1.Categories);
  Memo1.Lines.Add('=================================');
  for I := 0 to dxBarManager1.ItemCount-1 do
  begin
    Memo1.Lines.Add(Format('%.3d:Caption=%-10s,Category=%2d,%-20s',
      [i+1,dxBarManager1.Items[i].Caption,dxbarManager1.Items[i].Category,dxBarManager1.Items[i].ClassName])
    );
  end;
end;

四、如何清除dxBarManager中的内容

 

 

procedure TMainForm.btn_ReleaseClick(Sender: TObject);
var
  I: Integer;
begin
  //dxBarManager1Bar1.ItemLinks.Clear;
  dxBarManager1.Categories.Clear;
  for i:=dxBarManager1.ItemCount downto 0 do //必须使用downto
    dxBarManager1.Items[i].Free;
end;

五、看看运行效果

 

六、Demo下载

点击下载Demo&Exe源码

版权声明:本文为博主原创文章,未经博主允许不得转载。

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi 不规则窗体与桌面宠物发布时间:2022-07-18
下一篇:
[matlab] MATLAB 界面编程 傻瓜教程发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap