您的位置:首页 > 编程语言

程序开发界面与代码分离技术-界面描述语言

2010-01-20 15:57 302 查看
下载界面描述语言示例:http://download.csdn.net/source/2008918
一、原理

简单地说可以认为是一个软件界面
平台,这个语言只专注与界面生成,并能很好地实现界面与主程序的交互。

界面描述语言组件实现了根据脚本的定义代码进行界面的创建、管理及交互。

交互是双向的,界面通过控件的事件与主程序进行交互,而控件的响应事件是相对固定的。

只要在主程序中使用

AddInterfaceFunction
(
主窗口关闭
);

将函数添加到函数表中,都能在界面中将某一事件与这个函数进行映射。

若主程序要操控界面元素,可以使用“主窗口.
面板一.
编辑控件1
”这样的命名方式进行引用。



(不能上传图片)

二、主要优点

1
、实现程序功能与界面的分离,将程序员从复杂的界面开发中解脱出来,让程序员能专注于程序的功能开发。

2
、大大降低了软件界面开发的难度,以往开发软件界面必须要有专业的程序员开发才能实现,而使用界面设计语言只需要简单学习一下这个语言的语法(语法非常简单),就能进行界面开发,根本不需要很专业的程序开发技术。界面开发可以让更专业的美工人员来实现,即能大大缩短软件的开发周期,又能使软件更加美观专业。

3
、实现了软件的功能与界面的无关性,可以使软件自由地换肤(就像人穿衣服一样),大大提高了软件的灵活性和趣味性。

4
、平台无关性。

界面脚本即可以用在
Windows
平台下,也可以用在
Linux
下,非常方便软件的移植。

5
、语言无关性。

无论你是用
VC

VB

Delphi
还是
C#
开发程序,都可以使用界面设计语言所设计出来的界面。

6
、升级方便。

只需要对
DLL
进行一定的升级,就能支持很多的控件。

//界面描述语言示例

窗口 主窗口<类型 = 窗口类型_通用,标题="O界面设计语言示例",边框=0,/*背景色=0xFF1111,右下背景色=0x001180,背景图片="background.bmp",*/宽度=500,高度=500> /*普通窗口*/

