MSHFlexGrid 控件

Microsoft Hierarchical FlexGrid (MSHFlexGrid) 控件对表格数据进行显示和操作。在对包含字符串和图片的表格进行分类、合并以及格式化时，具有完全的灵活性。当绑定到 Data 控件上时，MSHFlexGrid 所显示的是只读数据。

语法

MSHFlexGrid

说明

可以将文本、图片，或者文本和图片，放在MSHFlexGrid 的任意单元中。Row 和 Col 属性指定了MSHFlexGrid 中的当前单元。程序员可以在代码中指定当前单元，也可以在运行时，使用鼠标或者方向键来对其进行修改。Text 属性引用当前单元的内容。

如果单元的文本过长而不能在该单元中显示，而且 WordWrap 属性被设置为 True，那么文本就会换行到同一单元内的下一行。为了显示换行的文本，可能需要增加单元的列宽度（ColWidth 属性）或者行高度（RowHeight 属性）。

可以用 Cols 和 Rows 属性来决定MSHFlexGrid 控件中的列数和行数。

显示层次结构记录集

MSHFlexGrid 控件的一个主要特性是它能显示层次结构记录集—以层次结构方式显示的关系表。创建层次结构记录集的最容易的方法是使用数据环境设计器并把 MSHFlexGrid 控件的 DataSource 属性赋给数据环境。您也可以用 Shape 命令作为 ADO Data Control 的 RecordSource 在代码中创建层次结构记录，如下面的示例:

' 创建 ConnectionString.
Dim strCn As String
strCn = "Provider=MSDataShape.1;Data Source=Nwind;" & _
"Connect Timeout=15;Data Provider=MSDASQL"

' 创建 Shape 命令.
Dim strSh As String
strSh = "SHAPE {SELECT * FROM `Customers`}  AS Customers " & _
"APPEND ({SELECT * FROM `Orders`}  AS Orders RELATE " & _
"CustomerID TO CustomerID) AS Orders"

' 把 ConnectionString 赋给 ADO Data Control 的
' ConnectionString 属性, Shape 命令以及
' 控件的 RecordSource 属性.
With Adodc1
   .ConnectionString = strCn
   .RecordSource = strSh
End With
' 把 HflexGrid 控件的 DataSource 属性设置到
' ADO Data 控件。
Set HFlexGrid1.DataSource = Adodc1

详细信息 要查找有关分层记录集的更多信息，请参阅 Hierarchical Cursors and Data Shaping Summary. Shape 命令的详细信息可参阅 Shape Commands in General.

发行注意 在应用程序中使用 MSHFlexGrid 控件之前，必须将 MSHFlxGrd.ocx 文件添加到工程中。为了将该文件自动包括到工程中，可以把它放到自动装载文件中。当发行应用程序时，应该将 MSHFlxGrd.ocx 文件安装到用户的 Microsoft Windows 的 System 子目录下。关于将 ActiveX 控件添加到工程中的详细信息，请参阅《Visual Basic程序员指南》中的“标准 ActiveX 控件”。


MSFlexGrid 控件

Microsoft FlexGrid (MSFlexGrid) 控件可以显示网格数据，也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能，网格中可以包含字符串和图片。如果将它绑定到一个 Data 控件上，那么 MSFlexGrid 显示的将是只读的数据。

语法

MSFlexGrid

说明

文本和图片可以同时或者单独放在 MSFlexGrid 的任何一个单元格中。Row 和 Col 属性指定了当前的 MSFlexGrid 单元格。程序员可以在代码中改变当前单元格，用户可以在运行时使用鼠标或者箭头键改变它。Text 属性提供了当前单元格内容的参考信息。

如果单元格中的文本过长，无法全部显示在单元格的一行中，而且 WordWrap 属性被设置为 True，那么文本将回绕到同一单元格的下一行。如果需要显示被回绕的文本，需要增加单元的列宽（ColWidth 属性）或行高（RowHeight 属性）。

使用 Col 和 Row 属性可以分别确定 MSFlexGrid 中列与行的个数。

注意 在应用程序中使用 MSFlexGrid 之前，首先必须将 MSFlxGrd.ocx 文件添加到工程中。如果希望自动地将文件包含在过程之中，请将它放在 Autoload 文件中。在发布应用程序的时候，应该在用户的 Microsoft Windows System 目录下安装 MSFlxGrd.ocx 文件。关于如何在工程中添加 ActiveX 控件的详细说明，请参阅《Visual Basic 程序员指南》中的“标准 ActiveX 控件”。


Topic Not Found

未找到该主题

未找到相匹配的主题。可能的原因和解决方法如下：

  • 包含目标主题的文件 (.chm) 没有位于指定的位置。

    解决方法：重新运行 MSDN Library的安装。

  • 包含当前主题或目标主题的文件 (.chm) 已经过时，并且链接不再有效。

    解决方法：安装最新版本的 MSDN Library。

  • MSDN Library CD 不在 CD-ROM 中。

    解决方法：将 MSDN Library CD 装入 CD-ROM 中。


BackColorBand, BackColorHeader, BackColorIndent, BackColorUnpopulated Properties

BackColorBand、BackColorHeader、BackColorIndent、BackColorUnpopulated 属性

  • BackColorBand — 返回或者设置 MSHFlexGrid 带区的背景色。

  • BackColorHeader — 返回或者设置 MSHFlexGrid 标头区域的背景色。

  • BackColorIndent — 返回或者设置 MSHFlexGrid 缩进区域的背景色。

  • BackColorUnpopulated — 返回或者设置 MSHFlexGrid 未填数据区域的背景色。

语法

object.BackColorBand [=color]
object.BackColorHeader [=color]
object.BackColorIndent [=color]
object.BackColorUnpopulated [=color]

BackColorBand, BackColorHeader, BackColorIndent 和 BackColorUnpopulated 属性的语法包括以下各个部分：

部分描述

object一个 对象表达式，其值是“应用于”列表中的一个对象。

color一个 数值表达式，它指定了颜色。


MSHFlexGrid 错误常数

常数 | 值 | 描述
flexerrBadBandColIndex | 30020 | 指定的带区列索引无效。
flexerrBadBandNumber | 30019 | 指定的带号无效。
flexerrBadValue | 380 | 指定的属性值无效。
flexerrClipInvalidFormat | 461 | 指定的格式与数据格式不匹配。
flexerrDataNotSetForFormat | 676 | 在 OLESetData 事件过程中，要求的数据没有提供给 DataObject。
flexerrDataObjectLocked | 672 | DataObject 的格式列表可能没被清除或是被扩展到 OLEStartDrag 事件以外。
flexerrExpectedAnArgument | 673 | 至少期待一个参数。
flexerrFORMATSTRING | 30018 | 指定将要被格式化的行或列的字符串。
flexerrGetNotSupported | 394 | 指定的属性不可用。
flexerrHROWsNotReleased | 30023 | 不能访问数据。DataSource 属性设置可能不正确或 DataSource 功能性有限。
flexerrIllegalFunctionCall | 5 | 指定的程序调用无效。
flexerrNotAvailableWithBandedData | 30021 | 当绑定到层次结构数据时，指定的命令不可用。
flexerrObjIllegalUse | 425 | 对象使用无效。
flexerrOutOfMemory | 7 | 系统内存运行不足。关闭其他附加的应用程序，为 Visual Basic 应用程序释放内存。
flexerrRecursiveOLEDrag | 674 | 对 OLE 拖放的递归调用非法。
flexerrSetNotPermitted | 387 | 指定的设置是不允许的。
flexerrSubscript | 381 | 指定的下标超出了允许的范围。
flexerrUnknownBinding | 30022 | Hierarchical FlexGrid 不支持数据绑定要求的类型。
flexerrUnknownError | 600 | 执行操作时发生错误。
flexerrUserFormatNotBinArray | 675 | 与 SetData 属性一起使用的非内部的 OLE 拖放格式要求字节数组数据。GetData 属性返回的字节可能比提供给 SetData的字节多。
flexerrVB30000 | 30000 | 在一个固定的行上不能执行 RemoveItem。
flexerrVB30001 | 30002 | 在一个固定的行上不能执行 AddItem。
flexerrVB30002 | 30004 | Hierarchical FlexGrid 不包含指定的行。
flexerrVB30004 | 30005 | 为对齐指定的列号是无效的。
flexerrVB30005 | 30005 | 指定的对齐值无效。
flexerrVB30006 | 30006 | 不能为 Hierarchical FlexGrid 分配内存。
flexerrVB30008 | 30008 | 指定的图片类型无效。
flexerrVB30009 | 30009 | 指定的行值无效。
flexerrVB30010 | 30010 | 指定的列值无效。
flexerrVB30011 | 30011 | 不能注册内存管理器。
flexerrVB30013 | 30013 | 指定的行高值无效。
flexerrVB30014 | 30014 | 指定的列宽值无效。
flexerrVB30015 | 30015 | 最后的非固定行不能被删除。
flexerrVB30016 | 30016 | 指定的 FixedRows 值必须是比Rows 的值至少小 1 的一个值。
flexerrVB30017 | 30017 | 指定的 FixedCols 值必须是比Cols 的值至少小 1 的一个值。


Collapse 事件 (MSHFlexGrid)

当用户在网格内折叠一行时发生。MSHFlexGrid 的 Col 和 Row 属性包含用于折叠带区的单元格。

语法

Private Sub object_ Collapse(Boolean)

Collapse 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式。如果把 Cancel 设置为 True，折叠被取消。


Compare 事件

当 MSHFlexGrid 的 Sort 属性被设置为 Custom Sort (9) 时发生，因此用户可以自定义排序进程。

语法

Private Sub object_Compare(row1, row2, cmp)

Compare 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
row1 | 一个 Long整数，它指定正在比较的一对行的第一行。
row2 | 一个 Long整数，它指定正在比较的一对行的第二行。
cmp | 一个整数，它表示每一对的排序次序。如设置值中所述。

设置值

事件句柄必须比较 row1 和 row2，并把 cmp 设置为：

设置值 | 描述
–1 | 如果 row1 应该显示在 row2 前面
0 | 如果两行相等或任一行都可以显示在另一行之前。
1 | 如果 row1 应该显示在 row2 之后。

说明

当 Sort 属性被设置为 9 （自定义排序）时，Compare 事件对 MSHFlexGrid 中的每一对行发生一次。因为 Compare 事件使用行号代替了文本值，可以对那一行比较任何属性值，包括 RowData。

注意 虽然自定义排序比内置的排序慢，但它们提供了使用任何列或使用任何单元属性排序一行的灵活性。


EnterCell 事件

当前活动单元更改到一个不同单元时发生。

语法

Private Sub object_EnterCell()

EnterCell 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。

说明

在一个固定行上单击将引起这个事件在那一行的第一个不固定列上发生。拖动鼠标经过一个单元格不会引起这一事件的发生。


Expand 事件 (MSHFlexGrid)

当用户在 MSHFlexGrid 里面扩充一行时发生。MSHFlexGrid 的 Col 和 Row 属性包含用于扩充带区的单元格。

语法

Private Sub object_Expand(Boolean)

Expand 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式。如果开发者设置 Cancel 为 True，折叠被取消。


FixedCols、FixedRows 属性 (MSHFlexGrid) 示例

下面的代码把第一行和第一、第二列设置为固定的。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.FixedCols = 2
   MSHFlexGrid1.FixedRows = 1
End Sub


FocusRect 属性示例

下面的代码使用常数值，对活动单元格设置焦点矩形为浅色的矩形。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.FocusRect = flexFocusLight
End Sub


LeaveCell 事件

当前活动单元变更到一个不同的单元之前立即发生。

语法

Private Sub object_LeaveCell()

LeaveCell 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。

说明

这一事件用于验证一个单元的内容。

当焦点移动到一个不同的控件时这一事件不发生。


RowColChange 事件 (MSHFlexGrid)

当前活动单元更改到不同单元时发生。

语法

Private Sub object_RowColChange()

RowColChange 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。

说明

当活动单元更改时，下列事件顺序发生：首先是 LeaveCell、接着是 EnterCell、最后是 RowColChange。当用户单击一个新的单元时 RowColChange 事件发生。用户拖动一个选择经过 MSHFlexGrid 时不发生。


Scroll 事件 (MSHFlexGrid)

当 MSHFlexGrid 的内容滚动时发生。这可以使用滚动条、键盘或通过编程更改 TopRow 或 LeftCol 属性来实现。

语法

Private Sub object_Scroll()

Scroll 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。

说明

如果 ScrollTrack 属性为 True，这一事件在用户拖动或滚动鼠标时发生。如果 ScrollTrack 属性为 False时，拖动一旦完成这一事件发生。


SelChange 事件 (MSHFlexGrid)

当选定的范围更改到一个不同的单元或单元范围时发生。

语法

Private Sub object_SelChange()

SelChange 事件的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。

说明

当用户单击一个新的单元并拖动来选择一个新范围的单元或者是通过使用箭头键同时按下并保持 SHIFT 键来选择一定范围单元时，SelChange 事件发生。这一事件当用户拖动选择经过 MSHFlexGrid 时不发生。

这一事件可以通过使用 Row、Col、RowSel 或 ColSel 属性编程更改选择的区域发生。


MSHFlexGrid 控件常数

这一节包含关于 MSHFlexGrid 的控件常数的信息。注意这些常数也应用到 MSFlexGrid，除非有不同地注解。

AddModeSettings 属性 (MSHFlexGrid)

