代码如下,当按下回车到MSFlexGrid容器最下面增加一行时,能否实现自动下拉滚动条?
Private Sub Form_Activate()
Dim i As Integer
MSFlexGrid1.Rows = 20
MSFlexGrid1.Cols = 8
MSFlexGrid1.ColWidth(0) = 8 * 25 * 2
MSFlexGrid1.ColWidth(1) = 12 * 25 * 3
MSFlexGrid1.ColWidth(2) = 12 * 25 * 6
MSFlexGrid1.ColWidth(3) = 12 * 25 * 3
MSFlexGrid1.ColWidth(4) = 12 * 25 * 4
MSFlexGrid1.ColWidth(5) = 12 * 25 * 4
MSFlexGrid1.ColWidth(6) = 12 * 25 * 4
MSFlexGrid1.ColWidth(7) = 12 * 25 * 4
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.FixedCols = 1
MSFlexGrid1.TextMatrix(0, 0) = "编号"
MSFlexGrid1.TextMatrix(0, 1) = "商品代码"
MSFlexGrid1.TextMatrix(0, 2) = "商品名"
MSFlexGrid1.TextMatrix(0, 3) = "型号规格"
MSFlexGrid1.TextMatrix(0, 4) = "数量"
MSFlexGrid1.TextMatrix(0, 5) = "单位"
MSFlexGrid1.TextMatrix(0, 6) = "单价"
MSFlexGrid1.TextMatrix(0, 7) = "金额"
MSFlexGrid1.Text = Text1.Text
For i = 1 To 19
MSFlexGrid1.TextMatrix(i, 0) = i
Next i
Text1.Visible = True
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1.SetFocus
End SubPrivate Sub MSFlexGrid1_Click()
'文本框跟着移动'
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1.Text = MSFlexGrid1.Text
Text1.Visible = True
Text1.SetFocus
End Sub
Private Sub MSFlexGrid1_LeaveCell()
If enr = False Then
MSFlexGrid1.Text = Text1.Text
End If
End SubPrivate Sub MSFlexGrid1_Scroll()
Text1.Visible = False
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
On Error Resume Next
If KeyAscii = vbKeyReturn Then '回车到下一个格子
MSFlexGrid1.Text = Text1.Text
If MSFlexGrid1.Col < 7 Then
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
Else
enr = True
MSFlexGrid1.Col = 1
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
enr = False
If Err = 30009 Then
MSFlexGrid1.AddItem (MSFlexGrid1.Rows)
enr = True
MSFlexGrid1.Col = 1
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.ScrollTrack = True
Text1.Visible = False
enr = False
End If
End If
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1 = MSFlexGrid1.Text
Text1.Visible = True
Text1.SetFocus
End If
End SubPrivate Sub Text1_Change()
Dim A As Single
If MSFlexGrid1.Col = 4 Then
MSFlexGrid1.Text = Text1.Text
'求金额
A = Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4)) * Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Format(A, "0.00")
End If
If MSFlexGrid1.Col = 6 Then
MSFlexGrid1.Text = Text1.Text
'求金额
A = Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4)) * Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Format(A, "0.00")
End If
End Sub
Private Sub Form_Activate()
Dim i As Integer
MSFlexGrid1.Rows = 20
MSFlexGrid1.Cols = 8
MSFlexGrid1.ColWidth(0) = 8 * 25 * 2
MSFlexGrid1.ColWidth(1) = 12 * 25 * 3
MSFlexGrid1.ColWidth(2) = 12 * 25 * 6
MSFlexGrid1.ColWidth(3) = 12 * 25 * 3
MSFlexGrid1.ColWidth(4) = 12 * 25 * 4
MSFlexGrid1.ColWidth(5) = 12 * 25 * 4
MSFlexGrid1.ColWidth(6) = 12 * 25 * 4
MSFlexGrid1.ColWidth(7) = 12 * 25 * 4
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.FixedCols = 1
MSFlexGrid1.TextMatrix(0, 0) = "编号"
MSFlexGrid1.TextMatrix(0, 1) = "商品代码"
MSFlexGrid1.TextMatrix(0, 2) = "商品名"
MSFlexGrid1.TextMatrix(0, 3) = "型号规格"
MSFlexGrid1.TextMatrix(0, 4) = "数量"
MSFlexGrid1.TextMatrix(0, 5) = "单位"
MSFlexGrid1.TextMatrix(0, 6) = "单价"
MSFlexGrid1.TextMatrix(0, 7) = "金额"
MSFlexGrid1.Text = Text1.Text
For i = 1 To 19
MSFlexGrid1.TextMatrix(i, 0) = i
Next i
Text1.Visible = True
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1.SetFocus
End SubPrivate Sub MSFlexGrid1_Click()
'文本框跟着移动'
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1.Text = MSFlexGrid1.Text
Text1.Visible = True
Text1.SetFocus
End Sub
Private Sub MSFlexGrid1_LeaveCell()
If enr = False Then
MSFlexGrid1.Text = Text1.Text
End If
End SubPrivate Sub MSFlexGrid1_Scroll()
Text1.Visible = False
End SubPrivate Sub Text1_KeyPress(KeyAscii As Integer)
On Error Resume Next
If KeyAscii = vbKeyReturn Then '回车到下一个格子
MSFlexGrid1.Text = Text1.Text
If MSFlexGrid1.Col < 7 Then
MSFlexGrid1.Col = MSFlexGrid1.Col + 1
Else
enr = True
MSFlexGrid1.Col = 1
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
enr = False
If Err = 30009 Then
MSFlexGrid1.AddItem (MSFlexGrid1.Rows)
enr = True
MSFlexGrid1.Col = 1
MSFlexGrid1.Row = MSFlexGrid1.Row + 1
MSFlexGrid1.ScrollTrack = True
Text1.Visible = False
enr = False
End If
End If
Text1.Left = MSFlexGrid1.Left + MSFlexGrid1.ColPos(MSFlexGrid1.Col)
Text1.Top = MSFlexGrid1.Top + MSFlexGrid1.RowPos(MSFlexGrid1.Row)
Text1.Width = MSFlexGrid1.ColWidth(MSFlexGrid1.Col)
Text1.Height = MSFlexGrid1.RowHeight(MSFlexGrid1.Row)
Text1 = MSFlexGrid1.Text
Text1.Visible = True
Text1.SetFocus
End If
End SubPrivate Sub Text1_Change()
Dim A As Single
If MSFlexGrid1.Col = 4 Then
MSFlexGrid1.Text = Text1.Text
'求金额
A = Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4)) * Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Format(A, "0.00")
End If
If MSFlexGrid1.Col = 6 Then
MSFlexGrid1.Text = Text1.Text
'求金额
A = Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 4)) * Val(MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 6))
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, 7) = Format(A, "0.00")
End If
End Sub
哪如何实现当前输入行为第一行或第二行呀
对了,上面的代码最上面加上 Dim enr As Boolean '(enr---产生增加新的一行的标志)