1、本科毕业论文(科研训练、毕业设计)题 目:基于模型台的窗体自动排版姓 名:学 院:软件学院系:专 业:软件工程年 级: 学 号:指导教师(校内): 职称: 指导教师(校外): 职称: 年 月厦门大学本科毕业论文1摘 要ERP 产品的开发和应用中需要根据不同的需求创建多种不同的千差百异的窗体,实现根据排版模型动态生成窗体可省去手动进行窗体排版设计的麻烦,规范窗体上所有控件的布局,并且存储时只需存储模型,比静态窗体的存储更节省空间,同时也更有利于二次开发以及维护;在应用方面,用户有定制个人自定义窗体的需求,静态窗体的自定义需要较高端的用户,而且需要进行编程方面的培训方可完成,而窗体排版功能只需要用
2、户定义在窗体上所要出现的控件、数据,甚至只需要列出字段,就可以生成更为美观整齐的窗体。本文主要介绍在 ERP 产品中基于模型工作台的窗体自动排版功能的具体需求、总体设计、各种功能与细项的设计、实做和总体的类结构,着重介绍窗体模型的搭建以及动态窗体的生成,并展示系统运行的操作过程和生成的窗体。窗体模型从模型工作台的模型基类继承,并为每个需要序列化的对象编写序列化的接口实做,编写时的主要难点在于结构的搭建;动态窗体由几个类配合实现,分为设计期和运行期,开放的接口在本文中会详细介绍。关键词:窗体自动排版,模型,动态窗体,ERP厦门大学本科毕业论文2AbstractERP product develo
3、pment and application requirement of the different requirement of a wide variety of building Form. According to achieve form layout model dynamically generated Forms can be saved for manual layout Form Design trouble Form standardize all controls distribution, and storage was only storage model than
4、 static Window more storage space-saving, also more conducive to the development and maintenance of secondary; in the application, a customized user-defined Window personal requirement Form from the static definition of the higher end users, but the need for the training program to be completed, For
5、m and typesetting functions of the need for user-defined Window on to the control, data, or even just set out the field, can generate more beautiful rows of windows. This paper introduces the ERP products based on the model of Window workstations automatic layout functions of specific requirement, d
6、esign, various functions and details of the design is done, and the overall category structure, Form model highlights the structure and dynamic Form generation, and display the operating system and the process of formation of Form. Form model inherit from the model of the model-based workstations, a
7、nd the need for each sequence of the target sequence of the preparation of the interface is done to prepare the main difficulty lies in the structure of the erection; Dynamic Form several class Accomplish, into the design and operation periods, open interface in this paper will be described in detai
8、l. Key words: Form Auto Layout, Model, Dynamical Form, ERP厦门大学本科毕业论文3目录摘 要 1Abstract.2目录 .3Contents.4第一章 引言 61.1. 窗体自动排版与窗体排版模型 61.1.1. 窗体自动排版功能 .61.1.2. 窗体排版模型 .71.2. 基于模型台存取窗体排版模型 71.3. 本文的主要工作 7第二章 总体设计 82.1. 需求分析 82.1.1. 基本需求 .82.1.2. 需求细项 102.2. 总体设计 .112.2.1. 窗体排版模型总计设计 112.2.2. 窗体排版设计界面总体设计 1
9、22.3. 系统界面 .14第三章 详细设计 .153.1. 详细设计与详细类结构 .153.1.1. 窗体排版模型类结构 153.1.2. 窗体排版功能窗体详细设计 153.2. 动态窗体的生成 .15第四章 系统运行结果 .164.1. 系统各模块界面说明 .164.1.1. 设计主界面: 16厦门大学本科毕业论文44.1.2. 栏位设置窗体: 174.1.3. 排版参数窗体: 184.2. 系统操作 .194.3. 运行结果:生成动态窗体 .274.4. 系统开发环境 .27第五章 总结 .28致谢 29参考文献 30厦门大学本科毕业论文5Contents摘 要 .1Abstract.2
10、目录 .3Contents .4Chapter 1 Foreword51.1. FormAutoLayout&FormAutoLayoutModel.51.1.1. FormAutoLayout 51.1.2. FormAutoLayoutModel 61.2. Model WorkbenchBased FormAutoLayoutModel61.3. Main Improvements.6Chapter 2 Macro-Design.72.1. Requirement Analysis .72.1.1. Base Requirement.72.1.2. Requirement Details
11、 92.2. Macro-Design102.2.1. FormAutoLayoutModel 102.2.2. FormAutoLayout 112.3. System UI12Chapter 3 Detailed Design133.1. Detailed Design&Class .133.1.1. Class of FormAutoLayoutModel 153.1.2. Detailed Design of FormAutoLayout.153.2. Dynamic Form Generation13Chapter 4 Run System .144.1. Introduction
12、of Each Modules UI 144.1.1. Main Designer UI: .144.1.2. Fields-Setting UI: 154.1.3. Layout Option UI: 164.2. Operation of System .174.3. Dynamic Form Generation254.4. System Development Environment.25厦门大学本科毕业论文6Chapter 5 Summary26Acknowledgement 27References .28厦门大学本科毕业论文7第一章 引言3.1. 窗体自动排版与窗体排版模型3.1
13、.1. 窗体自动排版功能ERP 产品的开发和应用中,根据各个企业不同的需求或企业结构的不同,需要创建许多各不相同的窗体,例如单据窗口、联动窗口等,每个企业所需要的字段千差百异,如果直接在程序中编写每个窗体的代码或者为每个窗体创建一个静态的 XML 档,那么便需要开发人员在开发环境中设置每个窗体里每个控件的位置、大小、样式以及数据绑定,二次开发时还要为需求创建新的窗体,繁琐、成本高、维护困难;对于窗体上的控件,有时需要编写响应事件,如按钮的单击事件、控件的双击事件、键盘输入事件等,如果直接编写到窗体的程序代码中,需要修改或者添加事件时的复杂度非常高;就用户方面来说,用户不会想要为使用这个 ERP
14、 产品而去学习编程,所以无法实现用户自定义窗体的功能。窗体自动排版功能实现根据排版模型动态生成窗体,可省去手动进行窗体排版设计的麻烦,规范窗体上所有控件的布局,开发人员只要设定排版模型的若干参数、规定控件类型以及顺序、设计数据库结构,并且存储时只需存储排版模型,比静态窗体的存储更节省空间,同时也更有利于二次开发以及维护;窗体事件以及数据绑定等会由模型中记录的 ID 或者 LINK 转接到中间层实做,共有事件可转接到同一的方法中实做,特殊事件则另外编写方法,降低维护、二次开发的复杂度和成本;在应用方面,用户有定制个人自定义窗体的需求,静态窗体的自定义需要较高端的用户,而且需要进行编程方面的培训方
15、可完成,而窗体排版功能只需要用户定义在窗体上所要出现的控件、数据,甚至只需要列出字段,就可以生成更为美观整齐的窗体。另外,窗体数据转换为报表并打印的机制也是 ERP 产品的重要功能。静态生成的窗体必须要遍历窗体上的控件及其数据绑定,转换出报表,编码繁琐而且效率不高;利用窗体排版功能生成的窗体会以窗体排版模型记录,而转换到报表时也只需读取模型然后厦门大学本科毕业论文8以类似窗体排版功能的机制生成报表即可。3.1.2. 窗体排版模型本次参与开发的 ERP 产品中,提出了模型这个重要概念,将许多需要大存储量的对象抽离大部分共有的属性,抽出存在差异的属性构建成模型。窗体排版模型由模型的基类继承,与记录
16、整个窗体对比,在窗体排版模型上只记录一些大体的结构以及所有字段、字段的类型和顺序,大大节省存储空间;而从窗体排版模型生成动态窗体与从静态的窗体代码生成窗体效率几乎是一样的。窗体排版模型由于结构比实际窗体代码简单,更方便序列化,只需继承序列化的接口实做并重载基类的反序列化构造函数;序列化可从流或二进制数组存取,并可存储到本地文件中。3.2. 基于模型台存取窗体排版模型模型台顾名思义就是主程序中用来操作模型的模块,可以对任何从模型基类继承的模型类进行存取、搜索、编辑以及增删。在模型台上可直接打开窗体模型的排版功能窗口对窗体模型进行设计,同时也可在设计完 ComDataSource 模型后将该模型转
17、换为窗体模型的数据源结构并打开排版窗口进行设计。设计完毕后可调用模型序列化的功能进行存取操作。模型台部分的功能主要由其它同事完成,所以在此不做赘述。3.3. 本文的主要工作本文主要介绍在 ERP 产品中基于模型工作台的窗体自动排版功能的具体需求、总体设计、各种功能与细项的设计、实做和总体的类结构,着重介绍窗体模型的搭建以及动态窗体的生成,并展示系统运行的操作过程和生成的窗体。窗体模型从模型工作台的模型基类继承,并为每个需要序列化的对象编写序列化的接口实做,编写时的主要难点在于结构的搭建, ;动态窗体由几个类配合实现,分为设计期和运行期,开放的接口在本文中会详细介绍。厦门大学本科毕业论文9第二章
18、 总体设计3.1. 需求分析3.1.1. 基本需求(1) 生成的动态窗体的基本需求:动态窗体分为若干个区(Section) ,区总共为六种:状态区(StateSection): 主要放置当前日期、当前时间以及单据制作人等公共信息;主文区(MainSection):主要放置从数据库读取的产品编号、产品名称等等主要内容;页签区(TabSection ):用于放置多页签控件;表格区(GridSection):用于放置表格控件,表格控件可存放多条细项,例如从关联的子表中读取的一笔单据中的多条细项资料;尾文区(FootSection):主要放置制作信息等内容;功能区(ControlStripSectio
19、n):提供对该窗体的操作,比如上一笔、下一笔、第一笔、最后一笔、打印、保存、放弃、修改等等操作,本区放置的内容和其他区有根本上的差别,所以独立处理,放置按钮和菜单;动态窗体至少包含其中的一个区,包含多个区时按照以上列出的顺序排列,每种区只能出现一次。除功能区外的五个区以 TOP 的 DockStyle 显示,而功能区以 BOTTOM 的DockStyle 显示。区中放置区域(Area) ,区域包含五种类型:控件区域(Area):只存放单字段控件(SingelFieldControl)或者组合控件(ComboControl) ,并能够根据所包含控件的顺序和列数行数生成相对应的界面,不包含容器控件
20、;表格区域(GridArea):只存放表格控件(GridControl)和扩展表格控件(AdvanceBandedGridControl) ,不包含容器控件;可设置表格区域中表格的排列方式(左右排或者上下排) ;厦门大学本科毕业论文10组区域(GroupArea ):容器控件,可放置除页签外其它各种区域,并显示本区域的标题;多页签区域(TabArea):容器控件,只能放置页签区域,在生成动态窗体时会生成多页签控件;页签区域(TabPageArea ):容器控件,可放置除页签外其它各种区域,并显示本区域的标题,只能包含在多页签区域中,在动态窗体中时多页签控件的一个页签;控件区域中放置单字段控件或
21、者组合控件:单字段控件:包含显示名称和显示字段的控件,一个单字段控件对应一个数据库的实际字段或者日期时间报告人等公共实际字段,显示字段的控件可设定其控件类型和大小;组合控件:包含显示名称和多个单字段控件,可设置组合控件的大小,并可设置每个单字段控件类型和所占位置的比例;表格区域中放置普通表格控件或者扩展表格控件:普通表格控件:可设置表格中的列和每个列对应的数据库的字段;可设置是否自动生成序号列、每个列的宽度;扩展表格控件:基本实现与普通表格控件相同;支持列分组、嵌套分组和列组合功能;列分组、嵌套分组功能如图 1,可以把表中的列分为若干个分组,分组之间可进行嵌套:图 2-1 列分组嵌套分组功能列
22、组合功能如图,可以对每个分组下面的列进行排列布局,而在表中的数据也将会以与列的布局相同的布局显示出来:图 2-2 列组合功能厦门大学本科毕业论文11(2) 窗体排版功能主要需要实现以下功能:窗体排版功能需要包含窗体模型排版设计界面;载入和保存窗体排版模型的功能;载入数据集,载入数据类型控件类型对应关系的功能;打开设计界面后能够进行添加删除区、区域、组合控件、表格、扩展表格、按钮以及菜单等功能;对添加的各种对象列出其属性,并且可对可读写的属性进行修改;控件区域、表格、扩展表格等对象可打开栏位设置窗口,设置对象能包含的字段;栏位设置窗口中可设置字段的控件类型、是否显示名称、大小以及是否可见等属性,
23、可通过拖动操作来设置字段的显示顺序;能够调出窗体排版参数设置窗体,对窗体边距、控件间距等排版参数进行设置;能够生成预览;能够生成动态窗体;3.1.2. 需求细项(1) 各种对象的属性可在属性编辑器或者类似的列表控件中列出并可修改可读写的属性,每个对象的需要设置的属性如下:窗体:窗体标题(显示在窗体上的名称) 、自定义大小、窗体类型、关联的ComDataSource;区:区标题、区名称、区类型、自定义高度;区域:区域标题、区域名称、区域类型、自定义高度,表格区域还需设置表格排列方式;组合控件:显示名称、控件名称、大小、显示名称在组合控件中的显示比例以及是否显示、顺序、是否只读、是否可见;表格:表
24、格名称、自定义高度、显示顺序、存在多个表格时所占的比例;扩展表格:表格名称、自定义高度、显示顺序、存在多个表格时所占的比例、是否显示分组;表格分组:显示名称、是否显示、是否固定分组;按钮:显示名称、事件 ID;菜单:显示名称、事件 ID;厦门大学本科毕业论文12设计窗体在关闭时需询问是否保存模型。(2) 栏位设置窗体中字段所需设置的属性如下:、能够打开栏位设置窗体的对象有控件区域、组合控件、表格以及扩展控件,打开栏位设置窗体以后会在窗体左边列出数据集,右边列出对象包含的字段集合,在左边列表上勾选后可将其添加到字段集合或者从字段集合中删除,字段集合列表可对每个字段的属性进行设置。控件区域中的字段
25、:显示序号、字段名称、所属数据表、字段类型、是否只读、控件类型、显示名称、所占列数、所占行数、是否可见;组合控件中的字段:显示序号、字段名称、所属数据表、字段类型、是否只读、控件类型、显示名称、所占比例、是否可见;表格与扩展表格中的字段:显示序号、字段名称、所属数据表、字段类型、是否只读、控件类型、显示名称、所占宽度、是否可见;栏位设置窗体关闭时需询问是否保存编辑后的字段集合。(3) 排版参数窗体所需设置的参数如下:边距:行边距、列边距、各方向是否相同;间距:上、下、左、右间距、各方向是否相同;其它:单元格大小、表格默认高度、栏位文本长度、窗体默认大小;3.2. 总体设计3.2.1. 窗体排版
26、模型总计设计窗体排版模型类(FormLayoutModel)由模型基类(ModelBase)继承,重写序列化和反序列化方法,类中包含窗体所要记录的属性:窗体标题(显示在窗体上的名称) 、自定义大小、窗体类型、关联的 ComDataSource;包含区的集合(SectionCollection)和排版参数类(LayoutOption)的对象,该集合中每个类型的区最多出现一次且按顺序出现。排版参数类(LayoutOption) 包含边距、间距、单元格大小、表格默认高度、栏位文本长度、窗体默认大小等属性,边距为 Padding 类的对象,间距为 Size 类的对象;集合继承自 Dictionary或
27、 Collection,以便对集合等添加修改等进行限制和操作。厦门大学本科毕业论文13区类型枚举(SectionType) 记录不同的区类型,共六种:状态区、主文区、页签区、表格区、尾文区和功能区。区(Section)的基类为 SectionBase,包含各种区的共有属性;另有枚举 SectionType 指定不同区;各种区由 SectionBase 这个基类继承,重写基类的 SectionType 属性,并在各自类中实现不同的操作。SectionBase 包含区域集合(AreaCollection),功能区中还包含功能集合(CommandStructCollection)。生成动态窗体时,每
28、个区以明确的控件(比如 Panel)分离开来。区域类型(AreaType)记录不同等区域类型记,共五种:控件区域(Area)、表格区域(GridArea)、组区域(GroupArea)、多页签区域(TabArea)以及页签区域(TabPageArea)区域(Area)的基类为 AreaBase,包含各种区域的共有属性;每个区域需要实现的需求在前面的需求设计中已经列出,这里就不加赘述。AreaBase 上包含有子区域集合,各种不同类型的区域继承以后对该子区域集合的添加事件进行重写,限制能够添加的子区域的类型,其中控件区域和表格区域将该属性重写为只读属性,返回一个空的子区域集合。区域子类上有实现不
29、同操作的有:页签区域继承自组区域;控件区域上包含字段集合(ControlDictionary);表格区域上包含表格集合(GridStructDictionary);表格区域包含表格排列方法的属性。控件字段的基类为 Controlbase,包含显示名称、所占列数、所占行数、是否可见、显示名称所占的比例等共有属性,派生类单字段控件(SingleFieldControl)包含字段名称、所属数据表、字段类型、是否只读、控件类型、所占比例等属性,组合控件类(ComboControl)包含子字段集合;表格(GridStruct)包含表格的名称、自定义高度、实际高度、当存在多个表格时所占比例、单字段集合;扩
30、展表格(BandedGridStruct)继承自表格,包含分组集合(BandCollection),是否显示分组栏位。分组(Band)包含名称、显示名称、子分组集合、是否拥有子分组、单字段集合等属性。功能类(CommandStruct)包含名称、显示名称、类型(CommandType)、子功能集合、事件类型(EventType)、事件 ID 等属性;其中类型用来判断该功能是以按钮方式呈现还是以菜单方式呈现。3.2.2. 窗体排版设计界面总体设计窗体排版功能总共包含四个窗体,设计主界面、栏位设置窗体、排版参数窗体和预览窗体。厦门大学本科毕业论文14(1) 设计界面:以树状图表现当前正在修改的模型
31、,且树状图中的每个节点都要关联模型上的相应对象;包含属性编辑器,该属性编辑器能够读取树状图的选中节点的关联对象并进行修改,修改后更即时更新树状图;提供添加模型中各种对象的按钮和菜单,在树状图中的选中节点上添加节点并在模型中添加相应对象;当改变当前树状图的选中节点时根据节点的关联对象判断哪些按钮或菜单不可用;当选中节点的关联对象为控件区域、组合控件、表格、分组时能够打开栏位设置窗口;提供打开排版参数窗体和预览窗体的按钮;(2) 栏位设置窗体:在复合文本框中列出当前数据集的所有数据表,当选择某数据表时将其所有字段列出;字段以树状图形式列出,根节点是当前选中的数据表的名称,根节点的子节点列出字段;该
32、树状图所有节点前有复选框,当选中复选框时,就将字段添加到设计窗体中选中节点的关联对象的字段集合中,取消选中复选框时则是从该字段集合中删除;以表格形式列出当前设计窗体选中节点的关联对象的字段集合,表格的列列出字段的所有属性,而每一行则对应一个字段;对单个字段,可在列中改变其相应属性;该表格支持内嵌控件,当编辑单元格时可以激活该单元格对应的内嵌控件进行编辑;该表格支持直接拖动行,改变字段在字段集合中的顺序;(3) 排版参数窗体:列出当前模型的排版参数对象的所有属性以及值,修改后返回给该对象;(4) 预览窗体:将窗体排版模型换算成窗体上的控件,并将其放置到根据窗体排版模型的窗体类型取得的窗体中,将该
33、窗体显示出来。厦门大学本科毕业论文153.3. 系统界面图 2-3 窗体排版模型设计界面厦门大学本科毕业论文16第三章 详细设计由于公司的保密需要,本章不采用实际的源码进行描述。3.1. 详细设计与详细类结构3.1.1. 窗体排版模型类结构窗体排版模型的结构照如前文中需求细项和总体设计中所述架构编写,所以不加赘述,以下是构建完窗体排版模型后使用 Visual Studio 2005 生成的类图:图 3-1 详细类图厦门大学本科毕业论文173.1.2. 窗体排版功能窗体详细设计当设计窗体中选中模型的树状图的节点以后,按钮或菜单的 Visible 会相应节点对应的对象而改变,关系如下表:表 3-1
34、 对象可用功能对应表添加区域组区域Tab区域TabPage区域控件区域表格区域添加组件组合字段表格扩展表格表格分组功能按钮功能菜单栏位设置状态区 TRUE TRUE TRUE TRUE TRUE主文区 同状态区页签区 同状态区表格区 TRUE TRUE尾文区 同状态区功能区 TRUE组区域 TRUE TRUE TRUE TRUE TRUETab区域 TRUE TRUETabPage区域 同组区域控件区域 TRUE TRUE TRUE表格区域 TRUE TRUE TRUE组合字段 TRUE表格 TRUE扩展表格 TRUE TRUE表格分组 TRUE TRUE TRUE功能按钮 TRUE TRUE
35、功能菜单 TRUE TRUE其余功能都是窗体的基本编程或总体设计中已有详细说明,这里不加赘述;厦门大学本科毕业论文183.2. 动态窗体的生成生成动态窗体其实就是将窗体排版模型上的对象一一换算成窗体的对应控件;首先会根据模型记录的窗体类型取回所要的窗体;生成控件时将对象的 Name 属性赋给控件的 Name属性,以便动态生成事件时获取控件;每个控件会根据相应对象记录的事件类型和事件 ID取回要执行的事件,用户亦可编写脚本事件,而后由脚本翻译器生成事件后取回。区(Section) ,生成 Panel,除功能区外的区的停靠风格为置顶(DockStyle.Top),由于后置顶的控件会排到先置顶的区的
36、上面,所以换算区(void Section2Layout()的时候以逆序读取换算区后换算区中的子区域集合(int Area2Layout(AreaCollection areas,Control parent);区高度当用户自定义高度时则取自定义高度,否则取换算子区域集合的方法返回的高度和。区总共为六种:状态区(StateSection): 放置当前日期、当前时间以及单据制作人等公共信息;主文区(MainSection):放置从数据库读取的产品编号、产品名称等等主要内容;页签区(TabSection ):用于放置多页签控件;表格区(GridSection):用于放置表格控件,表格控件可存放多条
37、细项,例如从关联的子表中读取的一笔单据中的多条细项资料;尾文区(FootSection):主要放置制作信息等内容;功能区(ControlStripSection):本区的停靠风格为置底 (DockStyle.Bottom),有专门的换算功能区的方法(void ControlStripSection2Layout(ControlStripSection section),其中调用换算功能区下功能集合的方法(void CommandStruct2Layout(CommandStructCollection commands,Panel parent);区域(Area) ,根据不同的区域类型生成不同
38、的控件,所有控件的停靠风格均为置顶(DockStyle.Top),换算区域时递归换算区域中的子区域,直到没有可换算的子区域为止(即只剩控件区域和表格区域) ;区域高度当用户自定义高度时则取自定义高度,否则取换算子区域集合的方法或换算控件集合、表格集合返回的高度和。区域包含五种类型:控件区域(Area):生成 Panel,调用换算字段集合(int Fields2Layout(ControlDictionary fields,Control parent)的方法,取返回的值做为区域的高度;表格区域(GridArea):生成 Panel,调用换算表格集合(int Grids2Layout(GridS
39、tructCollection grids,Control parent)的方法,取返回的值做为区域的高度;厦门大学本科毕业论文19组区域(GroupArea ):生成 GroupBox 控件,换算子区域集合,取子区域高度和做为本区域的高度;多页签区域(TabArea):生成 TabControl 或者 DevExpress 的 TabedControl 控件,换算子区域集合,取子区域(即 TabPageArea)的最大高度做为本区域的高度; 页签区域(TabPageArea ):生成 TabPage 控件,换算子区域集合,取子区域高度和做为本区域的高度; 控件区域中换算单字段控件或者组合控件
40、的方法首先为每个控件字段生成 Panel,这些Panel 按照控件字段的顺序从左到右从上到下排列,排满控件区域所设置的列数时换行;位置该 Panel 所处相对座标单元格大小间距;大小单元格大小控件字段的相对大小;在该 Panel 中:单字段控件:读取当前字段的控件类型生成控件(Activator. CreateInstance(Type type),停靠风格为充满(Fill);当是否显示字段名称为 true 时,生成 Text 属性为字段的显示名称的Label,停靠风格为填充左边 (Left),宽度为排版参数中的栏位文本长度属性;组合控件:读取子字段集合中每个字段的控件类型生成控件(Activ
41、ator. CreateInstance(Type type),通过字段的所占比例属性计算该控件在组合控件中所占长度;当是否显示字段名称为 true 时,生成 Text 属性为字段的显示名称的 Label,停靠风格为填充左边(Left),宽度由组合控件中设定的文本显示比例计算得出;表格区域中换算普通表格控件或者扩展表格控件的方法生成 DevExpress 的 GridControl的实例;根据表格区域中规定的表格排列方法和排版参数中表格默认大小的属性计算表格的位置和大小,当左右排时根据表格的所占比例计算表格的宽度;根据字段生成对应的DevExpress 的内嵌型控件,表格中添加一行空数据以展示
42、内嵌控件;以上为表格和扩展表格共用的换算方法,以下为各自不同的算法:普通表格控件:生成 GridView,设置为 GridControl 的 MainView;根据普通表格控件中记录的单字段集合和每个字段的宽度生成表格中的列;根据是否自动生成序号列决定是否生成序号列;扩展表格控件:生成 AdvanceBandedGridView,设置为 GridControl 的 MainView;递归换算分组集合;根据是否自动生成序号列决定是否生成序号列;分组:递归换算分组集合;当分组集合为空时,换算分组中单字段集合,根据每个字段的属性生成分组中的列;列分组、嵌套分组和列组合等功能只需将分组或字段中的相应属
43、性厦门大学本科毕业论文20赋给实际的分组或列,GridControl 会自动调整为所要的结果;功能集合:递归换算子功能集合,第一层功能集合的类型为 CommandStruct.Button,生成按键;以下的类型全部为 CommandStruct.Menu,生成菜单和子菜单;厦门大学本科毕业论文21第四章 系统运行结果3.1. 系统各模块界面说明3.1.1. 设计主界面:如图 4-1,左边是窗体模型的树状图,右边是属性编辑器,下方是设计功能的按钮;通过下方的添加按钮可添加相应对象到窗体模型并在树状图中添加相应节点,选择树状图节点后可在属性编辑器中修改该节点关联的对象的属性;删除按钮可删除选中的树
44、状图节点及其关联的模型中的对象;栏位设置、排版参数、预览按钮可打开相应的窗体。关闭时询问是否保存模型。图 4-1 窗体排版模型设计主界面厦门大学本科毕业论文223.1.2. 栏位设置窗体:如图 4-2,左边是窗体所关联的数据集,在复合框中选择数据表名称后可列出数据表中的所有字段,当勾选或者取消勾选字段时添加或者删除设计窗体中选中节点字段集合中的字段。图 4-2 栏位设置窗体厦门大学本科毕业论文233.1.3. 排版参数窗体:设置当前窗体模型的排版参数,如图 4-3。图 4-3 排版参数窗体厦门大学本科毕业论文243.2. 系统操作载入模型关联的数据集、控件映射后,载入模型可对已有模型进行修改,
45、直接打开模型设计窗口可新建空模型,如图 4-4;图 4-4 添加区厦门大学本科毕业论文25添加节后添加区域,如图 4-5 到图 4-7:图 4-5 在区下添加区域图 4-6 表格区( GridSection)只能添加表格区域(GridArea)在功能区中添加功能按键和菜单,如图 4-7 到图 4-8:厦门大学本科毕业论文26图 4-7 在功能区下添加功能按键图 4-8 在按键下添加功能菜单厦门大学本科毕业论文27图 4-9 在菜单下添加子菜单在表格区域下添加表格和扩展表格,如图 4-10 到图 4-12:图 4-10 在表格区域下添加表格和扩展表格厦门大学本科毕业论文28图 4-11 在扩展表格下添加分组图 4-12 在分组下添加子分组厦门大学本科毕业论文29图 4-13 在控件区域下添加组合控件分别对控件区域、组合控件、表格和扩展表格进行栏位设置,如图 4-14 到图 4-17:图 4-14 栏位设置窗体