{

事件映射<事件_窗口_创建,主窗口创建>; //表示当"事件_窗口_创建"这个事件发生时,"主窗口创建"这个函数将被调用

事件映射<事件_窗口_关闭,主窗口关闭>; //表示当"事件_窗口_关闭"这个事件发生时,"主窗口关闭"这个函数将被调用

层 第一层

{

控件 ImageList<类型=控件_图像列表,位图="工具图标.bmp",/*掩码位图 = "",*/颜色位=32,宽度=16,高度=16,标识号=10>

/*控件 Menu<类型=控件_菜单,菜单项类型=0,图像列表标识号=10,主菜单=1> //主菜单

{

控件 SubMenu1<类型=控件_菜单,菜单项类型=1,标题="文件(&F)"> //子菜单

{

控件 Menu_New<类型=控件_菜单,菜单项类型=2,标题="新建(&N)",标识号=100> //菜单子项

控件 Menu_Open<类型=控件_菜单,菜单项类型=2,标题="打开(&O)",标识号=101> //菜单子项

控件 Menu_Save<类型=控件_菜单,菜单项类型=2,标题="保存(&S)",标识号=102> //菜单子项

控件 Menu_Split<类型=控件_菜单,菜单项类型=3> //菜单分隔条

控件 Menu_Exit<类型=控件_菜单,菜单项类型=2,标题="退出(&E)",标识号=103> //菜单子项

}

控件 SubMenu2<类型=控件_菜单,菜单项类型=1,标题="编辑(&E)"> //子菜单

{

控件 Menu_Copy<类型=控件_菜单,菜单项类型=2,标题="复制(&C)",标识号=104> //菜单子项

控件 Menu_Paste<类型=控件_菜单,菜单项类型=2,标题="粘贴(&P)",标识号=105> //菜单子项

}

}*/

控件 Menu2<类型=控件_菜单,菜单项类型=0>//主菜单

{

事件映射<事件_菜单_单击,菜单处理>;

控件 SubMenu1<类型=控件_菜单,菜单项类型=1,标题="文件(&F)",标识号=200> //子菜单

{

控件 Menu_New<类型=控件_菜单,菜单项类型=2,标题="新建(&N)",标识号=201> //菜单子项

控件 Menu_Open<类型=控件_菜单,菜单项类型=2,标题="打开(&O)",标识号=202> //菜单子项

控件 Menu_Save<类型=控件_菜单,菜单项类型=2,标题="保存(&S)",标识号=203> //菜单子项

控件 Menu_Split<类型=控件_菜单,菜单项类型=3> //菜单分隔条

控件 Menu_Exit<类型=控件_菜单,菜单项类型=2,标题="退出(&E)",标识号=204> //菜单子项

}

控件 SubMenu2<类型=控件_菜单,菜单项类型=1,标题="编辑(&E)",标识号=300> //子菜单

{

控件 Menu_Copy<类型=控件_菜单,菜单项类型=2,标题="复制(&C)",标识号=301> //菜单子项

控件 Menu_Paste<类型=控件_菜单,菜单项类型=2,标题="粘贴(&P)",标识号=302> //菜单子项

}

}

/*

控件 ToolBar<类型=控件_工具条,图像列表标识号=10,坐标X=0,坐标Y=0,宽度=300,高度=24,显示提示=1>

{

控件 ToolBarButton1<类型=控件_工具条按钮,标识号=200,图像序号=0,菜单标识号=200,标题="打开",提示文本="打开文件">

控件 ToolBarButton2<类型=控件_工具条按钮,标识号=201,图像序号=0,菜单标识号=300,标题="打开",提示文本="打开文件">

}

*/

控件 Rebar<类型=控件_多重工具条,坐标X = 0,坐标Y = 0,宽度=500,高度=30,锚点=顶边锁定>

{

控件 ToolBar1<类型=控件_工具条,图像列表标识号=10,坐标X=0,坐标Y=0,宽度=300,高度=24,显示提示=1>

{

//这里引用的菜单标识号必须为子菜单,不能是第一级菜单

控件 ToolBarButton1<类型=控件_工具条按钮,标识号=200,图像序号=0,菜单标识号=200,标题="打开",提示文本="打开文件">

控件 ToolBarButton2<类型=控件_工具条按钮,标识号=201,图像序号=0,菜单标识号=300,标题="打开",提示文本="打开文件">

}

控件 ToolBar2<类型=控件_工具条,图像列表标识号=10,坐标X=0,坐标Y=0,宽度=300,高度=24,显示提示=1>

{

控件 ToolBarButton1<类型=控件_工具条按钮,标识号=300,图像序号=0,标题="打开",提示文本="打开文件">

控件 ToolBarButton2<类型=控件_工具条按钮,标识号=301,图像序号=0,标题="打开",提示文本="打开文件">

}

}

//控件 Animation<类型=OCT_Animation,标题="确定",坐标X = 0,坐标Y = 0,宽度=50,高度=30>

控件 Button<类型=控件_按钮,标题="确定",坐标X = 300,坐标Y = 80,宽度=50,高度=30,图标="button.ico",边框=边框_默认,锚点=右底边锁定>

{

事件映射<事件_按钮_单击,InterFaceFun>;

}

控件 CheckBox<类型=控件_复选按钮,标题="确定",坐标X = 10,坐标Y = 40,宽度=50,高度=30>

控件 ComboBox<类型=控件_组合框,标题="组合框",坐标X = 10,坐标Y = 80,宽度=100,高度=120,组合框类型=组合框_下拉可编辑>

{

控件 ComboBoxItem1<类型=控件_列表框项,标题="组合框第1项">

控件 ComboBoxItem2<类型=控件_列表框项,标题="组合框第2项">

控件 ComboBoxItem3<类型=控件_列表框项,标题="组合框第3项">

控件 ComboBoxItem4<类型=控件_列表框项,标题="组合框第4项">

控件 ComboBoxItem5<类型=控件_列表框项,标题="组合框第5项">

控件 ComboBoxItem6<类型=控件_列表框项,标题="组合框第6项">

}

//控件 DateTimePicker<类型=OCT_DateTimePicker,标题="确定",坐标X = 0,坐标Y = 120,宽度=50,高度=30>

控件 Edit<类型=控件_编辑框,标题="确定",坐标X = 10,坐标Y = 120,宽度=50,高度=30>

控件 GroupBox<类型=控件_分组框,标题="确定",坐标X = 10,坐标Y = 150,宽度=70,高度=50>

//控件 HotKey<类型=OCT_HotKey,标题="确定",坐标X = 0,坐标Y = 210,宽度=50,高度=30>

//控件 IpAddress<类型=OCT_IpAddress,标题="确定",坐标X = 0,坐标Y = 240,宽度=50,高度=30>

控件 ListBox<类型=控件_列表框,标题="确定",坐标X = 10,坐标Y = 200,宽度=100,高度=100>

{

控件 ListBoxItem1<类型=控件_列表框项,标题="列表框第1项">

控件 ListBoxItem2<类型=控件_列表框项,标题="列表框第2项">

控件 ListBoxItem3<类型=控件_列表框项,标题="列表框第3项">

控件 ListBoxItem4<类型=控件_列表框项,标题="列表框第4项">

控件 ListBoxItem5<类型=控件_列表框项,标题="列表框第5项">

控件 ListBoxItem6<类型=控件_列表框项,标题="列表框第6项">

}

控件 ListView<类型=控件_列表视图,标题="确定",坐标X = 10,坐标Y = 320,宽度=300,高度=100,列表类型=列表视图_报告,小图像列表标识号=10,报告图标=1>

{

控件 Header<类型=控件_列表头>

{

控件 HeaderItem1<类型=控件_列表头项,标题="第一列",对齐=0,宽度=60> //左对齐

控件 HeaderItem2<类型=控件_列表头项,标题="第二列",对齐=1,宽度=60> //右对齐

控件 HeaderItem3<类型=控件_列表头项,标题="第三列",对齐=2,宽度=60> //居中对齐

}

控件 ListViewItem1<类型=控件_列表项>

{

控件 ListViewSubItem1<类型=控件_列表子项,标题="第一行第一列",图像序号=0>

控件 ListViewSubItem2<类型=控件_列表子项,标题="第一行第二列",图像序号=0>

控件 ListViewSubItem3<类型=控件_列表子项,标题="第一行第三列",图像序号=0>

}

控件 ListViewItem2<类型=控件_列表项>

{

控件 ListViewSubItem1<类型=控件_列表子项,标题="第二行第一列",图像序号=0>

控件 ListViewSubItem2<类型=控件_列表子项,标题="第二行第二列",图像序号=0>

控件 ListViewSubItem3<类型=控件_列表子项,标题="第二行第三列",图像序号=0>

}

控件 ListViewItem3<类型=控件_列表项>

{

控件 ListViewSubItem1<类型=控件_列表子项,标题="第三行第一列",图像序号=0>

控件 ListViewSubItem2<类型=控件_列表子项,标题="第三行第二列",图像序号=0>

控件 ListViewSubItem3<类型=控件_列表子项,标题="第三行第三列",图像序号=0>

}

}

//控件 MonthCalendar<类型=OCT_MonthCalendar,标题="确定",坐标X = 10+60,坐标Y = 10+40,宽度=100,高度=30>

//控件 Picture<类型=OCT_Picture,标题="确定",坐标X = 10+60,坐标Y = 10+2*40,宽度=50,高度=30>

控件 ProgressBar<类型=控件_进度条,标题="确定",坐标X = 10,坐标Y = 280,宽度=100,高度=30>

控件 RadioButton<类型=控件_单选按钮,标题="确定",坐标X = 10,坐标Y = 320,宽度=50,高度=30>

控件 ScrollBar<类型=控件_滚动条,标题="确定",坐标X = 10,坐标Y = 390,宽度=100,高度=20>

控件 Slider<类型=控件_滑杆,标题="确定",坐标X = 160,坐标Y = 10,宽度=100,高度=30>

控件 Spin<类型=控件_上下按钮,标题="确定",坐标X = 160,坐标Y = 50,宽度=25,高度=30>

控件 StaticText<类型=控件_静态文本,标题="确定",坐标X = 160,坐标Y = 90,宽度=50,高度=30>

/*控件 Tab<类型=控件_标签,标题="确定",坐标X = 160,坐标Y = 130,宽度=200,高度=200>

{

控件 TabPage1<类型=控件_标签页,标题="第一页">

{

控件 Button<类型=控件_按钮,标题="确定",坐标X = 30,坐标Y = 30,宽度=50,高度=30,图标="button.ico",边框=边框_默认,锚点=右底边锁定>

{

事件映射<事件_按钮_单击,InterFaceFun>;

}

}

控件 TabPage2<类型=控件_标签页,标题="第二页">

{

控件 CheckBox<类型=控件_复选按钮,标题="确定",坐标X = 30,坐标Y = 80,宽度=50,高度=30>

}

控件 TabPage3<类型=控件_标签页,标题="第三页">

}

*/

//控件 TreeView<类型=控件_树视图,标题="确定",坐标X = 160,坐标Y = 170,宽度=50,高度=30>

控件 TreeView1<类型=控件_树视图,坐标X = 160,坐标Y = 170,宽度=200,高度=100,图像列表标识号=10>

{

控件 TreeViewItem1<类型=控件_树项,标题="第1项",图像序号=0>

控件 TreeViewItem2<类型=控件_树项,标题="第2项",图像序号=0>

{

控件 TreeViewItem21<类型=控件_树项,标题="第21项",图像序号=0,选中图像序号=0>

控件 TreeViewItem22<类型=控件_树项,标题="第22项",图像序号=0,选中图像序号=0>

{

控件 TreeViewItem221<类型=控件_树项,标题="第221项",图像序号=0>

}

}

}

控件 TreeView2<类型=控件_树视图,坐标X = 160,坐标Y = 274,宽度=200,高度=100>

//控件 TreeView3<类型=控件_树视图,坐标X = 160,坐标Y = 378,宽度=200,高度=100>

控件 Splitter1<类型=控件_切分条,坐标X = 160,坐标Y = 270,宽度=200,高度=3,切分控件1="TreeView1",切分控件2="TreeView2">

//控件 Splitter2<类型=控件_切分条,坐标X = 160,坐标Y = 374,宽度=200,高度=3,切分控件1="TreeView2",切分控件2="TreeView3">

控件 StatusBar<类型=控件_状态条,坐标X = 0,坐标Y = 440,宽度=492,高度=25,锚点=底边锁定>

{

控件 StatusBarPart1<类型=控件_状态条分区,宽度=100,标题="准备就绪">

控件 StatusBarPart2<类型=控件_状态条分区,文本颜色=0x00ff00ff,宽度=100,图标="button.ico",标题="状态条分区测试">

}

}

}

根据上面的界面定义可以得到如下窗口:



(不能上传图片)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