常数 | 值 | 描述
flexNoAddNew | 0 | 当前单元不在最后行中，并且没有 AddNew 操作处于待决。
flexAddNewCurrent | 1 | 当前单元在最后一行，但没有 AddNew 操作处于待决。
flexAddNewPending | 2 | 当前单元在倒数第二行。这是是通过 MSHFlexGrid 用户接口由用户初始化一个待决的 AddNew 操作的结果，或者是编程地设置一个列的 Value 或 Text 属性的结果。

AllowUserResizing 属性

常数 | 值 | 描述
flexResizeNone | 0 | 用户不能使用鼠标调整大小。这是缺省设置值。
flexResizeColumns | 1 | 用户可以使用鼠标调整列的大小。
flexResizeRows | 2 | 用户可以使用鼠标调整行的大小。
flexResizeBoth | 3 | 用户可以使用鼠标调整列和行的大小。

Appearance 属性

常数 | 值 | 描述
flexFlat | 0 | MSHFlexGrid 的全部外观是平面的或正常的。
flex3D | 1 | MSHFlexGrid 的全部外观是三维的。

BorderStyle 属性

常数 | 值 | 描述
flexBorderNone | 0 | 没有边框。
flexBorderSingle | 1 | 有一个单边框。

CellAlignment 属性

常数 | 值 | 描述
flexAlignLeftTop | 0 | 单元内容顶部左对齐。
flexAlignLeftCenter | 1 | 单元内容中间左对齐。对字符串的缺省设置值。
flexAlignLeftBottom | 2 | 单元内容底部左对齐。
flexAlignCenterTop | 3 | 单元内容顶部居中。
flexAlignCenterCenter | 4 | 单元内容中间居中。
flexAlignCenterBottom | 5 | 单元内容底部居中。
flexAlignRightTop | 6 | 单元内容顶部右对齐。
flexAlignRightCenter | 7 | 单元内容中间右对齐。对数字的缺省设置值。
flexAlignRightBottom | 8 | 单元内容底部右对齐。
flexAlignGeneral | 9 | 单元内容一般对齐方式。对字符串中间左对齐而对数值中间右对齐。

CellPictureAlignment 属性

常数 | 值 | 描述
flexAlignLeftTop | 0 | 图片顶部左对齐。
flexAlignLeftCenter | 1 | 图片中间左对齐。
flexAlignLeftBottom | 2 | 图片底部左对齐。
flexAlignCenterTop | 3 | 图片顶部居中。
flexAlignCenterCenter | 4 | 图片中间居中。
flexAlignCenterBottom | 5 | 图片底部居中。
flexAlignRightTop | 6 | 图片顶部右对齐。
flexAlignRightCenter | 7 | 图片中间右对齐。
flexAlignRightBottom | 8 | 图片底部右对齐。

CellTextStyle、TextStyle、TextStyleFixed 属性

常数 | 值 | 描述
flexTextFlat | 0 | 文本为正常的、平面的文本。
flexTextRaised | 1 | 文本看起来凸起。
flexTextInset | 2 | 文本看起来凹入。
flexTextRaisedLight | 3 | 文本看起来轻微凸起。
flexTextInsetLight | 4 | 文本看起来轻微凹入。

CellType 属性 (MSHFlexGrid)

常数 | 值 | 描述
flexCellTypeStandard | 0 | 单元为标准单元
flexCellTypeFixed | 1 | 单元包含在一个固定行或列中。
flexCellTypeHeader | 2 | 单元是一个数据带区的标头单元。
flexCellTypeIndent | 3 | 单元用在缩进一个数据带区的一列中。
flexCellTypeUnpopulated | 4 | 单元是一个未充填的单元。

ColAlignment 属性

常数 | 值 | 描述
flexAlignLeftTop | 0 | 列内容顶部左对齐。
flexAlignLeftCenter | 1 | 列内容中间左对齐。对字符串的缺省设置值。
flexAlignLeftBottom | 2 | 列内容底部左对齐。
flexAlignCenterTop | 3 | 列内容顶部居中。
flexAlignCenterCenter | 4 | 列内容中间居中。
flexAlignCenterBottom | 5 | 列内容底部居中
flexAlignRightTop | 6 | 列内容顶部右对齐。
flexAlignRightCenter | 7 | 列内容中间右对齐。对数值的缺省设置值。
flexAlignRightBottom | 8 | 列内容底部右对齐。
flexAlignGeneral | 9 | 列内容一般对齐方式。对字符串中间左对齐而对数值中间右对齐。

ColHeader 属性 (MSHFlexGrid)

常数 | 值 | 描述
flexColHeaderOn | 0 | 为每一个带区显示标头。
flexColHeaderOff | 1 | 没有为带区显示标头。
flexColHeaderOnce | 2 | 为带区显示标头。如果带区被折叠，只显示一个标头。重复的标头不显示。

DisplayBandSettings 属性 (MSHFlexGrid)

常数 | 值 | 描述
flexBandDisplayHorizontal | 0 | MSHFlexGrid 中的带区水平显示（横向）。缺省设置值。
flexBandDisplayVertical | 1 | MSHFlexGrid 中的带区竖直显示（上下方向）。

DisplayCellSettings 属性 (MSHFlexGrid)

常数 | 值 | 描述
FlexCellDisplayHorizontal | 0 | MSHFlexGrid 中的带区水平显示（横向）。
flexCellDisplayVertical | 1 | MSHFlexGrid 中的带区竖直显示（上下方向）。

FillStyle 属性

常数 | 值 | 描述
flexFillSingle | 0 | 单个。更改 Text 或任何单元属性只影响活动单元。缺省设置值。
flexFillRepeat | 1 | 重复。更改 Text 或任何单元属性影响所有选定单元。

FocusRect 属性

常数 | 值 | 描述
flexFocusNone | 0 | 围绕当前单元没有焦点矩形。
flexFocusLight | 1 | 围绕当前单元有一个浅色的焦点矩形。缺省设置值。
flexFocusHeavy | 2 | 围绕当前单元有一个深色的焦点矩形。

GridLines、GridLinesFixed 属性

常数 | 值 | 描述
flexGridNone | 0 | 没有线。单元格之间没有线。在 MSFlexGrid 中，对 GridLines 这是缺省的设置值。
flexGridFlat | 1 | 有线。单元格之间线风格被设置为正常的、平面的线。在 MSHFlexGrid 中，对 GridLines 这是缺省的设置。
flexGridInset | 2 | 凹入线。单元格之间线的风格被设置为凹入线。在 MSFlexGrid 中，对 GridLinesFixed 这是缺省的设置值。
flexGridRaised | 3 | 凸起线。单元格之间的线风格被设置为凸起线。在 MSHFlexGrid 中，对 GridLinesFixed 这是缺省的设置值。

HighLight 属性

常数 | 值 | 描述
flexHighlightNever | 0 | 选定单元无突出显示。
flexHighlightAlways | 1 | 选定单元总是突出显示。这是缺省设置值。
flexHighlightWithFocus | 2 | 突出显示只在控件有焦点时才显现。

MergeCells 属性

常数 | 值 | 描述
flexMergeNever | 0 | 不显示。包含相同内容的单元不分组。这是缺省设置值。
flexMergeFree | 1 | 自由。包含相同内容的单元总是合并。
flexMergeRestrictRows | 2 | 限制行。只有行中包含相同内容的相邻单元（向左）合并。
flexMergeRestrict-Columns | 3 | 限制列。只有列中包含相同内容的相邻单元（向上）合并。
flexMergeRestrictBoth | 4 | 限制行和列。只有在行中（向左）或在列中（向上）包含相同内容的相邻的单元合并。

MousePointer 属性

常数 | 值 | 描述
flexDefault | 0 | MSHFlexGrid 的轮廓。
flexArrow | 1 | 一个箭头指针。
flexCross | 2 | 一组十字型指针。
flexIBeam | 3 | 一个 "I" 型标指针，来允许文本输入。
flexIcon | 4 | 一个正方形中的方块。
flexSize | 5 | 一个用箭头指向上方、下方、左方或右方调整大小指针。
flexSizeNESW | 6 | 一个用箭头指向右上方和左下方调整大小指针。
flexSizeNS | 7 | 一个用箭头指向上方和下方调整大小指针。
flexSizeNWSE | 8 | 一个用箭头指向左上方和右下方调整大小指针。
flexSizeEW | 9 | 一个用箭头指向左方和右方调整大小指针。
flexUpArrow | 10 | 一个指向上方的箭头。
flexHourGlass | 11 | 一个沙漏符号。
flexNoDrop | 12 | 一个“不允许放下”指针。
flexCustom | 13 | 一个自定义风格指针。

PictureType 属性

常数 | 值 | 描述
flexPictureColor | 0 | 产生一个高品质的全色图象。
flexPictureMonochrome | 1 | 产生一个较低品质、单色，占用较少内存的图象。

RowSizingSettings 属性 (MSHFlexGrid)

常数 | 值 | 描述
flexRowSizeIndividual | 0 | 调整一个行的大小只更改调整的行的高度。这是缺省设置值。
flexRowSizeAll | 1 | 调整一个行的大小更改 MSHFlexGrid 中的所有行的高度。

SelectionMode 属性

常数 | 值 | 描述
flexSelectionFree | 0 | 自由。允许选定 MSHFlexGrid 中的个别单元，电子数据表风格。（缺省设置值）
flexSelectionByRow | 1 | 按行。强制跨越整个行选择，如在一个多列列表框或基于记录的显示。
flexSelectionByColumn | 2 | 按列。强制跨越整个列选择，如同为一个图表选择范围或为排序选择字段。

ScrollBars 属性

常数 | 值 | 描述
flexScrollNone | 0 | MSHFlexGrid 没有滚动条。
flexScrollHorizontal | 1 | MSHFlexGrid 有一个水平的滚动条。
flexScrollVertical | 2 | MSHFlexGrid 有一个竖直的滚动条。
flexScrollBoth | 3 | MSHFlexGrid 有水平和竖直的滚动条。这是缺省设置值。

Sort 属性

常数 | 值 | 描述
flexSortNone | 0 | 无。不执行排序。
flexSortGenericAscending | 1 | 一般升序。执行估计文本不管是字符串或者是数值的升序排序。
flexSortGenericDescending | 2 | 一般降序。执行估计文本不管是字符串或者是数值的降序排序。
flexSortNumericAscending | 3 | 数值升序。执行把字符串变换为数值的升序排序。
flexSortNumericDescending | 4 | 数值降序。执行把字符串变换为数值的降序排序。
flexSortStringNoCaseAsending | 5 | 字符串升序。执行不区分大小写字符串比较的升序排序。
flexSortNoCaseDescending | 6 | 字符串降序。执行不区分大小写字符串比较的降序排序。
flexSortStringAscending | 7 | 字符串升序。执行区分大小写字符串比较的升序排序。
flexSortStringDescending | 8 | 字符串降序。执行区分大小写字符串比较的降序排序。
flexSortCustom | 9 | 自定义，使用 Compare 事件比较行。


AddItem 方法 (MSHFlexGrid)

该方法将一个行添加到 MSHFlexGrid 控件中。不支持命名参数。

语法

object.AddItem (string, index, number)

AddItem 方法的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
item | 字符串必需的。字符串表达式，它在新增行中显示。可以用制表符 (vbTab) 来分隔每个字符串，从而将多个字符串（行中的多个列）添加进去。
Index | 可选的。Long 类型，它代表了控件中放置新增行的位置。对于第一行来说，index = 0。如果省略 index，那么新增行将成为带区中的最后一行。注意 index 是 MSHFlexGrid 中的 BandColIndex。
number | 可选的。Long 值，指出添加行的带区号。

说明如果 MSHFlexGrid 不包含带区（即它被绑定到一个非层次结构类型的 Recordset），那么 BandNumber 参数将是可选的。即使指定了它的值，指定值也必须为 0。如果 BandDisplay 属性被设置为水平的，而 MSHFlexGrid 被绑定到一个分层结构的 Recordset，则 BandNumber 参数将是必需的。如果 BandDisplay 属性被设置为垂直的，那么只有当带区有二义性的时候 BandNumber 参数才是必要的。index 参数永远是可选的。


AddItem, RemoveItem Methods (MSHFlexGrid) Example

AddItem 和 RemoveItem 方法 (MSHFlexGrid) 示例

在该示例中，用 AddItem 方法将 100 项添加到 MSHFlexGrid 中。要试用此例，可以将代码粘贴到窗体（该窗体带有命名为 MSFlexGrid1 的 MSHFlexGrid 控件）的声明部分，然后按下 F5 键，并单击该窗体。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form_Click ()
   Dim Entry, i, Msg               '声明变量。
   Msg = _
   "Choose OK to add 100 items to your MSFlexGrid."
   MsgBox Msg   '显示消息。
   MSHFlexGrid1.Cols = 2         '每行有两个字符串。
   For i = 1 To 100   '从 1 计数到 100。
      Entry = "Entry " & Chr(9) & I   '创建项。
      MSHFlexGrid1.AddItem Entry      '添加项。
   Next i
   Msg ="Choose OK to remove every other entry."
   MsgBox Msg                     '显示消息。
   For i =1 To 50               '决定怎样删除
      MSHFlexGrid1.RemoveItem i   '其它每一项。
   Next I
   Msg ="Choose OK to clear all items."
   MsgBox Msg                     '显示消息。
   MSFlexGrid1.Clear               '清除列表框。
End Sub


Clear 方法 (MSHFlexGrid)

