随笔- 88  评论- 433  文章- 13 

SourceGrid 2.0_ 翻译(2)

VisualModel

Namespace: SourceGrid2.VisualModels

 

每个单元格有VisualModel 属性,返回一个类型IVisualModel的接口。

单元格使用这一个接口绘图并且使单元格的视觉特性符合客户需求。

 

VisualModel的目的是将绘图和其它部分的代码分离并且允许在单元格之间的相同视觉的模型共享。 事实上 VisualModel 的相同实例同时地能在许多单元格上被用,这将系统的资源使用最佳化。

然而, 默认的 VisualModel类是只读的,每 VisualModel具有一个允许你产生相同的模型同一实例的复制方法。

 

以下是默认的 VisualModel 在名称空间SourceGrid2.VisualModels 下的类别:

 

SourceGrid2.VisualModels.Common能自定义颜色,字型,边缘

SourceGrid2.VisualModels.CheckBox *为勾选栏用设计单元格。 勾选栏能被选择, 设置为无效而且能包含一个说明。

SourceGrid2.VisualModels.Header *为表头用以 3D立体边缘设计单元格。

SourceGrid2.VisualModels.MultiImages允许单元格的超过一个图像的图画。

 -

 *与一个星号一起作记号的 VisualModel 需要一个特别的接口才能正确地工作,

举例来说勾选栏模型需要一个支援 ICellCheckBox 接口的单元格。

 

每一个这些类别都包含一个或多个方便的只读实例的静态的特性

 

  • SourceGrid2.VisualModels.Common.Default
  • SourceGrid2.VisualModels.Common.LinkStyle
  • SourceGrid2.VisualModels.CheckBox.Default
  • SourceGrid2.VisualModels.CheckBox.MiddleLeftAlign
  • SourceGrid2.VisualModels.Header.Default
  • SourceGrid2.VisualModels.Header.ColumnHeader
  • SourceGrid2.VisualModels.Header.RowHeader

这一个码表示该如何分配相同的 VisualModel 到较多的先前创建的单元格然后改变一些特性:

 

SourceGrid2.VisualModels.Common l_SharedVisualModel = new SourceGrid2.VisualModels.Common();
grid1[0,0].VisualModel = l_SharedVisualModel;
grid1[1,0].VisualModel = l_SharedVisualModel;
grid1[2,0].VisualModel = l_SharedVisualModel;
l_SharedVisualModel.BackColor = Color.LightGray;

 

也考虑当你写Cell.BackColor特性自动地调用 VisualModel BackColor 特性。

为了更便利的使用通常的一些属性,当你写诸这样的代码时:Cell.BackColor = Color.Black;  单元格自动地再一次到复制目前的 VisualModel, backcolor 换成复制的实例而且分配复制的实例。

 

 

 

DataModel

Namespace: SourceGrid2.DataModels

用格式化的字符串来表示一个单元格的值时,通常是必须组装单元格DataModel的属性

如果属性为空,是不能改变单元格的值

 

通常 DataModel 使用被请求的类型的 TypeConverter 处理必需的变换, 特别地字串变换.(过去一直表现单元格数值)

 

以下是名称空间SourceGrid2.DataModels:的默认的DataModel:

 

DataModelBase提供转换的方法,仅允许通过代码修改单元格的值;它不供应绘画接口。

EditorControlBase :抽象类,帮助使用类似于单元格的编辑控件

EditorTextBox -一个本文框编者。

EditorComboBox

EditorDateTime

EditorNumericUpDown

EditorTextBoxButton有一个按钮的一个本文框编者开启一种明细窗体

EditorUITypeEditor提供有 UITypeEditor 的所有类型的单元格编辑。许多类型支援这一个类别: DateTime Fontenum,.。。

 

一种DataModel

可以被许多单元格共享,就像为单元格的每一列使用相同的DataModel

 

产生一个可编辑的单元格有3种方法:

 

·                1grid1[0,0] = new SourceGrid2.Cells.Real.Cell("Hello", typeof(string));
·           2 SourceGrid2.DataModels.IDataModel l_SharedDataModel =
     SourceGrid2.Utility.CreateDataModel(typeof(string));
     grid1[0,0].DataModel = l_SharedDataModel;
     grid1[1,0].DataModel = l_SharedDataModel;
·                3SourceGrid2.DataModels.EditorTextBox l_TextBox =
      new SourceGrid2.DataModels.EditorTextBox(typeof(string));
     grid1[2,0].DataModel = l_TextBox;

这一个方法是可能共享在许多单元格之间的相同编辑器。

……(省略一段)

 

当然用订制的控件或特别的行为产生一个订制的 DataModel 编辑器是可能的。

