在工程—部件—控件中选择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 |