该方法清除 MSHFlexGrid 的内容。这包括所有文本、图片和单元格式。Clear 方法并不影响 MSHFlexGrid 上的行数和列数。

语法

object.Clear

Clear 方法的语法有一部分：:

部分 | 描述
object | object 所在处代表对象表达式，其值是“应用于”列表中的对象。

说明

为了删除单元，但并非仅仅清除它们，可以在每个要删除的行上使用 RemoveItem 方法。


Clear 方法 (MSHFlexGrid) 示例

在以下示例中，无论何时，当用户在单元上单击时，都将 "Flex" 放到当前单元中。无论何时，当用户双击时，都清除 MSHFlexGrid 控件。可以单击 F5 键来运行该程序。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form1_Load ()
   MSHFlexGrid1.Rows = 8
   MSHFlexGrid1.Cols = 5
End Sub

Private Sub MSHFlexGrid1_Click ()
   '将文本放到当前单元中。
   MSHFlexGrid1.Text = "Flex"
End Sub

Private Sub MSHFlexGrid1.DblClick ()
   MSHFlexGrid1.Clear
End Sub


ClearStructure 方法 (MSHFlexGrid)

清除 MSHFlexGrid 中的全部映射信息，映射信息与被显示的列的显示顺序和名称有关。该信息可以在设计时进行设置，请使用“属性页”对话框的 Band 选项卡，或者使用快捷菜单上的“检索结构”命令。

该方法可以用来将 MSHFlexGrid 重新设置为一种已知的状态。如果用户在程序中改变了 MSHFlexGrid 的数据源（而且该数据源具有不同的结构），通过执行本方法即可正确地显示数据。

语法

object.ClearStructure

ClearStructure 方法的语法只有一个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。

说明

如果在改变结构的时候没有清除映射结构，那么 MSHFlexGrid 将试图使用现有的映射结构显示新的数据源。只有在映射信息中指定的列才能在 MSHFlexGrid 中显示数据。其他列也会显示出来，但是不会显示任何数据。


CollapseAll 方法 (MSHFlexGrid)

在 MSHFlexGrid 内折叠指定带区的所有行。

语法

object.CollapseAll(number)

CollapseAll 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 可选的。一个 Long值，它指定包含要折叠的行的带区。


ExpandAll 方法 (MSHFlexGrid)

扩充在 MSHFlexGrid 里面指定带区的所有行。

语法

object.ExpandAll(number)

ExpandAll 方法的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 可选的。一个 Long值，它指定包含要扩充的行的带区。如果未指定，缺省值为 –1。


RemoveItem 方法 (MSHFlexGrid)

运行时从 MSHFlexGrid 中删除一行。这一属性不支持命名的参数。

语法

object.RemoveItem(index, number)

RemoveItem 方法的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个整数，表示 MSHFlexGrid 中要删除的行。对于第一行，index=0。
number | 一个 Long值，指定要从中删除行的带区。

说明

这一方法删除指定的整个行。要不删除行来清除数据，使用 Clear 方法。

如果 BandDisplay 属性被设置为水平并且 MSHFlexGrid 被绑定到一个分层的记录集， number 是必需的。如果 BandDisplay 属性被设置为竖直，number 只在带区意向不明时才需要。

在包含子记录的带区内删除一个行时，子记录被自动地删除。


AllowBigSelection 属性

该属性返回或者设置一个值，该值决定了在行头或者列头上单击时，是否可以使得整个行或者列都被选中。

语法

object.AllowBigSelection [=Boolean ]

AllowBigSelection 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
boolean | 布尔表达式，指出单击标头时，是否选择整行或整列。

设置值

Boolean 的设置值是：

设置值 | 描述
True | 缺省。当用户单击标头时，选择整行或整列。
False | 当用户单击标头时，仅选择标头。


AllowBigSelection 属性示例

例如，下面的代码表示：当用户在标头上单击时，允许整个行或者列都被选中：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.AllowBigSelection = True
End Sub


AllowUserResizing 属性

该属性返回或者设置一个值，该值决定了是否可以用鼠标来对 MSHFlexGrid 控件中行和列的大小进行重新调整。

语法

object.AllowUserResizing [= value ]

AllowUserResizing 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 整数或者常数，它指定了用户是否可以对行和列的大小进行重新调整，就象下面的“设置值”中所述。

设置值

value 的设置值是：

常数 | 值 | 描述
flexResizeNone | 0 | （缺省的）不允许。用户不能用鼠标来重新调整大小。
flexResizeColumns | 1 | 列。用户可以用鼠标来重新调整列的大小。
flexResizeRows | 2 | 行。用户可以用鼠标来重新调整行的大小。
flexResizeBoth | 3 | 行和列。用户可以用鼠标来重新调整行和列的大小。

说明

为调整行和列的大小，鼠标应该在 MSHFlexGrid 控件的固定区域的上方，并接近于行和列之间的边界。鼠标指针将改变为适当的调整大小用的指针，用户可以拖动行或者列，以改变行的高度或者列的宽度。下面的代码就实现了这种功能：


AllowUserResizing 属性示例

下列代码示例添加了用户调整大小功能。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.AllowUserResizing = True
End Sub


BackColorBand、BackColorHeader、BackColorIndent、BackColorUnpopulated 属性

  • BackColorBand — 返回或者设置 MSHFlexGrid 带区的背景色。

  • BackColorHeader — 返回或者设置 MSHFlexGrid 标头区域的背景色。

  • BackColorIndent — 返回或者设置 MSHFlexGrid 缩进区域的背景色。

  • BackColorUnpopulated — 返回或者设置 MSHFlexGrid 未填数据区域的背景色。

语法

object.BackColorBand [=color]
object.BackColorHeader [=color]
object.BackColorIndent [=color]
object.BackColorUnpopulated [=color]

BackColorBand、BackColorHeader、BackColorIndent 和 BackColorUnpopulated 属性的语法包括以下各个部分：

部分描述

object一个对象表达式，其值是“应用于”列表中的一个对象。

color一个数值表达式，它指定了颜色。


BackColor、BackColorBkg、BackColorFixed 以及 BackColorSel 属性示例

在该示例中，用了 MSHFlexGrid 中的 BackColorBkg、BackColorFixed 以及 BackColorSel 属性。它以每秒钟两次的速度，随机地对 MSHFlexGrid 控件的控件背景、已选定背景，以及确定单元背景的颜色进行重置。要试用此例，可以将下面的代码粘贴到窗体（该窗体带有命名为 Timer1 的 Timer 控件和命名为 MSHFlexGrid1 的 MSHFlexGrid 控件）的声明部分，然后加载该窗体。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form_Load ()
   Timer1.Interval =500
End Sub

Private Sub Timer1_Timer ()
   MSHFlexGrid1.BackColorBkg = QBColor(Rnd * 15)
   MSHFlexGrid1.BackColorFixed = QBColor(Rnd * 10)
   MSHFlexGrid1.BackColorSel = QBColor(Rnd * 10)
End Sub


BackColor、BackColorBkg、BackColorFixed 以及 BackColorSel 属性

这些属性返回或设置 MSHFlexGrid 的各种不同元素的背景颜色。

语法

object.BackColor

[=color]

object.BackColorBkg

[=color]

object.BackColorFixed

[=color]

object.BackColorSel [=color ]

BackColor、BackColorBkg、BackColorFixed 以及 BackColorSel 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
color | 数值表达式，它指定了颜色。

说明

下面的图片显示了这些属性分别引用 MSHFlexGrid 的哪一部分：

BackColor 影响所有未确定单元的颜色。可以用 CellBackColor 属性来对单个单元的背景颜色进行设置。


BackColor, BackColorBkg, BackColorFixed, BackColorSel Properties Example

The following example uses the BackColorBkg, BackColorFixed, and BackColorSel properties in the MSHFlexGrid. It resets the colors of the control's background, selected background, and fixed-cell background randomly twice each second for the MSHFlexGrid. To use this example, paste the code into the Declarations section of a form with a Timer control and an MSHFlexGrid with the names Timer1 and MSHFlexGrid1 respectively, then load the form.

Note If you are using the MSFlexGrid, substitute "MSHFlexGrid1" with "MSFlexGrid1."

Private Sub Form_Load ()
   Timer1.Interval =500
End Sub

Private Sub Timer1_Timer ()
   MSHFlexGrid1.BackColorBkg =QBColor(Rnd * 15)
   MSHFlexGrid1.BackColorFixed =QBColor(Rnd * 10)
   MSHFlexGrid1.BackColorSel =QBColor(Rnd * 10)
End Sub


BandColIndex 属性 (MSHFlexGrid)

返回相对于包含它的带区的当前单元格的列号。

语法

object.BandColIndex [=value]

BandColIndex 属性的语法包含以下几个部分：

部分描述

object一个对象表达式，其值是“应用于”列表中的一个对象。

value一个 Long 类型的数值，它指定了当前单元格的列号。


BandDisplay 属性 (MSHFlexGrid)

指定各个带区如何在 MSHFlexGrid 中显示。

语法

object.DisplayBandSettings [=value]

BandDisplay 属性的语法包含以下几个部分：

部分描述

object一个对象表达式，其值是“应用于”列表中的一个对象。

value一个数值表达式，它指定了带区如何显示在 MSHFlexGrid 中，如“设置值”中所述。

设置值

value 的各种设置包括：

设置 | 值 | 描述
flexBandDisplayHorizontal | 0 | 缺省值。MSHFlexGrid 内的带区按水平方式显示（横跨排列）。
flexBandDisplayVertical | 1 | MSHFlexGrid 内的带区按垂直方式显示（上下排列）。


BandExpandable 属性 (MSHFlexGrid)

返回和设置一个值，该值确定当前带区中的行是否能够被展开或收缩。当前带区是由 Col 和 Row 属性确定的。该属性在运行时是只读的，而在设计时是不可使用的。

语法

object.BandExpandable(number) [=Boolean]

BandExpandable 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
number | 一个 Long 数值，它指示出带区在 MSHFlexGrid 中的编号。
Boolean | 一个 Boolean 表达式，它确定所指定的带区是否能被展开或收缩。

设置值

Boolean 的设置为：

设置 | 描述
True | 缺省值。被指定的带区是可以展开和收缩的。
False | 被指定的带区是不可以展开和收缩的。

说明

如果带区是可展开的，那么带区内的第一个列的左边显示出一个标准的加号 (+) 和减号 (–) 位图。通过设置 ExpandPicture 和 CollapsePicture 属性，该位图可以被覆盖掉。当第一次显示该网格时，缺省情况下所有的带区都是收缩的。

通过设置该属性，用户将不能够展开或者收缩带区；它不会使指定带区内的各行被展开或者收缩。例如，在将该属性设置为 False 之前，如果子行已经被显示出来，那么子行将继续被显示。

要使一个带区成为可展开的，它至少需要有一个子带区。否则，BandExpandable 属性将被忽略。


BandIndent 属性 (MSHFlexGrid)

指定带区缩进的列数。

语法

object.BandIndent [=number]

BandIndent 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
number | 一个 Long 数值，它指定了在 MSHFlexGrid 中要缩进的带区。缺省设置为 0。


BandLevel 属性 (MSHFlexGrid)

返回包含当前单元格的带区编号。带区编号从 0 开始。当前单元格是由 Col 和 Row 属性定义的。该属性不能在设计时使用。

语法

object.BandLevel [=number]

BandLevel 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
number | 一个整数或者常数，它指定了包含当前单元格的带区的编号

。


Bands 属性 (MSHFlexGrid)

返回 MSHFlexGrid 中的带区个数。MSHFlexGrid 至少有一个带区。当 MSHFlexGrid 被绑定到一个标准 Recordset 时，整个 MSHFlexGrid 被作为一个带区处理。

语法

object.Bands [=value]

Bands 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
value | MSHFlexGrid 中的带区个数。

说明

该属性是只读的。其数值是由与控件绑定在一起的 Recordsets 的分层结构中的 Recordsets 的个数决定的。

请参阅 Col 和 Row 属性。


CellAlignment 属性

该属性返回或设置的数值确定了一个单元格或被选定的多个单元格所在区域的水平和垂直对齐方式。该属性在设计时是不可使用的。

语法

object.CellAlignment [=value]

CellAlignment 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
value | 一个整数或者常数，它指定文本如何与单元格进行对齐，如“设置值”中所述。

设置值

value 的各种设置如下：

常数 | 值 | 描述
flexAlignLeftTop | 0 | 单元格的内容左、顶部对齐。
flexAlignLeftCenter | 1 | 字符串的缺省对齐方式。单元格的内容左、居中对齐。
flexAlignLeftBottom | 2 | 单元格的内容左、底部对齐。
flexAlignCenterTop | 3 | 单元格的内容居中、顶部对齐。
flexAlignCenterCenter | 4 | 单元格的内容居中、居中对齐。
flexAlignCenterBottom | 5 | 单元格的内容居中、底部对齐。
flexAlignRightTop | 6 | 单元格的内容右、顶部对齐。
flexAlignRightCenter | 7 | 数值的缺省对齐方式。单元格的内容右、居中对齐。
flexAlignRightBottom | 8 | 单元格的内容右、底部对齐。
flexAlignGeneral | 9 | 单元格的内容按一般方式进行对齐。字符串按“左、居中”显示，数字按“右、居中”。


CellAlignment 属性示例

在下面的代码中，使用常数设置将每个单元格的文本对齐方式设置为左、居中。

