delphi下实现ribbon界面的方法(一)

office 2007和2010是现在大多数人经常使用的办公软件,几乎每天都在使用。因此,在软件中如果使用类office的界面样式,客户用着非常习惯,而且学习曲线低,office界面特有的可以收起工具栏的性质,也增大了用户的界面内容,因此,非常受广大用户的喜欢。

那么我们能不能也作出这么好的界面呢?答案当然是肯定的。这种界面的样式叫ribbon,中文名称叫丝带。在VS2010中,VC++和wcf都给ribbon的开发提供了非常好的支持,vc++下更是提供了一个完整的向导,可以作出非常漂亮的界面。但是由于。net下开发的应用程序,因为发布时需要,net框架,因此发布时应用程序非常庞大,而且win XP下没有sp3的支持,还安装不上,对客户的机器环境要求比较高,所以推广面临困难。

在winform开发一直非常优秀的delphi,能否实现呢?答案当然也是肯定的,而且开发方法非常多。delphi开发的ribbon程序,不需要任何附带的环境支持,软件发布时,只把exe文件拷贝过去就可以使用,而且delphi优秀的编译器编译出来的应用程序运行速度快、占用内存小。

那么delphi下有几种开发ribbon的方式呢?我最近查阅了一些国内外的资料,主要有三种方式,这三种方式各有所长,但是都能做出非常漂亮的ribbon程序。

今天,我就跟大家分享第一种ribbon开发方式,利用delphi2010自带的tribbon控件的开发ribbon。这种方式开发出来的程序没有office那么绚丽,但是这种方式不利用第三方组件,是免费的,因此,如果项目运行比较紧张,利用这种方式也是非常不错的选择,并且界面经过美化后,也没有想象的那么难看。

下面言归正传,我们开始开发过程。首先,建立一个vcl application。在tool palette选择TRibbon控件,如下图:

放在form上,如下图:

  

Tribbon组件是一个容器,可以把应用程序的所有操作都集成到这个Tribbon控件中,并且所有的设计都是可视的非常直观,在开发时,还可以参考office的样式,当然,最好是有自己的风格。容器中可以建立应用程序菜单(Application menu)、快速访问工具栏(Quick Access ToolBar)、多个tab,每个tab下,可以建立多个组(group),每个组里面可以放多个相关联的控件。

一般情况在,与文件或者系统相关的操作都会放在应用程序菜单下,例如软件的备份恢复,换名登录,打印等等。鼠标右键tribbon,可以添加application menu,ribbon左上角会增加一个圆形图标 。(在添加application时,必须先指定tribbon组件的action manager属性,也就是在窗体中增加action manager控件,这是一个神奇的控件,整个软件的调动都是通过action manager来控制的)

经常使用的功能可以放在快速访问工具栏中,无论程序切换到那个tab,都可以通过鼠标直接点击进行操作。例如保存、撤销等等。鼠标右键Tribbon,可以天剑Quick Access ToolBar。

tab的数量要根据自己的需要,鼠标右键Tribbon就可以添加 。然后再在tab中建立功能组(group)。

例如我下面的例子,因为我要做一个文本编辑器,所以我要建立主页和样式两个tab,建立一个application menu,一个Quick Access ToolBar。主页中建立剪贴板(clipboard),段落(paragraph),字体(font),编辑(edit)、查找(find)五个group,样式中建立一个ribbon style group,delphi2010默认提供了三种ribbon的样式,分别是蓝色,黑色和银色。

Tribbon组件还有一个重要的属性,就是showhelp,如果设置为true,则会在ribbon的右上角显示帮助图标,可以把帮助连接到这个图标上。

增加了这内容后,form的样式是这样的:

下面,我们添加一个richedit控件(最好是WPTools组件的TWPRichtext控件,功能会更强大,因为版权的关系,我的演示程序就用richedit控件了)。为了美观和更贴近于word,最好是把richedit控件放在gridpanel下。运行程序,现在就可以输入文字了,但是,程序还是什么都干不了。

非常可贵的是,action manager可以给ribbon增色,actionmanager中可以增加新的action,还可以选择系统提供的标准的action。大家可以只要在界面上操作一次就会了。

我们把新加的各种action直接拖放就可以放在各个分组或者application menu上面,非常方便。经过拖放后,我的界面如下:

现在运行程序,一个简单的word就实现了,但是,ribbon的样式,还不能实现,需要编写代码(注意,到现在我们还没有编写一行代码!)。我们在action manager中自定义几个action,caption分别为:黑色、蓝色和银色,对action编程,代码如下:

procedure TForm11.Action1Execute(Sender: TObject);
begin
  Ribbon1.Style:=RibbonLunaStyle;
end;

procedure TForm11.Action2Execute(Sender: TObject);
begin
Ribbon1.Style := RibbonObsidianStyle;
end;

procedure TForm11.Action3Execute(Sender: TObject);
begin
  Ribbon1.Style := RibbonSilverStyle;
end;

就实现了切换不同的ribbon风格

但是这个软件还不行,你们发现缺少什么了吗?对,还缺少图标,没有图标指示,有时客户不知道你的功能是干什么的,尤其我的语文这么烂!O(∩_∩)O哈哈~。那么,我们就在form里面加一个imagelist,把office的图标拿下来,现在有很多软件可以做到这一点。但是,光有图标还是不行的,如果鼠标在每个图标上面的时候,都有一个非常清楚的操作提示,那么,我们的软件甚至可以没有帮助,用户一样可以很清楚的知道软件是怎么使用的,那该多好呀!delphi的ribbon组件下面专门有一个组件,就是做这个的,他的名字叫ScreenTipsManager,他的主要功能就是给各个功能按钮提供提示!设置tribbon控件的screentips属性为新添加的ScreenTipsManager,每个按钮就会显示相应的提示!默认的提示就是每个按钮的hint,我们可以修改hint,也可以在ScreenTipsManager控件中编辑,还可以显示提示窗口的图标、页眉、页脚。但是一定要设置form的showhint属性之后才能显示。

