定制文档级Ribbon界面的实现思路:

1、excel的文件使用rar+xml的形式保存在本地。

2、用压缩软件打开文件,以规范的格式直接编缉或添加xml文件

3、使用excel文件时,主程序会解析xml文件,根据内容加载数据,包括Ribbon功能区的元素

一、XML是啥

  1、XML就是一个小型数据库,可以用文本文件持久化保存数据。

  2、XML用文本格式保存数据,使它可以兼容不同平台。

  3、有意义的标签使它既保留了扩展性,同时也更易读。

  4、XML本身是一个对象,其中的每一个元素也都是对象(DOM),可以映射到表格数据

  5、XML还有表达对象之间的关系的能力(别忘了它就是数据库,可以说它也是一个关系型数据库)

  6、数据验证技术(schema)保证数据的完整性

和XML有关的技术太多了,一辈子可能也学不完。

二、面向对象的XML

下面的简单示范可以看出普通表格、XML、和使用代码写的“类”有互相转化的能力。

1、excel和xml分别如何表示人类

Name Gender Age Hobby
刘备 32 哭鼻子
关羽 30 耍大刀
张飞 28 卖猪肉
<Persons>
<Person name="刘备" gender="男" age="32" hobby="哭鼻子"/>
<Person name="关羽" gender="男" age="30" hobby="耍大刀"/>
<Person name="张飞" gender="男" age="28" hobby="卖猪肉"/>
</Persons>

  a、每一个Person元素和excel表中的数据行对应。

  b、每一个Person元素都有和excel列名对应的属性。

2、使用vba代码表示人类

类模块:Person(实体类)。

Public name As String
Public age As Integer
Public gender As String
Public hobby As String

标准模块:VBPerson。NEW一个人类的具体对象(类的实例),这个对象和excel的行“对应”

(数据库表中的列可以称为“域--Filed”,表中的每一行可以称为“实体--Entity”)

Dim p1 As New Person
p1.name = "刘备"
p1.age =
p1.gender = "男"
p1.hobby = "哭鼻子"

  a、excel表格的列名和类中的“变量--字段”(这里没有使用属性,但使用属性更合适)有映射关系,同样的和XML也有对应关系。

b、每New一个Person都对应着excel中的一行,也对应着XML中的一个元素。

注:实体类(modal)没有行为,只用来保存数据。表格中的数据也没有行为,XML定制Ribbon虽然有类似OnAction这样的东东,个人感觉也应该理解为属性,不过这个属性的值对应了回调的方法名。

二、XML中的对象和Ribbon元素之间的关系

Ribbon做为对象的容器,他能容纳的对象种类很多。tab(标签)、group(分组)、menu(菜单按钮)、button(按钮)等。

1、这些对象都可以用XML元素来映射,比如button在XML中可以这样表示

<button id="btn" label="我的按钮">

2、也可以表达对象之间的关系,比如一个group(分组)下有一个menu按钮,menu按钮中有两个button

<group id="CustomGroup" label="自定义分组">
<menu id="CustomMenu">
  <button id="btn1" label="按钮一"/>
  <button id="btn2" label="按钮二"/>
</menu>
</group>

补充:Composite设计模式

Ribbon中的元素的关系比较符合Composite设计模式。用树状结构表达“容器+子容器+...+对象”这样的复杂结构。