注意 如果使用的是 MSFlexGrid，请将 "MSHFlexGrid1" 替换为 "MSFlexGrid1"。

Sub Form1_Load ()
   MSHFlexGrid1.CellAlignment =flexAlignLeftCenter
End Sub


CellBackColor 和 CellForeColor 属性

  • CellBackColor — 返回或者设置单独的单元格或者单元格区域的背景色。

  • CellForeColor — 返回或者设置单独的单元格或者单元格区域的前景色。

这些属性不能在设计时使用。

语法

object.CellBackColor [=color]
object.CellForeColor [=color]

CellBackColor 和 CellForeColor 属性的语法包括以下几个部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
color | 整数（枚举）。数值表达式，它为当前选定单元指定了颜色。将这些属性中的任何一个设置为 0，都将用标准背景和前景颜色来画单元。

说明

对这个属性进行修改会影响当前单元或者当前选定，这取决于 FillStyle 属性的设置值。

将这些属性中的任何一个设置为 0，MSHFlexGrid 都将用标准背景和前景颜色来画单元。如果想把这些属性中的任何一个设置为黑色，可以将它们设置为 1，而不是 0。

可以用 BackColorBkg、BackColorFixed、BackColorSel、ForeColorFixed 以及 ForeColorSel 属性对各种不同的 MSHFlexGrid 元素的颜色进行设置。可以用 BackColor 属性将所有未确定单元设置为同样的背景颜色。


CellBackColor、CellForeColor 属性示例

在以下示例中，用了 MSHFlexGrid 中的 CellBackColor 和 CellForeColor 属性。它以每秒钟两次的速度，随机地对 MSHFlexGrid 控件的焦点单元的背景颜色和文本颜色进行重置。要试用此例，可以将下面的代码粘贴到窗体（该窗体带有命名为 Timer1 的 Timer 控件和命名为 MSHFlexGrid1 的 MSHFlexGrid 控件）的声明部分，然后加载该窗体。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form_Load ()
   Timer1.Interval =500
   MSHFlexGrid1.Text = "Focus Here"
End Sub

Private Sub Timer1_Timer ()
   MSHFlexGrid1.CellBackColor = QBColor(Rnd * 15)
   MSHFlexGrid1.CellForeColor = QBColor(Rnd * 10)
End Sub


CellFontBold 属性

该属性返回或设置当前单元文本的粗体样式。在设计时不可用。

语法

object.CellFontBold [=Boolean ]

CellFontBold 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
boolean | 布尔表达式决定了当前单元文本是否是粗体的。

设置值

Boolean 的设置值是：:

设置值 | 描述
True | 当前单元文本为粗体
False | 缺省。当前单元文本为正常（不是粗体）

说明

对该属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontBold Property Example

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元的文本设置为粗体样式：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus()
   MSHFlexGrid1.CellFontBold = 1
End Sub


CellFontItalic 属性

该属性返回或设置当前单元文本的斜体样式。在设计时不可用。

语法

object.CellFontItalic [=Boolean]

CellFontItalic 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
boolean | 布尔表达式，决定了单元中的文本样式是否是斜体的。

设置值

Boolean 的设置值是：

设置值 | 描述
True | 当前单元文本为斜体
False | 缺省。当前单元文本为正常（不是斜体）

说明

对该属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。无论何时，当 MSHFlexGrid 控件在焦点中时，


CellFontItalic Property Example

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元的文本设置为斜体样式：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus()
   MSHFlexGrid1.CellFontItalic = True
End Sub


CellFontName 属性

该属性返回或设置当前单元文本的字体名。在设计时不可用。

语法

object.CellFontName [=string ]

CellFontName 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
string | 字符串表达式，命名一种可用的字面。

说明

对该属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontName Property Example

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元的文本设置为一种特定的字体类型：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus()
   MSHFlexGrid1.CellFontName = Screen.Fonts(3)
   MSHFlexGrid1.Text = Screen.Fonts(3)   '显示字体名。
                                    ' name.
End Sub


CellFontSize 属性

该属性返回或设置以点数为单位的当前单元文本的尺寸。在设计时不可用。

语法

object.CellFontSize [= value ]

CellFontSize 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | Single 类型。数值表达式，它指定了当前单元文本的尺寸。

说明

对该属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontSize 属性示例

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元的文本的尺寸设置为 12 个点：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus()
   MSHFlexGrid1.CellFontSize = 12
End Sub


CellFontStrikeThrough 属性

该属性返回或者设置一个值，该值决定了是否将 Strikethrough 样式应用到当前单元文本中。

语法

object.CellFontStrikeThrough =[ Boolean]

CellFontStrikeThrough 属性语法有如下部分：

部分 | 描述
Object | 对象表达式，其值是“应用于”列表中的对象。
Boolean | 布尔表达式，它决定了是否将 StrikeThrough 样式应用到单元文本中。

设置值

Boolean 的设置值是：

设置值 | 描述
True | 将 StrikeThrough 样式应用到单元文本中。
False | （缺省的）不将 StrikeThrough 样式应用到单元文本中。

说明

对CellFontStrikeThrough属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontStrikeThrough 属性示例

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元文本设置为 Strike-Through 样式：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus
   MSHFlexGrid1.CellFontStrikeThrough = 1
End Sub


CellFontUnderline 属性

该属性返回或者设置一个值，该值指定了是否将下划线样式应用到当前单元文本中。

语法

object.CellFontUnderline =[ Boolean]

CellFontUnderline 属性语法有如下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
boolean | 布尔表达式，它决定了是否将 Underline 样式应用到单元文本中。

设置值

Boolean 的设置值是：

设置值 | 描述
True | 将 Underline 样式应用到单元文本中。
False | （缺省的）不将 Underline 样式应用到单元文本中。

说明

对 CellFontUnderline 属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontUnderline 属性示例

无论何时，当 MSHFlexGrid 控件在焦点中时，下面的代码将当前单元的文本设置为 Underline 样式：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus
   MSHFlexGrid1.CellFontUnderline = 1
End Sub


CellFontWidth 属性

该属性返回或设置以点数表示的当前单元文本宽度。在设计时不可用。

语法

object.CellFontWidth [= value ]

CellFontWidth 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | Single 类型。数值表达式，它指定了当前单元文本字体所要求的点数宽度。

说明

对CellFontWidth属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellFontWidth 属性示例

当 MSHFlexGrid 控件在焦点中时，下面的代码对当前单元的文本宽度进行设置：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus()
   MSHFlexGrid1.CellFontWidth = 5
End Sub


CellHeight、CellLeft、CellTop 以及 CellWidth 属性(MSHFlexGrid)

这些属性返回以缇为单位的当前单元的位置和大小。在设计时不可用。

语法

object.CellHeight [=value]
object.CellLeft [=value]
object.CellTop [=value]
object.CellWidth [=value]

CellHeight、CellLeft、CellTop 和 CellWidth 属性语法有如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Value | 一个数值表达式，指出当前单元的返回位置或大小。

说明

如果想对单元内编辑进行枚举的话，这些属性是很有用的。可以通过捕获 MSHFlexGrid 控件的 KeyPress 事件，把文本框或者其它控件放在当前单元的上方，并让用户对其内容进行编辑。

不管窗体的 ScaleMode 设置值怎样，这些属性的返回值总是以缇为单位。


CellPictureAlignment 属性

该属性返回或设置在单元或者一群选定单元中图片的对齐方式。在设计时不可用。

语法

object.CellPictureAlignment [= value ]

CellPictureAlignment 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 整数或者常数，它指定了单元中的图片如何对齐，如下“设置值”中所述。

设置值

value 的设置值是：

常数 | 值 | 描述
flexLeftTop | 0 | 左边顶端对齐
flexLeftCenter | 1 | 左边中间对齐
flexLeftBottom | 2 | 左边底端对齐
flexCenterTop | 3 | 居中顶端对齐
flexCenterCenter | 4 | 居中中间对齐
flexCenterBottom | 5 | 居中底端对齐
flexRightTop | 6 | 右边顶端对齐
flexRightCenter | 7 | 右边中间对齐
flexRightBottom | 8 | 右边底端对齐

说明

对该属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。

FillStyle 属性对于 CellAlignment 必须设置为 1 (Repeat)，以对齐 MSHFlexGrid 中选定的单元范围。


CellPictureAlignment 属性示例

下面的代码用常数值来将当前单元的图片对齐方式设置为右边中间。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub Form1_Load
   MSHFlexGrid1.CellPictureAlignment = _
   flexAlignRightCenter
End Sub


CellPicture 属性

该属性返回或设置在当前单元或者一群单元中显示的图象。在设计时不可用。

语法

object.CellPicture [= picture ]

CellPicture 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
picture | 一个位图、图标、或元文件 图像。也可以把它赋给另一个控件的 Picture 属性。

说明

在运行时，可以通过在位图、图片或者元文件上使用 LoadPicture 函数，或者将之赋给另一个控件的 Picture 属性来对该属性进行设置。

对这个属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。

每个单元都可能包含文本和图片。文本和图片的相对位置是由 CellAlignment 和 CellPictureAlignment 属性所决定的。


CellPicture 属性示例

在以下示例中，将 Visual Basic 图标库中的图标加载到 MSHFlexGrid 控件的两个单元中。可以使用任意两个图标。将下面的代码粘贴到某个窗体（该窗体带有 MSHFlexGrid 控件）的声明部分。按 F5 键来运行该程序，然后单击该窗体。

Private Sub Form_Click ()
   '加载图标。
   MSHFlexGrid1.Row = 1
   MSHFlexGrid1.Col = 1
   Set MSHFlexGrid1.CellPicture = _
   LoadPicture("Icons\Computer\Trash02a.ico")
   MSHFlexGrid1.Row = 1
   MSHFlexGrid1.Col = 2
   Set MSHFlexGrid1.CellPicture = _
   LoadPicture("Icons\Computer\Trash02b.ico")
End Sub


CellTextStyle 属性

该属性返回或设置指定单元或者一群单元上文本的三维样式。在设计时不可用。

语法

object.CellTextStyle [= value ]

CellTextStyle 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
value | 整数或者常数，它指定了 CellTextStyle 属性中的一个常数，如下“设置值”中所述。

设置值

value 的设置值为：

常数 | 值 | 描述
flexTextFlat | 0 | 平面的（普通文本）
flexTextRaised | 1 | 凸起的
flexTextInset | 2 | 下陷的
flexTextRaisedLight | 3 | 轻微凸起的
flexTextInsetLight | 4 | 轻微下陷的

说明

设置值 1 和 2 最好用于大字体和粗体字。设置值 3 和 4 最好用于小的常规字体。单元的外观同时还受到背景颜色的影响；许多背景颜色显不出凸起或者下陷的效果。

对这个属性所做的更改会影响到当前单元或者当前选定，这取决于 FillStyle 属性的设置值。


CellTextStyle 属性示例

下面的代码用常数值来将当前单元或者当前选定的文本样式设置为 Inset。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub MSHFlexGrid1_GotFocus
   MSHFlexGrid1.CellTextStyle = flexTextInset
End Sub


CellType 属性 (MSHFlexGrid)

返回MSHFlexGrid 当前活动单元格的类型。

语法

object.CellType [=value]

CellType 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
value | 一个 Long 数值，它指定了活动单元格的位置，如“设置值”中所示。

设置值

value 的设置范围是：

常数 | 值 | 描述
flexCellTypeStandard | 0 | 缺省设置。单元格为标准单元格。
flexCellTypeFixed | 1 | 单元格被包含在固定的行或者列中。
flexCellTypeHeader | 2 | 单元格为一个数据带区的标头。
flexCellTypeIndent | 3 | 单元格被用于一列中，该列缩进了数据带区。
flexCellTypeUnpopulated | 4 | 单元格中尚未被填入数据。


Clip 属性 (MSHFlexGrid)

该属性返回或设置 MSHFlexGrid 控件的选定区域中单元的内容。在设计时不可用。

语法

object.Clip [= string ]

Clip 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
string | 字符串表达式，它带有已选定区域的内容。

说明

string 可能包含多个行和列的内容。在 string 中，制表符，即 Chr (9)，或者说常数 vbTab 指示了某一行中的一个新单元，而回车换行符，即 Chr (13)，或者说常数vbCR 则指示了一个新行的开始。可以用 Chr 函数或者 vb 常数来将这些字符嵌入到字符串中。

当把数据放入 MSHFlexGrid 控件时，只是选定的单元受影响。如果选定区域中的单元比 string 中描述的更多，那么余下的单元就被单独放到一边。如果 string 中描述的单元比选定区域中的更多，那么 string 的未使用部分就被忽略。


Clip 属性 (MSHFlexGrid) 示例

在该示例中，无论何时，当用户选定了一组单元时，将 "James"、"Nancy" 以及 "Lisa" 放到已选定单元中。无论何时，当用户双击时，都清除 MSHFlexGrid 控件。可以单击 F5 键来运行该程序。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form1_Load ()
   MSHFlexGrid1.Rows = 8
   MSHFlexGrid1.Cols = 5
End Sub

Private Sub MSHFlexGrid1_MouseUp (Button As Integer, _
Shift as Integer, X As Single, Y As Single)
Dim myStrAs String
   myStr = "James" + Chr(9) + "Nancy" + Chr(9) + "Lisa"
   MSHFlexGrid1.Clip = myStr
End Sub


ColAlignment、ColAlignmentBand、ColAlignmentHeader 属性 (MSHFlexGrid)

