加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

vb—MSHFlexGrid控件总结(一)

发布时间:2020-12-17 07:44:15 所属栏目:百科 来源:网络整理
导读:1、在MSHFlexGrid控件的一行中添加内容 方法一:用Tab字符分开不同单元格的内容 首先定义一个字符串的变量:row span style="font-size:18px;"strong'添加信息 row = "学号" vbTab "姓名" vbTab "卡号" vbTab "金额" '传给MSHFlexGrid With MSHFlexGrid1 .Ro

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:UsersjfPictures1.jpg")</strong></span>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读