vb—MSHFlexGrid控件总结(一)

机房收费系统 专栏收录该内容
11 篇文章 0 订阅

1、在MSHFlexGrid控件的一行中添加内容

方法一:用Tab字符分开不同单元格的内容
首先定义一个字符串的变量:row

<span style="font-size:18px;"><strong>'添加信息
   row = "学号" & vbTab & "姓名" & vbTab & "卡号" & vbTab & "金额" 
'传给MSHFlexGrid 
With MSHFlexGrid1
   .Rows = 0
   .AddItem row
   End With
</strong></span>

方法二:
<span style="font-size:18px;"><strong>With MSHFlexGrid1
      .Rows = 1
      .CellAlignment = 4
      .TextMatrix(0, 0) = "学号"
      .TextMatrix(0, 1) = "姓名"
      .TextMatrix(0, 2) = "卡号"
      .TextMatrix(0, 3) = "金额"
End With
</strong></span>

2、设置单行为浅灰,双行为浅黄色,颜色可以自己设定

<span style="font-size:18px;"><strong>Dim i As Integer 

With MSHFlexGrid1
        .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 = &HC0FFFF   ' 浅黄色
        End If
        Next i
    End With
</strong></span>

3、实现MSHF可以输入内容

需要一个textbox
新建一个textbox:text1

<span style="font-size:18px;"><strong>‘首先声明:
 Const ASC_ENTER = 13      '回车,作用是按回车触发可以输入文本内容
 Dim gRow As Integer
 Dim gCol As Integer


Private Sub Grid1_KeyPress(KeyAscii As Integer)
    ' Move the text box to the current grid cell:
    Text1.Top = Grid1.CellTop + Grid1.Top
    Text1.Left = Grid1.CellLeft + Grid1.Left
    ' Save the position of the grids Row and Col for later:
    gRow = Grid1.Row
    gCol = Grid1.Col
    ' Make text box same size as current grid cell:
    Text1.Width = Grid1.CellWidth - 2 * Screen.TwipsPerPixelX
    Text1.Height = Grid1.CellHeight - 2 * Screen.TwipsPerPixelY
    ' Transfer the grid cell text:
    Text1.Text = Grid1.Text
    ' Show the text box:
    Text1.Visible = True
    Text1.ZOrder 0 ' 把 Text1 放到最前面!
    Text1.SetFocus
    ' Redirect this KeyPress event to the text box:
    If KeyAscii <> ASC_ENTER Then
    SendKeys Chr$(KeyAscii)
    End If
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = ASC_ENTER Then
        Grid1.SetFocus ' Set focus back to grid, see Text_LostFocus.
        KeyAscii = 0 ' Ignore this KeyPress.
    End If
End Sub

Private Sub Text1_LostFocus()
    Dim tmpRow As Integer
    Dim tmpCol As Integer
    ' Save current settings of Grid Row and col. This is needed only if
    ' the focus is set somewhere else in the Grid.
    tmpRow = Grid1.Row
    tmpCol = Grid1.Col
    ' Set Row and Col back to what they were before Text1_LostFocus:
    Grid1.Row = gRow
    Grid1.Col = gCol
    Grid1.Text = Text1.Text ' Transfer text back to grid.
    Text1.SelStart = 0 ' Return caret to beginning.
    Text1.Visible = False ' Disable text box.
    ' Return row and Col contents:
    Grid1.Row = tmpRow
    Grid1.Col = tmpCol
End Sub
</strong></span>

4、单击某一行变色

<span style="font-size:18px;"><strong>public j as long

Private Sub RowColor(i As Long, j As Long)
'i代表现在点的这一行
Dim n As Long 'n代表列
With Me.Grid1
For n = 1 To .Cols - 1
.Row = i
.Col = n
.CellBackColor = &HC0FFFF


If j > 0 And i <> j Then
.Row = j
.CellBackColor = &HFFFFFF
End If
Next n
j = i
End With

End Sub

Private Sub Form_Load()
With Me.Grid1
.Cols = 5
.Rows = 6
End With
End Sub

Private Sub Grid1_Click()
Call RowColor(Me.Grid1.Row, j)
Debug.Print j
End Sub

</strong></span>

5、给单元格添加背景图片

<span style="font-size:18px;"><strong>​Set Grid1.CellPicture = LoadPicture("C:\Users\jf\Pictures\1.jpg")</strong></span>



  • 0
    点赞
  • 12
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值