返回或者设置列中数据的对齐方式。该列可以是一个标准列、带区中的一列或者标头中的一列。该属性在设计时是不可使用的（除非通过 FormatString 属性间接地使用）。

语法

object.ColAlignment(number) [=value]
object.ColAlignmentBand(number) [=value]
object.ColAlignmentHeader(number) [=value]

ColAlignment、ColAlignmentBand 和 ColAlignmentHeader 属性的语法包括：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
number | 一个 Long 数值，它指定了列在 MSHFlexGrid 中的编号。
value | 一个整数或者常数，它指定了列中的数据的对齐方式，如“设置值”中所示。

设置值

value 的设置值包括：

常数 | 值 | 描述
flexAlignLeftTop | 0 | 单元格的内容左、顶部对齐。
flexAlignLeftCenter | 1 | 字符串的缺省对齐方式。单元格的内容左、居中对齐。
flexAlignLeftBottom | 2 | 单元格的内容左、底部对齐。
flexAlignCenterTop | 3 | 单元格的内容居中、顶部对齐。
flexAlignCenterCenter | 4 | 单元格的内容居中、居中对齐。
flexAlignCenterBottom | 5 | 单元格的内容居中、底部对齐。
flexAlignRightTop | 6 | 单元格的内容右、顶部对齐。
flexAlignRightCenter | 7 | 数值的缺省对齐方式。单元格的内容右、居中对齐。
flexAlignRightBottom | 8 | 单元格的内容右、底部对齐。
flexAlignGeneral | 9 | 单元格的内容按一般方式进行对齐。字符串按“左、居中”显示，数字按“右、居中”显示。

说明

任何一列都可以有与其他列不同的对齐方式。ColAlignment 属性将影响指定列的所有单元格，包括位于固定行中的那些单元格。

如果需要设置单个单元格的对齐方式，可以使用 CellAlignment 属性。如果需要在设计时设置列的对齐方式，可以使用 FormatString 属性。

如果 MSHFlexGrid 处于垂直模式，那么设置 ColAlignment(3) 可以影响到多个带区中的若干列。


ColAlignment 属性 (MSHFlexGrid) 示例

下面的代码用常数值将第 3 列的对齐方式设置为 Right Align。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.ColAlignment(3) = flexAlignRight
End Sub


ColData 和 RowData 、BandData属性(MSHFlexGrid)

这些属性返回或设置跟每个行和列相关联的一个任意的 long 类型的值。在设计时不可用。

语法

object.ColData(number) [=value]
object.RowData(number) [=value]
object.BandData(number) [=value]

ColData、RowData 和 BandData 属性的语法有如下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
number | Long 类型值。在保存或者检索数据的 MSHFlexGrid 控件中的行号或者列号。
value | Long 类型值。它指定 ColData 或者 RowData 数组的内容。

说明

可以用 RowData 和 ColData 属性来使指定的数值跟 MSHFlexGrid 控件上的每一行或者列相关联,然后就可以在代码中使用这些数值来识别各项。

例如，可以将包含总数的行添加到 MSHFlexGrid 中，并通过将它们的 RowData 属性设置为一个非 0 值来识别这些行。为了以后对这些总数进行更新，可以通过扫描 RowData 数组并删除相应的行来删除过时的总数。

对 RowData 属性的另一个典型应用是将一个索引放到数据结构的数组中，这些数据结构跟在每一行上所描述的各项相关联。


ColHeaderCaption 属性 (MSHFlexGrid)

指定需要显示在指定的列和带区的标头中的标题。

语法

object.ColHeaderCaption(number, index) [=string]

ColHeaderCaption 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
number | 一个 Long 数值，它指明的带区中包含了需要设置标题的列。
index | 一个 Long 数值，它指明了特定的列。
string | 一个字符串表达式，它指定了一种可用的字体类型。


ColHeader 属性 (MSHFlexGrid)

指出是否为指定的带区显示标头。

语法

object.ColHeader(value)

ColHeader 属性语法有如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 可选的。一个Long值，指出是否显示包含标头的带区，如“设置值”中所描述的。

设置值

value 的设置值是：

设置 | 值 | 描述
flexColHeaderOn | 0 | 为每一个带区显示标头。
flexColHeaderOff | 1 | 不为带区显示标头。
flexColHeaderOnce | 2 | 显示带区的标头。如果带区是折叠的，只显示一个标头。不显示重复标头。


ColIsVisible 属性

该属性返回或设置一个值，该值指示了指定列在当前是否是可见的。

语法

object.ColIsVisible(index) [=Boolean]

ColIsVisible 属性的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
index | Long 类型值。列号。该值必须在从 0 到 Cols 属性 -1 的范围内。
Boolean | 一个布尔表达式，指出指定的列是否可见。

设置值

Boolean 的设置值是：

设置值 | 描述
True | 指定列在当前是可见的。
False | 指定列在当前是不可见的。


ColPosition、RowPosition 属性

  • ColPosition — 设置一个 MSHFlexGrid 列的位置，允许移动列到指定的位置。

  • RowPosition — 设置一个 MSHFlexGrid 行的位置，允许移动行到指定的位置。

语法

object.ColPosition(index, number) [= value]
object.RowPosition(number) [= value]

注意 由于这一控件的限制，上面的 ColPosition 语法不能在 MSFlexGrid 中使用。如果正在使用 MSFlexGrid，采用以下语法：object.ColPosition(number) [= value]

ColPosition 和 RowPosition 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个 Long值，它指定要移动的列。 注意 不可应用于 MSFlexGrid。
number | 一个 Long值，它指定包含要移动的列的带区。可选的。 注意 在 MSFlexGrid 中，这是要移动的列或行的数目。
value | 整数。一个数值表达式，它指定列或行的新的位置。

说明

在 MSHFlexGrid中，当 BandNumber 未指定时，缺省为 0。因此，当网格未绑定到一个分层结构的记录集时，BandNumber 为 0 和不指定 BandNumber 两者都会得到相同的结果。注意 BandNumber 是与 MSFlexGrid 向后兼容的一个可选的参数。

索引和设置必须对应有效的行或列数（在 0 到 Rows –1 或 Cols –1范围），否则会产生一个错误。

当一个行或列被使用 RowPosition 和 ColPosition 属性移动时，所有的格式化的信息随着它一起移动。这包括宽、高、对齐、颜色和字体属性。如果想只移动文本，可以使用 Clip 属性。


ColPosition 属性示例

在实现时，当用户单击某列时，下列代码将引起这列移动到第一位置（最左边一列）。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Sub MSHFlexGrid1_Click ()
   MSHFlexGrid1.ColPosition(MSFlexGrid1.MouseCol) = 0
End Sub


Col 和 Row 属性 (MSHFlexGrid)

这两个属性返回或设置 MSHFlexGrid 中活动单元的坐标。在设计时不可用。

语法

object.Col [= number ]

object.Row [= number ]

Col 和 Row 的语法包含以下部分：

部分 | 描述
object | 对象表达式，其值是“应用于”列表中的对象。
number | Long 类型值。它指定了活动单元的位置。

说明

可以用这些属性来指定 MSHFlexGrid 中的单元，或者找到包含当前单元的那个行或者列。行和列是从 0 开始计数的，对于行来说，以顶端为起始，而对于列来说，则以左边为起始。

对这些属性进行设置会自动对 RowSel 和 ColSel 进行重置，这样，所选定的就变成了当前单元。因此，为了指定一个块选定，必须首先对 Row 和 Col 进行设置，然后对 RowSel 和 ColSel 进行设置。

当前单元的值（由 Col 和 Row 的设置值所决定的），就是包含在那个单元中的文本。可以用 TextMatrix 属性在不改变已选定的 Row 和 Col 属性的情况下，对单元的值进行修改。


Col、Row 以及 Text 属性 (MSHFlexGrid) 示例

在该示例中，将 "Here" 放到当前单元中，然后将活动单元更改为第 3 行中的第 3 个单元，并将 "There" 放到那个单元中。可以单击 F5 键来运行该程序，然后单击网格。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form1_Load ()
   MSHFlexGrid1.Rows = 8
   MSHFlexGrid1.Cols = 5
End Sub

Private Sub MSHFlexGrid1_Click ()
   '将文本放到当前单元中。
   MSHFlexGrid1.Text = "Here"
    '   将文本放到第 3 行，第 3 列。
   MSHFlexGrid1.Col = 2
   MSHFlexGrid1.Row = 2
   MSHFlexGrid1.Text = "There"
End Sub


ColSel、RowSel 属性

  • ColSel — 为一定范围的单元格返回或设置的起始列和或终止列。

  • RowSel — 为一定范围的单元格返回或设置的起始行和或终止行。

这些属性在设计时不可用。

语法

object.ColSel [= value]
object.RowSel [= value]

ColSel 和 RowSel 语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个 Long值，为一定范围的单元格指定起始行或列，或者指定终止行或列。

说明

可以使用这些属性编程选择 MSHFlexGrid 的一个特定区域，或读出用户选择进入代码的区域的维数。

MSHFlexGrid 游标在 Row、Col 位置的单元格中。MSHFlexGrid 选择的是在行 Row 和 RowSel 之间以及列 Col 和 ColSel之间的区域。注意 RowSel 可能在 Row 的上面或下面，而 ColSel 可能在Col 的左边或右边。

无论什么时候设置 Row 和 Col 属性，RowSel 和 ColSel 都自动地重新设置，因此游标变为当前选择。要从代码中选择一块单元格，必须首先设置 Row 和 Col 属性，然后设置 RowSel 和 ColSel。


ColSel 属性示例

下面的代码把 ColSel 属性的 value 返回到 MSHFlexGrid1 的第一单元格中。这个值随着用户单击不同的单元组的选择而更改。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Private Sub MSHFlexGrid1_MouseUp _
(Button As Integer, Shift As Integer, x As Single, _
y As Single)
   MSHFlexGrid1.Text = MSHFlexGrid1.ColSel
End Sub


ColPos 属性

以缇为单位，返回控件的左上角和一个指定列的左上角之间的距离。

语法

object.ColPos(index)

ColPos 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个Long值，它指定列。


Cols、Rows 属性 (MSHFlexGrid)

  • Cols — 返回或设置在一个 MSHFlexGrid 中的总列数。

  • Rows —返回或设置在一个 MSHFlexGrid 中的总行数。Rows 属性也返回或设置在 MSHFlexGrid 中的每一个带区中的总列数。

    注意 MSFlexGrid 不包含带区。如果在 MSFlexGrid 中使用 Rows 属性编程，只能返回或设置总列数或总行数。也由于这一控件的限制，下面的 Rows 语法不能在 MSFlexGrid 中使用。如果正在使用 MSFlexGrid，采用如下语法：object.Rows [= value]。

语法

object.Cols [= value]
object.Rows(number) [= value]

Cols 和 Rows 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 一个 Long值，它指定获取或是设置总列数的带区。可选的。 注意 这不可应用于 MSFlexGrid。
value | 一个 Long值，它指定列数或行数。

说明

可以使用这些属性在运行时动态地扩充或收缩 MSHFlexGrid。

行和列的最小数是 0。最大数受计算机的可用内存限制。

Cols 的值必须至少比 FixedCols 的值大一，除非它们两者都被设置为 0。Rows 的值必须至少比 FixedRows 的值大一，除非它们两者都被设置为 0。

当 number 未被指定时，缺省为 0。因此，当 MSHFlexGrid 未被绑定到一个分层结构的记录集时，使用 0 或不指定 number 两者都会得到相同的结果。注意 number 是与 MSFlexGrid 向后兼容的一个可选的参数。


Cols、Rows 属性 (MSHFlexGrid) 示例

下面的示例把单词“Here”放进当前单元，更改活动单元为第三行的第三单元格，然后把“There”放进那个单元。要运行该示例，按 F5 键，然后单击 MSHFlexGrid。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Private Sub Form_Load ()
   MSHFlexGrid1.Rows = 8
   MSHFlexGrid1.Cols = 5
End Sub

Private Sub MsFlexGrid1_Click ()
   ' 把文本放在当前单元中。
   MSHFlexGrid1.Text = "Here"
    ' 把文本放在第三行，第三列。
   MSHFlexGrid1.Col = 2
   MSHFlexGrid1.Row = 2
   MSHFlexGrid1.Text = "There"
End Sub


ColWidth 属性 (MSHFlexGrid)

以缇为单位，返回或设置指定带区中的列宽。这一属性在设计时不可用。

注意 当使用 MSFlexGrid 时，这一属性以缇为单位返回或设置指定列的宽度。由于这一控件的限制，下面的 ColWidth 语法也不能在 MSFlexGrid 中使用。如果正在使用 MSFlexGrid，采用如下语法：object.ColWidth(number) [= value]

语法

object.ColWidth(index, number) [= value]

ColWidth 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个 Long值，它指定要更改哪一列的宽度。 注意 这是不可应用于 MSFlexGrid。
number | 一个 Long值，指定包含列的带区。可选的。 注意 在 MSFlexGrid 中，它是一个指定列的数值表达式。
value | 一个数值表达式，它以缇为单位指定特定列的宽度。

说明

可以使用这一属性在运行时设置任何列的宽度。对于在设计时设置列宽的指令，请参阅 FormatString 属性。

可以通过把 ColWidth 设置为 0 来创建不可见列，或设置为 –1 重新设置列宽为它的缺省值（它取决于当前字体的尺寸）。

当 number 没有指定时，它缺省为 0。因此，当 MSHFlexGrid 未被绑定到分层结构的记录集时，使用 0 和未指定 number 两者都会得到相同的结果。注意 number 是与 MSFlexGrid 向后兼容的一个可选的参数。


