在工程—部件—控件中选择MicrosoftFlexGrid Control version 6.0 可以添加MSFlexGrid控件。
它作用是显示和操作表格数据,对包含字符串和图片的表格提供灵活的排序、插入数据和格式编排功能,当与Data控件绑定时,就只显示只读数据。可在其中任何单元放置文本、图片或两者,Row属性确定其列数,Col确定其行数。要在单元中显示多行文本,需增大宽度(ColWidth属性)或行高度(ColHeight)
下面是有关它的个别具体代码操作:
1.在MSFlexGrid中取某一单元格数据:
Private Sub MSFlexGrid1_Click()
MsgBoxMSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col), vbOKOnly,"提示消息"
End Sub
2.在单元格中插入背景图片:
Set MSFlexGrid.CellPicture=LoadPicture("图片物理位置")
3.在单元格中插入文本:
MSFlexGrid.textMatrix(Col,Row)="文本"
4添加新的一行:(AddItem方法)
Dim row asstring
row="AAA" & btab &"bbb"
MSFlexGrid1.addItem row
5.怎么实现MSFlexGrid控件单行背景为白色,双行为蓝色(或其他颜色):
Dim I asInteger
With MSFlexGrid1
.AllowBigSelection=True '设置网格样式
.FillStyle=flexFillRepeat
For i=0 To.Rows-1
.Row = i: .Col = .FixedCols
.ColSel = .Cols() - .FixedCols - 1
If i Mod 2 = 0 Then
.CellBackColor = &HC0C0C0 ’浅灰
Else
.CellBackColor = vbBlue ’兰色
End If
Next i
End With
6.MSFlexGrid控件如何移到最后一行
MSFlexGrid1.TopRow = MSFlexGrid1.Rows –1
7.如何判断msflexgrid有无滚动条
Declare Function GetScrollRange Lib "user32" (ByVal hWnd As Long, ByVal nBar As Long, lpMinPos As Long, lpMaxPos As Long) As Long
Public Const SB_HORZ = &H0
Public Const SB_VERT = &H1
Public Function VsScroll(MshGrid As MSHFlexGrid) As Boolean ’判断水平滚动条的可见性
Dim i As Long
VsScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_HORZ, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then VsScroll = True
End Function
Public Function HeScroll(MshGrid As MSHFlexGrid) As Boolean ’判断垂直滚动条的可见性
Dim i As Long
HeScroll = False
i = GetScrollRange(MshGrid.hWnd, SB_VERT, lpMinPos, lpMaxPos)
If lpMaxPos <> lpMinPos Then HeScroll = True
End Function
8.程序运行时,想动态增加MSFlexgrid的列数
例:在第2列后插入一列
Private Sub Form_Load()
Me.MSHFlexGrid1.Cols = 5
MSHFlexGrid1.Rows = 2
For i = 0 To Me.MSHFlexGrid1.Cols - 1
Me.MSHFlexGrid1.TextMatrix(0, i) = i
Me.MSHFlexGrid1.TextMatrix(1, i) = i
Next
End Sub
Private Sub Command1_Click()
Me.MSHFlexGrid1.Cols = Me.MSHFlexGrid1.Cols + 1
Me.MSHFlexGrid1.ColPosition(5) = 3
End Sub
9.请教MSFlexGrid中的对齐功能的使用
设置MSFlexGrid1.ColAlignment(index)=n
10.得到MSFlexGrid控件中当前选中的一行
msflexgrid1.row sel就是当前选中行
11.如何通过代码调节列宽度
msflexgrid1.colwidth(i)=4000
方法:
OLEDrag方法(ActiveX控件),Refresh方法(ActiveX控件),RemoveItem方法(MSHFlexGrid),AddItem方法(MSHFlexGrid),Clear方法(MSHFlexGrid),SelFocus方法,Drag方法,Move方法,ZOrder方法,ShowWhatsThis方法。
MSFlexGrid特有事件
※注1:MSFlexGrid控件的特有事件全部是不带参数的,要注意与DataGrid控件的同名事件区分
※注2:执行顺序:LeaveCell → SelChange → EnterCell → RowColChange
◇ SelChange事件 (DISPID = 69)
Private Sub object_SelChange()
void OnSelChange(void);
◇ RowColChange事件 (DISPID = 70)
Private Sub object_RowColChange()
void OnRowColChange(void);
◇ EnterCell事件 (DISPID = 71)
Private Sub object_EnterCell()
void OnEnterCell(void);
◇ LeaveCell事件 (DISPID = 72)
Private Sub object_LeaveCell()
void OnLeaveCell(void);
◇ Scroll事件 (DISPID = 73)
Private Sub object_Scroll()
void OnScroll(void);
◇ Compare事件
Private Sub object_Compare(row1, row2, cmp)
void OnCompare(long nRow1, long nRow2, CMP_FUNCpFunc)
AddModeSettings 属性
常数 |
值 |
描述 |
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 属性
常数 |
值 |
描述 |
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 属性
常数 |
值 |
描述 |
flexColHeaderOn |
0 |
为每一个带区显示标头。 |
flexColHeaderOff |
1 |
没有为带区显示标头。 |
flexColHeaderOnce |
2 |
为带区显示标头。如果带区被折叠,只显示一个标头。重复的标头不显示。 |
DisplayBandSettings属性
常数 |
值 |
描述 |
flexBandDisplayHorizontal |
0 |
MSHFlexGrid 中的带区水平显示(横向)。缺省设置值。 |
flexBandDisplayVertical |
1 |
MSHFlexGrid 中的带区竖直显示(上下方向)。 |
DisplayCellSettings属性
常数 |
值 |
描述 |
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属性
常数 |
值 |
描述 |
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 事件比较行。 |
属性:(下面的有关各属性的具体用法,我会继续更新)
OLEDropMode属性(ActiveX控件);
Height,Width属性(ActiveX控件);
Index属性(ActiveX控件);
Left,Top属性(ActiveX控件);
Tag属性(ActiveX控件);
Visible属性(ActiveX控件);
Object属性(ActiveX控件);
ColPos属性;
ColPositon,RowPosition属性;
Cols, Rows属性(MSHFlexGrid);
ColSel,RowSel属性;
ColWidth属性(MSHFlexGrid);
FillStyle属性(MSHFlexGrid);
FixedCols,FixedRows属性(MSHFlexGrid);
FocusRect属性;
FontWidth,FontWidthBand,FontWidthFixed, FontWidthHeader属性(MSHFlexGrid);
ForeColor,ForeColorBand, ForeColorFixed, ForeColorHeader, ForeColorSel属性;
FormatString属性;
GridColor,GirdColorBand, GridColorFixed, GridColorHeader,GridColorIndent,GridColorUnpopulated属性;
GridLines,GridLinesBand,GridLinesFixed, GridLinesHeader, GridLinesIndent,GridLineUnpopulated属性(MSHFlexGrid);
GridLineWidth,GridLineWidthBand, GridLineWidthFixed,GridLineWidthHeader, GridLineWidthIndent,GridLineWidthUnpopulated属性(MSHFlexGrid);
HighLight属性(MSHFlexGrid);
LeftCol属性(MSHFlexGrid);
MergeCells属性;
MergeCol, MergeRow属性;
MouseCol, MouseRow属性;
Name属性(MSHFlexGrid);
Picture属性(MSHFlexGrid);
PictureType属性;
Redraw属性;
RowHeight属性(MSHFlexGrid);
RowHeightMin属性;
RowVisible属性;
RowPos属性;
ScrollBars属性(MSHFlexGrid);
ScrollTrack属性;
SelectionMode属性;
Sort属性(MSHFlexGrid);
Text属性(MSHFlexGrid);
TextArray属性;
TextMatrix属性;
TextStyle,TextStyleBand, TextStyleFixed, TextStyleHeader属性(MSHFlexGrid);
TopRow属性(MSHFlexGrid);
Version属性(MSHFlexGrid);
WordWrap属性(MSHFlexGrid);
AllowBigSelection属性;
AllowUserResizing属性;
BackColor,BackColorBkg, BackColorFixed, BackColorSel属性;
CellAlignment属性;
CellBackColor,CellForeColor属性;
CellFontBold属性;
CellFontItalic属性;
CellFontName属性;
CellFontSize属性;
CellFontStrikeThrough属性;
CellFontUnderline属性;
CellFontWidth属性;
CellHeight,CellLeft, CellTop, CellWidth属性(MSHFlexGrid);
CellPicture属性;
CellPictureAlignment属性;
CellTextStyle属性;
Clip属性(MSHFlexGrid);
Col,Row属性(MSHFlexGrid);
ColAlignment,ColAlignmentBand, ColAlignmentHeader属性(MSHFlexGrid);
ColData,RowData, BandData属性(MSHFlexGrid);
ColIsVisible属性;
DataBindings属性;
TabIndex属性;
DragIcon属性;
DragMode属性;
MouseIcon属性;
TabStop属性;
HelpContextID属性;
Parent属性;
Container属性;
ToolTipText属性;
WhatsThisHelp属性;
Appearance属性(ActiveX控件);
BorderStyle属性(ActiveX控件);
Enabled属性(ActiveX控件);
DataSource属性(ActiveX控件);
hWnd属性(ActiveX控件);
MousePointer属性(ActiveX控件)。