Ribbon_窗体_实现Ribbon风格的窗体

随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格。
那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的。

首先,delphi本身并没有Ribbon风格的窗口可以直接拿来使用,而市面上很多类似于Ribbon的风格都是用截图法做出来的,那样做很麻烦,而且对于图片的控制要求非常高。这样无疑是增加了软件的成本,这里介绍的方法是使用第三方控件,DevExpress Bar 6 来完成Ribbon风格的界面。

首先下载并安装DevExpress Bar 6,注意必须是6,以往的版本没有Ribbon风格,然后将它安装到Delphi2007中。接下来就能够开始进入正题了。

一、拖放必要的控件

dxBarManager ,  dxBarApplicationMenu ,   dxRibbonPopupMenu  ,  dxBarScreenTipRepository  ,  dxRibbonStatusBar  

这些控件都是Ribbon必备的,将它们都拖到窗体上。

拖上后的界面如图所示,可以看到,Ribbon的Tab已经显示出来了,但还不是我们要的效果。

接下来, 继续

 a. 设置控件的属性。
  1. 设置dxRibbon的BarManager属性为DxBarManager控件,

2. 设置dxRibbonPopupMenu的Ribbon属性为dxRibbon控件。

 b. 双击dxBarManager控件,然后 新建一个ToolBar

然后在Object Inspector中会多出一个ToolBar  (Custom 1) ,名称为 dxBarManager1Bar1

c. 设置dxRibbon 的 QuickAccessToolBar.ToolBar 属性为 dxBarManager1Bar1,

马上可以看到,ApplicationMenu已经显示出来了。

d. 右键点击ApplicationMenu右边的小箭头,添加几个Button。

1. 然后再双击dxBarManager,添加ToolBar (Custom 2 ) ,

2. 在dxRibbon上点击右键,选择Tabs Editor,在弹出的窗口中选中Tab。双击Groups属性,添加一个Group,然后将新增的ToolBar关联到Group中。

得到的程序界面如图所示

现在运行一下程序,看看效果

大致已经看得到效果了,不过和office2007还有一点不同,我们得把标题栏去掉,让标题栏的文字显示在Ribbon中。这个地方需要一个小技巧。按F12切换到代码视图,在uses下添加 dxRibbonForm的引用,把窗体的基类从TForm修改为TDxRibbonForm。

把dxRibbon控件的SupportNonClientDrawing属性设为True。再次运行程序。

现在看到的效果就是Ribbon了,但是ApplicationMenu点下去还是没有东西,我们要在ApplicationMenu下加一个菜单。双击dxBarApplicationMenu控件的ItemLinks属性,在屏幕左上方会发现一个小窗口,这个窗体就是用来做ApplicationMenu的,向里面添加按钮和组即可。

Ribbon_窗体_实现Ribbon风格的窗体的更多相关文章

  1. delphi 实现Ribbon风格的窗体

    随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格.那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的. 首先,Delph ...

  2. 【转】实现Ribbon风格的窗体

    随着office2007的兴起,微软让我们看到了Ribbon风格的窗体,现在很多软件也都开始使用Ribbon风格.那么我们如果要自己开发,应当怎么做呢?本文就是为大家解开这个疑团的. 首先,Delph ...

  3. 探索Popupwindow-对话框风格的窗体(

    Android中还是会经经常使用到Popupwindow.一种类似于对话框风格的窗体,当然类似于对话框风格也能够用Activity,能够參考:Android中使用Dialog风格弹出框的Activit ...

  4. Extjs 窗体居中,双重窗体弹出时清除父窗体的鼠标事件

    这个是监控窗体缩放的事件 缩放中居中主要在 'beforeshow' 和 'destroy'两个事件里面监控 var EditTempWindow; Ext.EventManager.onWindow ...

  5. Delphi实现窗体内嵌其他应用程序窗体

    实现原理是启动一个应用程序,通过ProcessID得到窗体句柄,然后对其设定父窗体句柄为本程序某控件句柄(本例是窗体内一个Panel的句柄),这样就达成了内嵌的效果. 本文实现的是内嵌一个记事本程序, ...

  6. Qt窗体关闭时,如何自动销毁窗体类对象

    Qt窗体关闭时,如何自动销毁窗体类对象     要对你的窗口设置WA_DeleteOnClose属性,默认的情况下关闭窗口仅仅意味着隐藏它 ImgWindow1->setAttribute(Qt ...

  7. Delphi MDI程序 父窗体如何调用当前活动子窗体的函数/过程

    一个MDI文本文件编辑器打开了N个子窗体子窗体的.pas文件有一些public的过程和函数我想在父窗体调用当前活动的子窗体函数我用Self.ActiveChildForm无法调用直接frmEdit.x ...

  8. [GUI]界面开发类库-Ribbon风格 [转]

    [GUI]界面开发类库 如果我们不十分清楚需要什么样的界面风格及如何实现,请按以下两个步骤操作: (1)       搞清楚这种风格叫什么名字 (2)       查现有的比较著名的GUI库是否已有相 ...

  9. DirectUI中模态对话框和菜单的原理(自己控制整个Windows消息循环。或者,用菜单模拟窗体打开时用SetCapture取得控制权,一旦窗体收到WM_CAPTURECHANGED消息就把窗体退出)

    经常有人问关于模态对话框和系统菜单内部实现原理方面的问题, 因为系统通过API隐藏了太多细节,这2个问题确实令初学者甚至是有经验的开发者困扰, 下面是我个人的一些经验总结. 先说模态对话框,外部看模态 ...

随机推荐

  1. bootstrap_UI

  2. jdownload的使用

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. Yii2的view需要链接跳转

    添加 use yii\helpers\Url; view中的连接 <?= Url::toRoute('post/index');?>//post为你的当前控制器名,index为view模版

  4. codevs1746 贪吃的九头龙

    [问题描述]传说中的九头龙是一种特别贪吃的动物.虽然名字叫“九头龙”,但这只是说它出生的时候有九个头,而在成长的过程中,它有时会长出很多的新头,头的总数会远大于九,当然也会有旧头因衰老而自己脱落.有一 ...

  5. wifi与wimax

    这几天在看文献中看到802.11a,802.11n和802.16e这几种无信通信协议标准,在网上查了相关资料后,看到有个帖子总结得不错,故将其转载过来. 转:http://blog.csdn.net/ ...

  6. JAVA-封装

    1.什么是封装? 顾名思义,封装就是装起来,圈起来的意思,用于类与对象中来讲,就是在一个类中把对象拥有的属性和隐藏信息(条件)进行封装,不允许外部程序直接访问,而必须要通过该类提供的方法来实现对隐藏信 ...

  7. POJ2299Ultra-QuickSort(归并排序 + 树状数组求逆序对)

    树状数组求逆序对   转载http://www.cnblogs.com/shenshuyang/archive/2012/07/14/2591859.html 转载: 树状数组,具体的说是 离散化+树 ...

  8. Android讯飞语音云语音听写学习

    讯飞语音云语音听写学习         这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google" ...

  9. linux set ff命令

    在windows下写的代码传到linux上无法直接运行时 vi 文件名 :set ff=unix :wq 这样就可以运行了

  10. Java操作xml文件

    Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...