ColWidth 属性示例

下面的代码设置第一列尺寸的 value。如果 AllowUserResizing 属性为 True，该值按照用户调整 Column 1 的大小而更改。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Sub Form1_Load()
   MSHFlexGrid1.AllowUserResizing = True
End Sub

Sub MSHFlexGrid1_MouseUp (Button As Integer, Shift As _
Integer, X As Single, Y As Single)
   MSHFlexGrid1.Text = MSHFlexGrid1.ColWidth(0)
End Sub


DataField 属性 (MSHFlexGrid)

返回绑定到指定带区中指定列的字段名称。这一属性是只读的。

语法

object.DataField(number, index) [= string]

DataField 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 一个 Long值，它指定包含所影响的列的带区。
index | 一个 Long值，它或者是指定获取的列或者是设置绑定字段。
String | 一个字符串表达式，其值为由数据提供商指定的 Recordset 对象中的一个字段名称。

说明

当 number 未指定时，缺省值为 0。因此，当 MSHFlexGrid 未绑定到分层结构的记录集时，使用 0 和不指定 number 两者都会得到相同的结果。

如果 MSHFlexGrid 未绑定且 number 和 index 是有效的，DataField 返回一个空字符串。

如果在 DataProvider 属性被更改之后执行了一个 Refresh，Recordset 对象可能会有不同的字段。这可能使绑定列的 DataField 设置无效并产生一个可捕获错误。


FillStyle 属性 (MSHFlexGrid)

返回或设置一个值，它决定不管是设置 Text 属性还是一个单元的格式属性，都把更改应用到 MSHFlexGrid 里的所有选定单元。

语法

object.FillStyle [= value]

FillStyle 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，它指定填充样式。如设置值中所述。

设置值

对 value 的设置值如下所示：

常数 | 值 | 描述
flexFillSingle | 0 | 单个。更改 Text 或任何单元属性只影响到活动单元。这是缺省值。
flexFillRepeat | 1 | 重复。更改 Text 或任何单元属性影响到所有选定的单元。

说明

无论什么时候想将一个单元的更改应用到 MSHFlexGrid 里面所有单元，这一属性必须设置为 1 (重复)。


FillStyle 属性 (MSHFlexGrid) 示例

下面的代码允许不同地格式化各个单元。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Sub Form1_Load ()
   MSHFlexGrid1.FillStyle = 0
End Sub


ColAlignmentFixed 属性

返回或设置 MSHFlexGrid 的一列中固定单元格中的数据的对齐方式。

语法

object.ColAlignmentFixed(index) [=value]

ColAlignmentFixed 属性的语法包含以下几个部分：

部分 | 描述
object | 一个对象表达式，其值是“应用于”列表中的一个对象。
index | 一个 Long 数值，它指定了列。
value | 一个整数，它确定固定单元格中的数据的对齐方式，如“设置值”中所示。

设置值

value 的设置值包括：

常数 | 值 | 描述
flexAlignLeftTop | 0 | 单元格的内容左、顶部对齐。
flexAlignLeftCenter | 1 | 单元格的内容左、居中对齐。
flexAlignLeftBottom | 2 | 单元格的内容左、底部对齐。
flexAlignCenterTop | 3 | 单元格的内容居中、顶部对齐。
flexAlignCenterCenter | 4 | 单元格的内容居中、居中对齐。
flexAlignCenterBottom | 5 | 单元格的内容居中、底部对齐。
flexAlignRightTop | 6 | 单元格的内容右、顶部对齐。
flexAlignRightCenter | 7 | 单元格的内容右、居中对齐。
flexAlignRightBottom | 8 | 单元格的内容右、底部对齐。

说明

可以使用 FixedCols 和 FixedRows 属性来定义一列中的单元格。


FixedCols、FixedRows属性 (MSHFlexGrid)

  • FixedCols — 返回或设置在一个 MSHFlexGrid 里面的固定列的总数。

  • FixedRows — 返回或设置在一个 MSHFlexGrid 里面的固定行的总数。

按照缺省规定，MSHFlexGrid 有一个固定列和一个固定行。

语法

object.FixedCols [= value]
object.FixedRows [= value]

FixedCols 和 FixedRows 属性的语法包含如下内容：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个 Long值，它指定固定列或固定行的总数。

说明

当在 MSHFlexGrid 中滚动其它列或行时，固定的列和行是固定不变的。可以指定零个或多个固定的列行。另外，可以选择固定列和行的颜色、字体、网格线和文本样式。

如果 SelectionMode 属性是一个数值型值，当运行时选择一个固定列或固定行时，在那一行或列里面的所有单元被选定。

如果 AllowUserResizing 属性是一个数值型值，可以在运行时重新调整固定行或固定列的尺寸。

固定列和固定行在电子数据表应用程序中，用来显示行号以及列名或字母。


FocusRect 属性

返回或设置一个值，它决定 MSHFlexGrid 是否应该围绕着当前单元格绘制一个焦点矩形。

语法

object.FocusRect [= value]

FocusRect 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，它指定焦点矩形的样式。如设置值中所述。

设置值

对 value 的设置值如下所示：

常数 | 值 | 描述
flexFocusNone | 0 | 当前单元格周围无焦点矩形。
flexFocusLight | 1 | 当前单元格周围有一个浅色的焦点矩形。此为缺省值。
flexFocusHeavy | 2 | 当前单元格周围有一个加重的焦点矩形。

说明

如果绘制了一个焦点矩形，当前单元格涂成背景颜色，就象在多数电子数据表和网格中一样。否则，当前单元涂成选择的颜色，因此没有焦点矩形可以看到那一个单元被选定。


Font、FontBand、FontFixed、FontHeader 属性 (MSHFlexGrid)

  • Font — 返回或设置缺省的字体或个别单元格的字体。

  • FontBand — 返回或设置带区中文本的字体。

  • FontFixed — 返回或设置固定单元格中文本的字体。

  • FontHeader — 返回或设置标头文本的字体。

语法

object.Font
object.FontBand
object.FontFixed
object.FontHeader

object 所在处表示一个对象表达式，其值为“应用于”列表中的一个对象。


FontWidth、FontWidthBand、FontWidthFixed、FontWidthHeader 属性 (MSHFlexGrid)

以磅为单位，返回或设置用于显示在一个 MSHFlexGrid 里面的文本字体的宽度，或者是用于网格的带区、固定或标头区域字体的宽度。

语法

object.FontWidth [= value]
object.FontWidthBand [= value]
object.FontWidthFixed [= value]
object.FontWidthHeader [= value]

FontWidth、FontWidthBand、FontWidthFixed 和 FontWidthHeader 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 单精度。一个数值表达式，它为当前字体指定首选的磅宽。

说明

字体宽度通常由 Windows 选取来匹配选定的字体宽度，并且提供一个标准的外观比率。但是，MSHFlexGrid 使得您能够指定比缺省字体更窄或宽的字体。这就使您或者是显示更多信息或者是强调一个单元成为可能。

当指定一个字体宽度时，Windows 选择或生成一种字体来匹配您的需求。为了得到最好的结果，使用 TrueType 字体。

要恢复缺省的字体宽度，请把这一属性设置为 0。

要设置个别单元或单元范围的字体，请使用 CellFontBold、CellFontItalic、CellFontName、CellFontSize 和 CellFontWidth 属性。


ForeColor、ForeColorBand、ForeColorFixed、ForeColorHeader、ForeColorSel 属性

返回或设置用于在 MSHFlexGrid 的每一部分绘制文本的颜色。

语法

object.ForeColor [= color]
object.ForeColorBand [= color]
object.ForeColorFixed [= color]
object.ForeColorHeader [= color]
object.ForeColorSel [= color]

ForeColor、ForeColorBand、ForeColorFixed、ForeColorHeader 和 ForeColorSel 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
color | 一个值或常数，它决定用在 MSHFlexGrid 的可滚动的、固定的、带区或标头区域中涂绘文本的颜色。

说明

下面的图画显示了这一属性所引用 MSHFlexGrid 的部分：

使用 ForeColor 属性设置所有不固定单元格的文本颜色。

使用 CellForeColor 属性设置个别单元格的文本颜色。


ForeColor、ForeColorFixed、ForeColorSel 属性示例

下面的示例设置 MSHFlexGrid 的 ForeColorFixed 和 ForeColorSel 属性，来每秒钟更改为一种随机的颜色。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Private Sub Form_Load ()
   Timer1.Interval = 500
   MSHFlexGrid1.FillStyle = 2
   MSHFlexGrid1.Text = "Color Me"
   MSHFlexGrid1.FixedCols = 1
   MSHFlexGrid1.FixedRows = 1
End Sub

Private Sub Timer1_Timer ()
   MSHFlexGrid1.ForeColorFixed = QBColor(Rnd * 15)
   MSHFlexGrid1.ForeColorSel = QBColor(Rnd * 10)
End Sub


FormatString 属性

设置 MSHFlexGrid的列宽、对齐方式、固定行文本和固定列文本。

语法

object.FormatString [= string]

FormatString 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
string | 一个字符串表达式，为格式化在行和列中的文本。如在说明中所述。

说明

在设计时，MSHFlexGrid 语法分析和解释 FormatString 来获得如下信息：行和列的数目、行和列标头的文本、列宽和列对齐方式。

FormatString 属性包含由管道字符 (|) 分隔的段。管道字符之间的文本定义一列并且也可能包含特定的对齐字符。这些字符使整个列左对齐(<)、居中(^)或右对齐(>)。另外，根据缺省规定文本被指定给行 0，且文本宽度定义每一列的宽度。

FormatString 属性可能包含一个分号 (;)。这使得字符串的余下部分被解释为行标头和行宽度信息。另外，根据缺省规定文本被指定给列 0，且最长的字符串定义列 0 的宽度。

MSHFlexGrid 创建附加的行和列来驻留由 FormatString 定义的所有字段。如果只有几个字段被指定，附加的行和列不被删除。要删除附加的行和列，设置 Rows 和 Cols 属性。


FormatString 属性示例

下面的示例举例说明 FormatString 属性如何工作。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

' 设置列标头。
s$ = "<Region |<Product |<Employee |>Sales "
MSHFlexGrid1.FormatString = s$

' 设置行标头（注意开始的分号）。
s$ = ";Name|Address|Telephone|Social Security#"
MSHFlexGrid1.FormatString = s$

' 设置列和行标头。
s$ = "|Name|Address|Telephone|Social Security#"
s$ = s$ + ";|Robert|Jimmy|Bonzo|John Paul"
MSHFlexGrid.FormatString = s$


GridColor、GridColorBand、GridColorFixed、GridColorHeader、GridColorIndent、GridColorUnpopulated 属性

返回或设置用在 MSHFlexGrid 的单元格、带区、标头、缩进或未填充区域之间的线的颜色。

注意 如果正在使用 MSFlexGrid，只有 GridColor 和 GridColorFixed 属性是可用的。

语法

object.GridColor [= color]
object.GridColorBand [= color]
object.GridColorFixed [= color]
object.GridColorHeader [= color]
object.GridColorIndent [= color]
object.GridColorUnpopulated [= color]

GridColor、GridColorBand、GridColorFixed、GridColorHeader、GridColorIndent 和 GridColorUnpopulated属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Color | 一个值或常数，决定用于涂绘 MSFlexGrid 滚动或固定区域中网格线的颜色。

说明

GridColor 属性只有在 GridLines 属性被设置为 1 （线）时才能使用。

GridColorFixed 属性只有在 GridLinesFixed 被设置为 1 （线）时才能使用。

凸起和凹入的网格线总是按黑和白颜色绘制。


GridLines、GridLinesBand、GridLinesFixed、GridLinesHeader、GridLinesIndent、GridLinesUnpopulated 属性 (MSHFlexGrid)

返回或设置一个值，它决定是否在单元格、带区、标头、缩进或未填充区域之间绘制线。这些属性也决定在 MSHFlexGrid 中绘制线的类型。

注意 如果正在使用 MSFlexGrid，只有 GridLines 和 GridLinesFixed 属性是可用的。

语法

object.GridLines [= value]
object.GridLinesBand [= value]
object.GridLinesFixed [= value]
object.GridLinesHeader [= value]
object.GridLinesIndent [= value]
object.GridLinesUnpopulated [= value]

GridLines、GridLinesBand、GridLinesFixed、GridLinesHeader、GridLinesIndent 和 GridLinesUnpopulated 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，它指定绘制的线的类型，如设置值中所描。

设置值

对 value 的设置值如下所示：

常数 | 值 | 描述
flexGridNone | 0 | 在单元之间没有线。在 MSFlexGrid中这是 GridLines 缺省值。
flexGridFlat | 1 | 单元之间的线样式被设置为正常的、平面的线。在 MSHFlexGrid 中这是 GridLines 缺省值。
flexGridInset | 2 | 单元格之间的线样式被设置为凹入线。在 MSFlexGrid中这是 GridLinesFixed 的缺省值。
flexGridRaised | 3 | 单元格之间的线样式被设置为凸起线。在 MSHFlexGrid 中这是 GridLinesFixed 的缺省值。

说明

当 GridLines 属性设置为 1（线）时，线的颜色由 GridColor 属性决定。

凸起和凹入的网格线总是黑色和白色。


GridLineWidth、GridLineWidthBand、GridLineWidthFixed、GridLineWidthHeader、GridLineWidthIndent、GridLineWidthUnpopulated 属性 (MSHFlexGrid)