下列的图片表示可得的大部份的编辑器和像图像特性一样的一些选择项:

SourceGrid2_CellTypes.jpg 

 

BehaviorModel

Namespace: SourceGrid2.BehaviorModels

每个单元格都有一个BehaviorModel的集合,你可以使用Behaviors属性进行读取操作

BehaviorModel 是一个表示单元格的行为特色的类。 一个模型能在许多单元格之间被共享并且对任何新的功能的加入提供很好的弹性和简单性;

 

这些是类型 BehaviorModel 的默认类别:

 

SourceGrid2.BehaviorModels.Common 通常行为。

SourceGrid2.BehaviorModels.Header表头的行为。

SourceGrid2.BehaviorModels.RowHeader一个行表头的行为, 由于调整~大小功能。

SourceGrid2.BehaviorModels.ColumnHeader- 一个栏表头的行为, 藉由分类而且调整~大小功能。 (需要 ICellSortableHeader接口)

SourceGrid2.BehaviorModels.CheckBox* - 一个勾选栏的行为。 (需要 ICellCheckBox)

SourceGrid2.BehaviorModels.Cursor*- 允许对一个特定的单元格一个光标的关联。 (需要 ICellCursor)

SourceGrid2.BehaviorModels.Button  -一个按钮的行为。

SourceGrid2.BehaviorModels.Resize - 允许一个单元格与鼠标一起调整~大小.( 这一个模型自动地被表头模型用)

SourceGrid2.BehaviorModels.ToolTipText*   ToolTipText 和一个单元格相连。 (需要 ICellToolTipText)

SourceGrid2.BehaviorModels.Unselectable  区块从收到焦点的一个单元格。

SourceGrid2.BehaviorModels.ContextMenu*- contextmenu 的成绩和一个单元格相连。 (需要 ICellContextMenu)

SourceGrid2.BehaviorModels.CustomEvents

SourceGrid2.BehaviorModels.BindProperty

SourceGrid2.BehaviorModels.BehaviorModelGroup

 

*与一个星号一起作记号的 BehaviorModel 需要特别的接口完成他们的任务,

举例来说类别勾选栏需要单元格支持接口 ICellCheckBox

 

每个类别有一些静态的特性返回类别的一个默认实例:

  • SourceGrid2.BehaviorModels.Common.Default
  • SourceGrid2.BehaviorModels.Button.Default
  • SourceGrid2.BehaviorModels.CheckBox.Default
  • SourceGrid2.BehaviorModels.ColumnHeader.SortHeader
  • SourceGrid2.BehaviorModels.ColumnHeader.ResizeHeader
  • SourceGrid2.BehaviorModels.ColumnHeader.SortResizeHeader
  • SourceGrid2.BehaviorModels.ColumnHeader.NoSortNoResizeHeader
  • SourceGrid2.BehaviorModels.ColumnHeader.Default
  • SourceGrid2.BehaviorModels.Cursor.Default
  • SourceGrid2.BehaviorModels.Header.Default
  • SourceGrid2.BehaviorModels.Resize.ResizeHeight
  • SourceGrid2.BehaviorModels.Resize.ResizeWidth
  • SourceGrid2.BehaviorModels.Resize.ResizeBoth
  • SourceGrid2.BehaviorModels.RowHeader.Default
  • SourceGrid2.BehaviorModels.ToolTipText.Default
  • SourceGrid2.BehaviorModels.Unselectable

在下列的码中当使用者在单元格之上移动鼠标的时候,我产生改变单元格的 backcolor BehaviorModel 的例子

 

public class CustomBehavior : SourceGrid2.BehaviorModels.BehaviorModelGroup

{

         public override void OnMouseEnter(SourceGrid2.PositionEventArgs e)

         {

                 base.OnMouseEnter (e);

                 ((SourceGrid2.Cells.Real.Cell)e.Cell).BackColor = Color.LightGreen;

         }

         public override void OnMouseLeave(SourceGrid2.PositionEventArgs e)

         {

                 base.OnMouseLeave (e);

                 ((SourceGrid2.Cells.Real.Cell)e.Cell).BackColor = Color.White;

         }

}

//在窗体的加载事件中插入代码

grid1.Redim(2,2);
 
CustomBehavior l_Behavior = new CustomBehavior();
for (int r = 0; r < grid1.RowsCount; r++)
         for (int c = 0; c < grid1.ColumnsCount; c++)
         {
                 grid1[r,c] = new SourceGrid2.Cells.Real.Cell("Hello");
                 grid1[r,c].Behaviors.Add(l_Behavior);
         }

 

posted on 2005-07-04 19:45  秋雨飘飞  阅读(4411)  评论(8编辑  收藏