使用XML定制Ribbon的一点小前奏(稍微再进一步的理解XML)的更多相关文章

  1. BUI Webapp用于项目中的一点小心得

    接触BUI也有一段时间,也用在了移动端的项目开发中,总的来说,该框架用起来也挺灵活的,控件可以自由定制,前提是自己能认真地学习该框架的api,因为api里面说的东西比较详细,如果没有仔细看的,可能有些 ...

  2. 私人定制自己的linux小系统

     私人定制自己的linux小系统 一.前言    linux操作系统至1991.10.5号诞生以来,就源其开源性和自由性得到了很多技术大牛的青睐,每个linux爱好者都为其贡献了自己的一份力,不管是在 ...

  3. 关于win8开发的一点小总结

    我今天做画面的时候,发现了一点小问题. 我在xmal文件里面加了一个CheckBox控件,设置IsChecked属性为True,并添加了Checked事件.Checked事件里面有对另外一个TextB ...

  4. 关于PHP魔术方法__call的一点小发现

    好久没有上博客园写文章了,今晚终于有点空了,就来写一下昨天的一点小发现. 我自己所知,C++,Java的面向对象都有多态的特点,而PHP没有,但PHP可以通过继承链方法的重写来实现多态的属性.而魔术方 ...

  5. net core体系-web应用程序-4net core2.0大白话带你入门-8asp.net core 内置DI容器(DependencyInjection,控制翻转)的一点小理解

    asp.net core 内置DI容器的一点小理解   DI容器本质上是一个工厂,负责提供向它请求的类型的实例. .net core内置了一个轻量级的DI容器,方便开发人员面向接口编程和依赖倒置(IO ...

  6. mycat的schema.xml的个人的一点理解

    官方文档里讲的详细的部分的我就不再赘述了,我只是谈谈我自己的理解 刚开始接触mycat,最重要的几个配置文件有server.xml,schema.xml,还有个rule.xml配置文件 具体都是干啥用 ...

  7. eclipse下java中凝视字体太小和xml中中文字体太小问题解决方法

    我们在win7下进行android应用开发.须要搭建对应的开发环境.如今普遍基本上都是eclipse+adt+sdk,在本人搭建完环境后,发现eclipse下.java中的凝视和xml中的中文字体变得 ...

  8. C与C++在形參的一点小差别

    先看一下以下的代码: int fun(a,b) int a; int b; { return 10; } void main(int argc, char ** argv) { fun(10); re ...

  9. android XMl 解析神奇xstream 六: 把集合list 转化为 XML文档

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

随机推荐

  1. BizTalk开发系列(十六) XML命名空间

    BizTalk开发过程中如果有对XML进行开发操作,比如在自定义代码里操作XML消息或者在Mapping的时候使用Xpath对XML进行操 作.则有机会遇到XML命名空间的问题.常见的是使用Xpath ...

  2. cms修改栏目单页样式错位调整

    if (dt.Rows[0]["ClassTemplet"].ToString().Trim() == "") { rows_key.Style.Value = ...

  3. P4 前端编译器p4c-bm、后端编译器bmv2命令安装 make error问题

    参考:Github 安装p4c-bm: sudo pip install -r requirements.txt sudo pip install -r requirements_v1_1.txt / ...

  4. Python格式化字符串

    在编写程序的过程中,经常需要进行格式化输出,每次用每次查.干脆就在这里整理一下,以便索引. 格式化操作符(%) "%"是Python风格的字符串格式化操作符,非常类似C语言里的pr ...

  5. papi酱视频因违规遭下线整改,你知道原因吗?

    今日4月18日,在微信上的一篇<papi酱遭广电总局封杀 罗振宇1200万恐打水漂>的文章迅速转了起来,说的就是现在网红第一人“papi酱”的视频被广电总局责令下架的消息.箭头直指papi ...

  6. 【转】Unity中的协同程序-使用Promise进行封装(三)

    原文:http://gad.qq.com/program/translateview/7170967 译者:崔国军(飞扬971)    审校:王磊(未来的未来) 在这个系列的最后一部分文章,我们要通过 ...

  7. 【ionic】Mac IOS下真机调试

    模拟调试不能保证真机一定没问题,所以真机调试是非常必要的一步 IOS设备 启用设备调试 在IOS设备中(Iphone,Ipad)中开始web检测器 设备->safari->高级->w ...

  8. HTML中的图像

    格式: 1.JPEG:文件品质高,内存大,文件大小为GIF的1/4,色彩丰富 2.PNG:内存最小,图像不失真,支持透明度设置 3.GIF:适合显示色调不连续或具有大面积单一颜色的图像,比如导航条.按 ...

  9. linux信号机制与python信号量

    1.信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件.在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的.信号是进程间 ...

  10. 从零开始的Android新项目1 - 架构搭建篇

    记录一下新项目的搭建. 试想一下,如果没有历史负担,没有KPI压力,去新搭建一个项目,你会怎么设计和实现呢? 本系列文章不是教你怎么从0开始学Android,从0开始怎么建一个项目,而定位于零负担的情 ...