如何将选中的MSHFlexGrid一行高亮显示
高亮显示要设置颜色
Private Sub hflexgrid_EnterCell()
'单击某一单元时,改变该行颜色
Dim i_Col As Integer
Dim c_col As Integer
c_col = Hflexgrid.col
If c_col > 0 Then
For i_Col = 0 To Hflexgrid.Cols - 1
Hflexgrid.col = i_Col
Hflexgrid.CellBackColor = &HFFFFC0
Next i_Col
Hflexgrid.col = c_col
End If
End Sub
Private Sub hflexgrid_LeaveCell()
'当某一行失去焦点时,恢复该行颜色
Dim i_Col As Integer
Dim c_col As Integer
c_col = Hflexgrid.col
For i_Col = 0 To Hflexgrid.Cols - 1
Hflexgrid.col = i_Col
Hflexgrid.CellBackColor = vbWhite
Next i_Col
Hflexgrid.col = c_col
End Sub
mshflexgrid怎么改变某一行的背景色和字体颜色?
Private Sub setColor(msfg As MSFlexGrid, row As Long, color As Long, bkcolor As Long) For i = 1 To msfg.Cols - 1
msfg.row = row
msfg.Col = i
msfg.CellForeColor = color '前景色
msfg.CellBackColor = bkcolor '背景色
Next
End Sub
Private Sub Command1_Click()
setColor MSFlexGrid1, 3, &HFFFF&, &H8000000D
End Sub
Private Sub Form_Load()
MSFlexGrid1.Rows = 5
MSFlexGrid1.Cols = 5
For i = 1 To 4
For j = 1 To 4
MSFlexGrid1.TextMatrix(i, j) = j
Next
Next
End Sub
让MSHFlexGrid只能被选中一行的另一方法
1、放置一个 HSB1 (HScrollBar) ,MSHFlexGrid1(MSHFlexGrid)
2、如下代码:
'---------------------------------------------------------
Private Sub Form_Load()
If MSHFlexGrid1.Cols then
HSB1.Min=1
HSB1.Max=MSHFlexGrid1.Cols
End If
End Sub
'---------------------------------------------------------
Private Sub HSB1 _Change()
If MSHFlexGrid1.Cols then
MSHFlexGrid1.Row = HSB1 .value
MSHFlexGrid1.ColSel = MSHFlexGrid1.Cols - 1
End If
End Sub
'---------------------------------------------------------
Private Sub MSHFlexGrid1_Click()
If MSHFlexGrid1.Cols then
HSB1 .value = MSHFlexGrid1.Row
End If
End Sub
怎么改变MSHFlexGrid某个单元格的颜色
Public Function FlexRedraw(F As MSHFlexGrid) As String With F
.Redraw = False '禁止重画,防止闪动
.BackColorFixed = RGB(190, 218, 178) '标
行背景色
.Row = 0 '设置标题行文字的对其方式
.Col = 0
.ColSel = .Cols - 1
.CellForeColor = vbBlue '标题行文字颜色
.CellAlignment = 4 '对其方式为中间中间
.ScrollTrack = True '移动滚动条的同时数据也滚动
For I = .FixedRows To .Rows - 1 '单双行表格条纹背景色显示
.Row = I '选择第I行
.Col = .FixedCols
.ColSel = .Cols - 1
If I / 2 = Int(I / 2) Then '判断是单是双
.CellBackColor = RGB(224, 248, 224) '双行的底色
Else
.CellBackColor = RGB(240, 248, 224) '单行的底色
End If
Next I
.Row = 1
.Col = 1
.ColSel = .Cols - 1
.Redraw = True '允许重画,显示表格
End With
End Function
给第0列打钩
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "√"
'改变行颜色
For i_Col = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = i_Col
MSFlexGrid1.CellBackColor = &H80C0FF
Next i_Col
Private Sub Command1_Click()
MSFlexGrid1.BackColorBkg = vbGreen
End Sub
Private Sub Form_Load()
MSFlexGrid1.Cols = 10
MSFlexGrid1.Rows = 10
MSFlexGrid1.FixedCols = 0
MSFlexGrid1.FixedRows = 0
MSFlexGrid1.SelectionMode = flexSelectionByRow
End Sub
Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
'On Error GoTo Err_Proc
Dim intCurrCol As Long
intCurrCol = MSFlexGrid1.Col
'单击选择或不选择
If MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "√" Then
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = ""
'改变行颜色
For i_Col = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = i_Col
MSFlexGrid1.CellBackColor = vbWhite
Next i_Col
Else
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 0) = "√"
'改变行颜色
For i_Col = 0 To MSFlexGrid1.Cols - 1
MSFlexGrid1.Col = i_Col
MSFlexGrid1.CellBackColor = &H80C0FF
Next i_Col
End If
MSFlexGrid1.Col = intCurrCol
Exit Sub
End Sub
Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Me.Caption = MSFlexGrid1.MouseRow & "," & MSFlexGrid1.MouseCol
End Sub
我想实现的是当我选点击MSHFLEXGRID控件中某行的数据时,其颜色变为与原来的底色不同的颜色,但当我点击鼠标又重新选中其他行时,刚才选中的那一行恢复原来的颜色,而刚刚重新选中的新行显示不同的颜色。如何实现
1.Private Sub mfg1_Click()
2.Dim row, i, j As Integer
3.row = mfg1.row
4.mfg1.Redraw = False
5.For i = 1 To mfg1.Rows - 1
6. mfg1.row = i
7. For j = 0 To mfg1.Cols - 1
8. mfg1.Col = j
9. mfg1.CellBackColor = &H80000005
10. Next j
11.Next i
12.mfg1.row = row
13.For j = 0 To mfg1.Cols - 1
14. mfg1.Col = j
15. mfg1.CellBackColor = vbGreen
16.Next j
17.mfg1.Redraw = True
18.End Sub