以像素为单位，返回或设置显示在单元格、带区、标头、缩进或未填充区域之间的线的宽度。

注意 对于 MSFlexGrid 控件只有 GridLineWidth 属性是可用的。

语法

object.GridLineWidth [= value]
object.GridLineWidthBand [= value]
object.GridLineWidthFixed [= value]
object.GridLineWidthHeader [= value]
object.GridLineWidthIndent [= value]
object.GridLineWidthUnpopulated [= value]

GridLineWidth、GridLineWidthBand、GridLineWidthFixed、GridLineWidthHeader、GridLineWidthIndent 和 GridLineWidthUnpopulated 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个数值表达式，它以像素为单位为当前线指定首选宽度。


HighLight 属性 (MSHFlexGrid)

决定选定的单元格是否在 MSHFlexGrid 中突出显示。

语法

object.HighLight [= value]

HighLight 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，它指定什么时候 MSHFlexGrid 应该突出显示选定的单元格。如设置值中所述。

设置值

对 value 的设置值如下所示：

常数 | 值 | 描述
FlexHighlightNever | 0 | 选定的单元格上没有突出显示。
FlexHighlightAlways | 1 | 选定的单元格总是突出显示。（缺省设置值）
FlexHighlightWithFocus | 2 | 突出显示只在控件有焦点时有效。

说明

当这一属性被设置为 0 并且一些单元被选定，没有可视的暗示或强调来指示选定的单元格。


LeftCol 属性 (MSHFlexGrid)

返回或设置 MSHFlexGrid 中最左边可见的不固定列。这一属性在设计时不可用。

语法

object.LeftCol [= value]

LeftCol 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数，它指定最左边的列。

说明

这一属性可以在编程时使用，实现在 MSHFlexGrid 中的滚动。使用 TopRow 属性来决定 MSHFlexGrid 的最顶端可视行。


MergeCells 属性

返回或设置一个值，决定包含相同内容的单元是否应该跨越多行或多列分组在一个单个单元中。

语法

object.MergeCells [=value]

MergeCells 属性的语法包含如下部分内容：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，指定单元分组（合并）。如设置值中所指定。

设置值

value 的设置值如下所示：

常数 | 值 | 描述
flexMergeNever | 0 | 不显示。包含相同内容的单元不分组。这是缺省设置。
flexMergeFree | 1 | 自由。包含相同内容的单元总是合并。
flexMergeRestrictRows | 2 | 限制行。只有行中包含相同内容的相邻单元（向当前单元左边）才合并。
flexMergeRestrictColumns | 3 | 限制列。只有列中包含相同内容的相邻单元（向当前单元上方）才合并。
flexMergeRestrictBoth | 4 | 限制行和列。只有在行中（向左）或在列中（向上）包含相同内容的单元才合并。

说明

合并单元的能力使得您能够以一种清晰、简明的方式显示数据。可以连同排序和 MSHFlexGrid 的列序函数一起合并使用单元。

要使用 MSHFlexGrid 的单元合并能力：

  • 把 MergeCells 设置为除 0 以外的一个值。（设置值之间的区别在示例中解释。）

  • 为要合并行和列把 MergeRow 和 MergeCol 的数组属性设置为 True。

当使用单元合并能力时，MSHFlexGrid 合并包含相同内容的单元。无论什么时候单元的内容更改，合并都自动的更新。

当 MergeCells 被设置为除 0 （不显示）以外的一个值时，突出显示的选择自动关闭。这样做是为加速重画，也是因为包含合并单元范围的选择可能导致不可预料的结果。


MergeCells 属性示例

下面的示例显示基本的 MergeCells 属性。

不合并
MergeCells =0
MergeRow(0) =True
MergeRow(1) =True
MergeRow(2) =True
MergeRow(3) =False

这是标准视图。
自由合并
MergeCells =1
MergeRow(0) =True
MergeRow(1) =True
MergeRow(2) =True
MergeRow(3) =False

注意第三个 employee 单元 (Donna) 如何合并它左边的 products 和它右边的 sales。
限制合并
MergeCells =2
MergeRow(0) =True
MergeRow(1) =True
MergeRow(2) =True
MergeRow(3) =False

注意第三个 employee 单元 (Donna) 不再合并 sales。


MergeCol、MergeRow 属性

返回或设置一个值，决定哪些行和列可以把它们的内容合并。要使用 MergeCells 属性，这些属性必须为 True。

语法

object.MergeCol(number) [=Boolean]
object.MergeRow(number) [=Boolean]

MergeCol 和 MergeRows 属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 一个 Long值，指定 MSHFlexGrid 中的列或行。
Boolean | 一个 Boolean值，指定当相邻单元显示相同内容时合并是否发生。

设置值

Boolean 的设置值如下所示：

部分 | 描述
True | 当相邻单元显示相同内容时，行向左合并或列向上合并。
False | 当相邻单元显示相同内容时，单元不合并。这是 MergeCol 和 MergeRow 缺省设置值。

说明

如果 MergeCells 属性被设置为非零值，具有相同值的相邻单元，只有它们都在一行并且 MergeRow 属性被设置为 True，或都在一列且 MergeCol 属性被设置为 True 时才合并。

关于 MSHFlexGrid 的合并功能的详细信息，请参阅 MergeCells 属性。


MouseCol、MouseRow 属性

按行和列坐标返回鼠标的当前位置。

语法

object.MouseCol [=value]
object.MouseRow [=value]

MouseCol 和 MouseRow 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 指定当前鼠标位置的行和列坐标。

说明

使用这些属性编程来决定鼠标的位置。在对单独单元显示与上下文相关的帮助以及测试用户是否已经单击一个固定行或列时，这些属性是有用的。


Name 属性 (MSHFlexGrid)

返回或设置合计字段或用来分组的字段的名称。

注意 这一属性不能应用于 MSFlexGrid。

语法

object.Name [=string]

Name 属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
String | 一个字符串表达式，包含合计字段或用来分组的字段的名称。对于 GroupingField 对象，缺省值是当前 Command 对象中的第一个字段的名称。对于合计，缺省值是 Aggregate 加上一个唯一表示该字段的数字。

说明

这一属性不能有与将创建合计的字段相同的名称。对于带分组的 AggregateOn，这是当前 Command 对象中任意字段的名称。对于带有关系的 AggregateOn，这是父 Command 对象中任意字段的名称。

GroupingField 对象的名称必须是存在当前 Command 对象中的一个字段名。

ADO Name 属性用于生成 SHAPE 命令。


Picture 属性 (MSHFlexGrid)

返回 MSHFlexGrid 的一幅图片。这一图片适合打印、保存到磁盘、复制到剪贴板或给一个不同控件赋值。

语法

object.Picture [=picture]

Picture 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
picture | 一个位图，显示 MSHFlexGrid。

说明

位图图片是 Project Form 窗口上整个 MSHFlexGrid 的一个快照。因此，它可能是非常大的。有两种方法来减小位图图片的尺寸。一个选项是创建您的 MSHFlexGrid 的一节的图片。要完成这些，写一个例程隐藏所有不想显示的元素、获取图片，然后恢复 MSHFlexGrid。

另一种选择，可以设置 PictureType 属性为 1（单色）。但是，这不仅仅减少内存占用数量，同时也减低了图片的分辨率。


ColData、RowData、Picture 属性示例

下列代码显示了您如何使用 PictureType 属性捕获内存外错误并自动切换到单色模式。此外，还显示了如何在 MSHFlexGrid 内部创建一个图片，该图片仅包含当前选择。

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Sub CopySelectedPictureToClipboard (myFlex As _
MSHFlexGrid)
   Dim i As Integer, tr As Long, lc As Long, _
   hl As Integer
   ' 准备操作。
   MyFlex.Redraw =False   ' 消除抖动。
   hl =MyFlex.HighLight   ' 保存当前设置。
   tr =MyFlex.TopRow
   lc =MyFlex.LeftCol
   MyFlex.HighLight =0   ' 在图片上没有突出显示。
   ' 隐藏未选择行和列。
   ' (在 RowData/ColData
   ' 属性中保存原始大小。)
   For i =MyFlex.FixedRows To MyFlex.Rows - 1
      If i < MyFlex.Row Or i > MyFlex.RowSel Then
         MyFlex.RowData(i) =MyFlex.RowHeight(i)
         MyFlex.RowHeight(i) =0
      End If
   Next
   For i =MyFlex.FixedCols To MyFlex.Cols - 1
      If i < MyFlex.Col Or i > MyFlex.ColSel Then
         MyFlex.ColData(i) =MyFlex.ColWidth(i)
         MyFlex.ColWidth(i) =0
      End If
   Next
   ' 滚动到左上角。
   MyFlex.TopRow =MyFlex.FixedRows
   MyFlex.LeftCol =MyFlex.FixedCols
   ' 复制图片。
   clipboard.Clear
   On Error Resume Next
   MyFlex.PictureType =0 ' 彩色。
   clipboard.SetData MyFlex.Picture
   If Error <> 0 Then
      MyFlex.PictureType =1 ' 单色。
      clipboard.SetData MyFlex.Picture
   Endif
   ' 恢复控件。
   For i =MyFlex.FixedRows To MyFlex.Rows - 1
      If i < MyFlex.Row Or i > MyFlex.RowSel Then
         MyFlex.RowHeight(i) =MyFlex.RowData(i)
      End If
   Next
   For i =MyFlex.FixedCols To MyFlex.Cols - 1
      If i < MyFlex.Col Or i > MyFlex.ColSel Then
         MyFlex.ColWidth(i) =MyFlex.ColData(i)
      End If
   Next
   MyFlex.TopRow =tr
   MyFlex.LeftCol =lc
   MyFlex.HighLight =hl
   MyFlex.Redraw =True
End Sub

下列示例显示了如何将 MSHFlexGrid的 Picture 属性设置为一个 PictureBox 控件：

注意 如果您使用 MSFlexGrid，请用“MSFlexGrid1”替换“MSHFlexGrid1”。

Private Sub Form_Click ()
   Set Picture1.Picture =MSHFlexGrid1.Picture
End Sub


PictureType 属性

返回或设置由 Picture 属性生成的图片的类型。

语法

object.PictureType [=type]

PictureType 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
type | 一个整数或常数，指定应该被生成的图片的类型。如设置值中所述。

设置值

type 的设置值如下所示：

常数 | 值 | 描述
flexPictureColor | 0 | 产生一个高品质的全色的图象。
flexPictureMonochrome | 1 | 产生一个较低品质、单色的占用少量内存的图象


Redraw 属性

返回或设置一个值，决定 MSHFlexGrid 是否应该在每次更改后自动地重绘。

语法

object.Redraw [=Boolean]

Redraw 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式，指定 MSHFlexGrid 是否应该在每次更改后自动地重绘。

设置值

对 Boolean 的设置如下所示：

部分 | 描述
True | MSHFlexGrid 在每次更改后自动地重绘。这是缺省设置。
False | MSHFlexGrid 在每次更改后不重绘。

说明

可以在代码中使用这一属性，来减少当 MSHFlexGrid 的内容进行广泛更新时的闪烁。


Redraw 属性示例

下面的代码关闭重绘，对 MSHFlexGrid 的内容作了几次更改，然后打开重绘来显示结果。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Dim i As Integer
' 冻结 MSHFlexGrid 避免闪烁。
MSHFlexGrid.Redraw =False
' 更新 MSHFlexGrid 内容
For i =MSHFlexGrid1.FixedRows To MSHFlexGrid1.Rows - 1
MSHFlexGrid1.TextMatrix(i, 1) =GetName(i, 1)
MSHFlexGrid1.TextMatrix(i, 2) =GetName(i, 2)
Next
' 显示结果
MSHFlexGrid1.Redraw =True


RowExpandable、RowExpanded 属性 (MSHFlexGrid)

指定当前的行是否被扩充或被折叠。当前行由 Col 和 Row 列属性定义。

RowExpandable 属性在设计时不可用。

语法

object.RowExpandable [=Boolean]
object.RowExpanded [=Boolean]

RowExpandable 和 Row Expanded 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式，指定当前行是否可扩充或当前已经被扩充。

设置值

Boolean 的设置值如下所示：

部分 | 描述
True | 当前行可扩充。
False | 当前行被折叠且不可扩充。


RowHeightMin 属性

以缇为单位，为整个控件返回或设置最小行高。

语法

object.RowHeightMin [=value]

RowHeightMin 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个单精度数值表达式，为 MSHFlexGrid 指定最小行高。

说明

如果正在使用小字体却想要行变高，使用这一属性。设置这一属性比使用 RowHeight 属性设置个别的行高容易。

RowHeight 属性独立于窗体的缩放模式。


RowHeight 属性 (MSHFlexGrid)

以缇为单位，返回或设置指定行的高度。这一属性在设计时不可用。

语法

object.RowHeight(number) [=value]

RowHeight 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 一个整数，设置 MSHFlexGrid 中的行号，或为 -1 来立即设置所有行。
value | 一个单精度数值表达式，以缇为单位指定行的高度。

说明

可以设置 RowHeight 为 0 创建不可见的行，或为 –1 来重新设置行的高度为它的缺省值。缺省的行的高度根据当前字体尺寸改变。

RowHeight 属性独立于窗体的缩放模式。


RowIsVisible 属性

返回或设置一个值，决定一个指定行是否可见。

语法

object.RowIsVisible(index) [=Boolean]