全部编辑完以后,界面如下:

是不是感觉很漂亮?其实做这样一个程序也就是1个小时的时间,文件大小在2M多,如果是release版并且压缩的话,1M多一点,随便拷贝到任何计算机都能用,不需要乱七八糟的框架支持。

这个程序还可以做的更好,例如加入字体字号、文字变形等,也就是word能实现的功能基本都可以实现,只是richedit控件不是很给力。要是WPTools控件就好了。

下一章将利用devexpress实现ribbon,比delphi2010自带的功能要强大,但是devexpress是需要付费的,有购买过的大侠可以参考。

转载于:https://www.cnblogs.com/m0488/archive/2013/05/02/3054910.html

delphi下实现ribbon界面的方法(一)相关推荐

  1. 台式计算机欢迎界面下不去,Win7系统开机不显示欢迎界面的方法

    现在办公人员做事情都讲究效率,甚至连电脑开机都不放过,win7系统加快开机速度的方法有很多种,开机不显示欢迎界面便是其中之一.有些用户觉得开机显示欢迎界面是非常浪费时间的一件事,想要删除电脑中的欢迎界 ...

  2. Linux图形界面的安装和卸载,在CentOS下安装和卸载图形化界面的方法

    虽然说text模式下系统占用资源小,但是有时候确实在图形界面下操作更方便,所以,学会在centos下安装图形界面是必须会的.图形界面有两个,可以任选其中一个,看你的更新源当中有哪个就安装哪个吧. ce ...

  3. (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)...

    上一节中鸡啄米讲了为Ribbon Bar添加控件的方法.本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数. 一.为Ribbon Bar添加更多Ribbo ...

  4. Delphi下的COM编程

    Delphi通过向导可以非常迅速和方便的直接建立实现COM对象的代码,但是整个COM实现的过程被完全的封装,甚至没有VCL那么结构清晰可见. 一个没有C++下COM开发经验甚至没有接触过COM开发的D ...

  5. VS2010/MFC编程入门之五十三(Ribbon界面开发:为Ribbon Bar添加控件)

    前面一节中鸡啄米为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节教程就来初步讲讲怎样为Ribbon Bar添加Ribbon控件. VS2010为Ribbon界面开发提供了Ribbon De ...

  6. DELPHI下的SOCK编程(转)

    DELPHI下的SOCK编程       本文是写给公司新来的程序员的,算是一点培训的教材.本文不会涉及太多的编程细节,只是简单讲解在DELPHI下进行Winsock编程最好了解的知识. 题外话:我认 ...

  7. 【MFC】Ribbon界面开发(二)

    01.目录 目录 01.目录 02.本文内容 03.Ribbon实例 04.本文小结 02.本文内容 前面一节中为大家简单介绍了如何创建Ribbon样式的应用程序框架,本节就来初步聊聊怎样为Ribbo ...

  8. Delphi下利用WinIo模拟鼠标键盘详解

    本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...

  9. 列举某域名下所有二级域名的方法

    这里介绍三种列举某域名下所有二级域名的方法 1.命令行下列举 此方法好像是hoky很久以前写的,不过原文步骤有点乱,我又重新整理了一下,以我们小组的站为例 C:\Documents and Setti ...

最新文章

  1. leetcode算法题--可获得的最大点数
  2. [luoguP2896] [USACO08FEB]一起吃饭Eating Together(DP)
  3. 几个删除重复记录的SQL语句
  4. 《C语言深度解剖》中的.c/.h 程序模板及函数注释风格
  5. python控制条件语句_Python条件控制语句
  6. 深度残差收缩网络再次理解(论文地址+代码地址+代码理解)
  7. devops 分支管理策略_DevOps招聘策略以吸引顶尖人才
  8. 重庆大学微型计算机基础实验,计控课程方案设计书.doc
  9. 随想录(单片机和步进电机学习笔记)
  10. matlab costas环,MATLAB写COSTAS环的问题。
  11. python 文件批量转换格式_python实现快速文件格式批量转换的方法
  12. [转]出租车中的MBA
  13. 基于Axis1.4的webservice接口开发(环境搭建)
  14. Java算法与数据结构、设计模式、高并发视频教程免费下载
  15. YUV和RGB格式分析
  16. 三地五中心(ldc(逻辑数据中心)单元化)和容灾
  17. 朱松纯:浅谈人工智能:现状、任务、构架与统一 感悟以及部分内容的概括
  18. 1513_人月神话阅读笔记_再论没有银弹
  19. 技术杂谈-再谈软硬SDN(2)
  20. php 没有libmysql.dll,php_mysql_libmysql.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家...

热门文章

  1. php rabbitmq demo
  2. 关于逻辑删除标识字段value的设定
  3. Ruby学习-第二章
  4. 什么是Ext(ExtJs)【转载】
  5. Windows Mobile开发应该选择哪种开发语言?
  6. 公众号出现该公众号提供的服务出现故障分析
  7. python实现组合问题_python3 最基本且简单的实现组合设计模式
  8. JavaScript之继承模式,命名空间,对象枚举
  9. android 程序崩溃日记捕捉
  10. svn redis和rabbitmq服务启动