B1SDK之88SP1表格控件单元格设置篇.docxVIP

  • 11
  • 0
  • 约3.96千字
  • 约 6页
  • 2016-12-29 发布于重庆
  • 举报
B1 SDK之8.8 SP1 Matrix/Grid单元格设置篇Warren Jiang不同于以往的任何版本,在B1 8.8 SP1这个版本里,我们对Matrix和Grid界面上的功能做了集中增强,主要包括基于单元格的配置、特殊行以及汇总列,这些功能都是市场上期盼已久的功能,本文专门介绍单元格的配置。以往无论是Matrix还是Grid,所有的配置最小的粒度是列,用户如果要想对某一个单元格进行配置,SDK就爱莫能助了。(除非用Windows句柄越过B1 SDK来直接进行Windows API编程,这种编程费力且让产品引入了不确定因素,就像WPF和Winform 2.0,以及Windows API联合编程,在几种情况下微软都明确说明不做官方支持,同样在B1里面,特别是同一个窗体里,混杂使用B1 SDK和Windows API也绝非正途。) 现在好了,有8.8 SP1的SDK这些功能了,这部分需求迎刃而解,客户可以“光明正大”的在B1 Matrix/Grid上面做配置开发了。 在介绍这部分功能前,我先顺便介绍在8.8 SP1这个版本我们引入了两个基础设施接口/对象,CommonSetting和ColumnSetting。为什么引入这两个基础设施?因为Matrix和Grid在很多情况下要求有同样的功能,以往我们都是在Matrix和Grid上面各实现一套COM接口,这种设计很显然从代码的美观、可维护性以及API的简洁的角度来看都不好,所以我们引入了在Matrix和Grid上面共享的这样两个子接口。CommonSetting是在Matrix和Grid这两个主控件对象之间共享,ColumnSetting顾名思义是在Matrix的Column和Grid的Column之间共享,通常在主控件级别的属性和方法会放在CommonSetting,在列级别的属性和方法会放在ColunSetting。正因为这种共享对象接口,使得原本大相径庭的Matrix和Grid代码,能够写的非常一致,也正是基于此,本文所有的示例代码都采用Matrix为例,Grid上面只需要稍作修改即可。我们说的单元格的配置主要包括以下几种:字体颜色,字体大小,字体风格,背景色,可否编辑以及设置焦点。设想在没有做任何配置的情况下,我们有如下的Matrix:字体颜色:关于颜色,所有的UIAPI接口的颜色值都是整形类型,在.Net里有下面三种方法可以设置颜色值第一种是直接使用整型值,例如22331作为颜色值第二种是利用C#的宏进行计算,这种方法只能针对红、蓝、绿等特定颜色。int greenForeColor = Color.Green.R|(Color.Green.G 8)|(Color.Green.B 16);第三种是构造RGB结构产生任何中的颜色:Color newRGBColor = Color.FromArgb(100, 100, 200);int rowForeColor = newRGBColor.R|(newRGBColor.G 8)|(newRGBColor.B 16);假设对前面的Matrix进行如下代码的设置:oColumn = oMatrix.Columns.Item(3);oColumn.ForeColor = greenForeColor;setting.SetRowFontColor(3, rowForeColor);int redBackColor = Color.Red.R | (Color.Red.G 8) | (Color.Red.B 16);setting.SetCellFontColor(3, 3, redBackColor);int color = setting.GetCellFontColor(3, 3);将产生下面的效果:下面对代码进行解释:在新的配置在8.8 SP1开发出来以前,Matrix上的界面设置只有针对于列的。这个版本我们重点是开发针对于单元格的配置,但是为了接口的灵活性我们也开发了针对于行上面的配置。所以代码行oColumn.ForeColor = greenForeColor是以前老的功能,是给第三列字体染绿色。代码行setting.SetRowFontColor(3, rowForeColor) 就是新功能了,是给第三行染RGB (100, 100, 200) 的颜色。setting.SetCellFontColor(3, 3, redBackColor)是给第三行第三列的单元格染红色。注意,单元格API和行API、列API都有交集,我们的设计理念是越后调的接口越生效,举例说明,我们先用列API设置第三列为绿色,然后调用行API设置第三行为RGB(100,100,200)的颜色,那么因为行API是后调的,所以第三行

文档评论(0)

1亿VIP精品文档

相关文档