RowIsVisible 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个 Long值，指定列。
Boolean | 一个布尔表达式，决定一个指定行当前是否可见。

设置值

对 Boolean 的设置如下所示：

设置值 | 描述
True | 指定行当前可见。这是缺省的设置值。
False | 指定行当前不可见。


RowPos 属性

以缇为单位，返回 MSHFlexGrid 左上角和指定行的左上角之间的距离。

语法

object.RowPos(index)

RowPos 属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
index | 一个 Long值，指定列。


RowSizingMode 属性 (MSHFlexGrid)

返回或设置一个值，描述 MSHFlexGrid 中行的大小调整方式。

语法

object.RowSizingMode [=value]

RowSizing 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，指定行尺寸的设置值。如设置值中所述。

设置值

value 的设置值如下所示：

常数 | 值 | 描述
FlexRowSizeIndividual | 0 | 调整行的尺寸只更改那一行的高度。这是缺省的设置值。
FlexRowSizeAll | 1 | 调整行的尺寸更改 MSHFlexGrid 中所有行的高度。

说明

这一属性只在 AllowUserResize 被设置为 Rows 或 Both 时才使用。


ScrollBars 属性 (MSHFlexGrid)

返回或设置一个值，决定 MSHFlexGrid 是否有水平和/或数值的滚动条。

语法

object.ScrollBars [=value]

ScrollBars 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，指定滚动条的类型。如设置值中所述。

设置值

value 的设置值如下所示：

常数 | 值 | 描述
flexScrollNone | 0 | MSHFlexGrid 没有滚动条。
flexScrollHorizontal | 1 | MSHFlexGrid 有一个水平滚动条。
flexScrollVertical | 2 | MSHFlexGrid 有一个竖直滚动条。
flexScrollBoth | 3 | MSHFlexGrid 有水平和竖直滚动条。（缺省值）

说明

滚动条只在 MSHFlexGrid 的内容伸展到它的边框外边并且 value 指定滚动条时，才显示在其上。如果 ScrollBars 属性被设置为 None，MSHFlexGrid 就没有滚动条（不管它的内容）。

注意 如果MSHFlexGrid 在两个方向上都没有滚动条，它就不允许在任一方向上的任何滚动，尽管用户使用键盘选择一个在控件的可视区域外面的一个单元。


ScrollTrack 属性

返回或设置一个值，决定在用户沿着滚动条移动滚动框时， MSHFlexGrid 是否应该滚动它的内容。

语法

object.ScrollTrack [=Boolean]

ScrollTrack 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式，指定当用户沿着滚动条移动滚动框时，MSHFlexGrid 是否应该滚动它的内容。

设置值

Boolean 的设置值如下所示：

部分 | 描述
True | 当用户沿着滚动条移动滚动框时，MSHFlexGrid滚动它的内容。
False | MSHFlexGrid 内容只在滚动框释放时一次性更改。这是缺省设置值。

说明

设置这一属性为 False 以避免过度的滚动和闪烁。只要把它设置为 True 来仿真其他有这一行为的控件，或查看滚动时的行和列。


SelectionMode 属性

返回或设置一个值，决定一个 MSHFlexGrid 是否应该允许正常的单元选择、按行选择或按列选择。

语法

object.SelectionMode [=value]

SelectionMode 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
value | 一个整数或常数，指定选择方式。如设置值中所述。

设置值

value 的设置值如下所示：

常数 | 值 | 描述
FlexSelectionFree | 0 | 自由。允许选择 MSHFlexGrid 中的个别单元，电子数据表风格。这是缺省设置值。
FlexSelectionByRow | 1 | 按行。强制跨越整个行选择，如在一个多列列表框或基于记录的显示。
FlexSelectionByColumn | 2 | 按列。强制跨越整个列选择，如同为图表选择范围或者是为排序选择字段。


Sort 属性 (MSHFlexGrid)

设置一个值，根据选定的条件排序选择的行。这一属性在设计时不可用。

语法

object.Sort [=value]

Sort 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Value | 一个整数或常数，指定排序类型。如设置值中所述。

设置值

value 的设置值如下所示：

常数 | 值 | 描述
flexSortNone | 0 | 无。不执行排序。
flexSortGenericAscending | 1 | 一般升序。执行估计文本不管是字符串或者是数字的升序排序。
flexSortGenericDescending | 2 | 一般降序。执行估计文本不管是字符串或者是数字的降序排序。
flexSortNumericAscending | 3 | 数值升序。执行将字符串转换为数值的升序排序。
flexSortNumericDescending | 4 | 数值降序。执行将字符串转换为数值的降序排序。
flexSortStringNoCaseAsending | 5 | 字符串升序。执行不区分字符串大小写比较的升序排序。
flexSortNoCaseDescending | 6 | 字符串降序。执行不区分字符串大小写比较的降序排序。
flexSortStringAscending | 7 | 字符串升序。执行区分字符串大小写比较的升序排序。
flexSortStringDescending | 8 | 字符串降序。执行区分字符串大小写比较的降序排序。
flexSortCustom | 9 | 自定义。使用 Compare 事件比较行。

说明

Sort 属性总是排序整个行。要指定排序的范围，设置 Row 和 RowSel 属性。如果 Row 和 RowSel 相同，MSHFlexGrid 将排序所有不固定行。

用于排序的关键字由 Col 和 ColSel 属性决定。排序总是在一个从左到右的方向上完成。例如，如果 Col =3 且 ColSel =1，排序根据列 1 的内容，然后是列 2 、列 3 的内容来进行。

用于行比较的方法由 value 决定，如设置值中的解释。设置值 9 （自定义）最灵活，但比其它设置慢，典型地大约是 10 分之一，使用这一设置的另一种可能是创建一个不可见列，用关键字填充，然后使用另一设置执行一个基于自定义的排序。这对基于日期的排序是一个好方法。


Sort、TextMatrix 属性 (MSHFlexGrid) 示例

下面的示例使用 Sort 和 TextMatrix 属性。它根据一个 ComboBox 控件的值执行一个 MSHFlexGrid 排序。要使用该示例，在窗体中放置一个 MSHFlexGrid 控件和一个 ComboBox 控件。把下面的代码粘贴到 Declarations 节，然后按 F5 键。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

Private Sub Combo1_Click()
' 根据排序方法选择列。
Select Case Combo1.ListIndex
Case 0 To 2
MSHFlexGrid1.Col =1
Case 3 To 4
MSHFlexGrid1.Col =2
Case 4 To 8
MSHFlexGrid1.Col =1
End Select
' 根据 Combo1.ListIndex 排序。
MSHFlexGrid1.Sort =Combo1.ListIndex
End Sub
Private Sub Form_Load()
Dim i As Integer
' 用随机数据填充 MSHFlexGrid。
MSHFlexGrid1.Cols =3 ' 创建三列。

For i =1 To 11 ' 添加十项。
MSHFlexGrid1.AddItem ""
MSHFlexGrid1.Col =2
MSHFlexGrid1.TextMatrix(i, 1) =SomeName(i)
MSHFlexGrid1.TextMatrix(i, 2) =Rnd()
Next i
' 用排序选择填充 combo 框。
With Combo1
.AddItem "flexSortNone" ' 0
.AddItem "flexSortGenericAscending" '1
.AddItem "flexSortGenericDescending" '2
.AddItem "flexSortNumericAscending" '3
.AddItem "flexSortNumericDescending" '4
.AddItem "flexSortStringNoCaseAsending" '5
.AddItem "flexSortNoCaseDescending" '6
.AddItem "flexSortStringAscending" '7
.AddItem "flexSortStringDescending" '8
.ListIndex =0
End With
End Sub
Private Function SomeName(i As Integer) As String
Select Case i
Case 1
SomeName ="Ann"
Case 2
SomeName ="Glenn"
Case 3
SomeName ="Sid"
Case 4
SomeName ="Anton"
Case 5
SomeName ="Hoagie"
Case 6
SomeName ="Traut 'Trane"
Case 7
SomeName ="MereD Wah"
Case 8
SomeName ="Kemp"
Case 9
SomeName ="Sandy"
Case 10
SomeName ="Lien"
Case 11
SomeName ="Randy"
End Select
End Function


TextArray 属性

返回或设置一个任意单元的文本内容。

语法

object.TextArray(cellindex) [=string]

TextArray 属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Cellindex | 整数。一个数值表达式，指定要读或写哪一个单元。请参阅说明。
string | 一个字符串表达式，包含一个任意的单元的内容。

说明

这一属性允许不更改 Row 和 Col 属性来设置或获取一个单元的内容。

cellindex 参数决定要用哪一个单元。它是由首选行乘 Cols 属性并加上首选列计算的。计算 cellindex 的最清晰和最方便的方法是定义一个函数来完成。如示例中显示。


TextArray 属性示例

下面的示例显示如何通过定义一个函数计算 cellindex。

注意 如果正在使用 MSFlexGrid，用“MSFlexGrid1”代替“MSHFlexGrid1”。

' 为使用TextArray 属性计算索引。
Function faIndex(row As Integer, col As Integer) As Long
faIndex =row * MSHFlexGrid1.Cols + col
End Function
Sub Form_Load()
Dim i as Integer
' 用使用 TextArray 属性的数据填充 MSHFlexGrid。
For i =MSHFlexGrid1.FixedRows to MSFlexGrid1.Rows - 1
' ** 列 1
MSHFlexGrid1.TextArray(faIndex(i, 1)) =RandomName()
' 列 2.
MSHFlexGrid1.TextArray(faIndex(i, 2)) =RandomNumber()
Next


Text 属性 (MSHFlexGrid)

返回或设置一个单元或一定范围单元的文本内容。

语法

object.Text [=string]

Text 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
string | 一个字符串表达式，一个单元或单元范围包含的文本。

说明

在获取时，Text 属性总是获取由 Row 和 Col 属性定义的当前单元的内容。

在设置时，Text 属性设置当前单元或者是依据 FillStyle 属性设置选择的内容。


TextMatrix 属性

返回或设置一个任意单元的文本内容。

语法

object.TextMatrix(rowindex, colindex) [=string]

TextMatrix 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
rowindex, colindex | 整数。一个数值表达式，指定要读或写哪一个单元。
String | 一个字符串表达式，包含一个任意的单元的内容。

说明

这一属性允许不更改 Row 和 Col 属性来设置或获取一个单元的内容。


TextStyle、TextStyleBand、TextStyleFixed、TextStyleHeader 属性 (MSHFlexGrid)

为在一个特定单元或单元范围中的文本返回或设置三维风格。

  • TextStyle — 决定常规的 MSHFlexGrid 单元的风格。

  • TextStyleBand — 决定带区的风格。

  • TextStyleFixed — 决定固定行和列的风格。

  • TextStyleHeader — 决定标头的风格。

语法

object.TextStyle [=style]
object.TextStyleBand [=style]
object.TextStyleFixed [=style]
object.TextStyleHeader [=style]

TextStyle、TextStyleBand、TextStyleFixed 和 TextStyleHeader 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
style | 一个整数或常数，指定文本风格。如设置值中所述。

设置值

style 的设置值如下所示：

常数 | 值 | 描述
flexTextFlat | 0 | 文本正常显示，平面文本。这是缺省设置值。
flexTextRaised | 1 | 文本看起来凸起。
flexTextInset | 2 | 文本看起来凹入。
flexTextRaisedLight | 3 | 文本看起来轻微凸起。
flexTextInsetLight | 4 | 文本看起来轻微凹入。

说明

设置值 1 和 2 对于大号和粗体字体最好。设置值 3 和 4 对于小号和正常体字体最好。


TopRow 属性 (MSHFlexGrid)

返回或设置 MSHFlexGrid 中最上面的可视行（不是固定行）。这一属性在设计时不可用。

语法

object.TopRow [=number]

TopRow 属性的语法包含如下部分：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
number | 一个 Long值，指定 MSHFlexGrid 中最上面的行。

说明

可以使用这一属性编程来读或设置 MSHFlexGrid 的可视的顶行。使用 LeftCol 属性决定 MSHFlexGrid 中最左边的可视列。

当设置 TopRow 时可以使用的最大行号是总行数减去在 MSHFlexGrid 中可视的行数。如果这一属性被设置为一个更大行号，MSHFlexGrid 将重新把它设置为这个可能的最大值。


Version 属性 (MSHFlexGrid)

返回当前加载到内存中的 MSHFlexGrid 的版本。

语法

object.Version [=integer]

Version 属性的语法包含如下部分：

部分 | 描述
Object | 一个对象表达式，其值为“应用于”列表中的一个对象。
integer | 一个整数，表示 MSHFlexGrid 的版本号

说明

版本号是一个三位数。第一位表示主版本号，后两位表示次版本号。例如，版本 3.5返回一个整数 350。


WordWrap 属性 (MSHFlexGrid)

返回或设置一个值，决定一个单元显示多行文本还是一长行文本。

注意 返回如 Chr(13) 的字符，也强制分行。

语法

object.WordWrap [=Boolean]

WordWrap 属性的语法包含如下部分内容：

部分 | 描述
object | 一个对象表达式，其值为“应用于”列表中的一个对象。
Boolean | 一个布尔表达式，指定一个单元中的文本是否换行。

设置值

Boolean 的设置值如下所示：

部分 | 描述
True | 单元文本显示为多行自动换行的文本。
False | 单元文本显示为一长行文本。这是缺省设置值。

说明

当 WordWrap 被设置为 False 时 MSHFlexGrid 显示文本稍微快一些。