增加 MsFlexGrid 的编辑功能

来源:互联网 发布:中信建投证券mac版 编辑:程序博客网 时间:2024/05/22 03:02
 

MsFlexGrid 控件没有提供文本编辑的功能,下面的例子演示了如何利用一个TextBox 实现编辑当前网格的功能。

实现步骤
1 打开 VB6, 开启一个新的工程。
2 在菜单“工程” 中选择 “部件”, 在列表中选中 “Microsoft FlexGrid Control ..”
3 放一个MsFlexGrid 控件一个TextBox 控件(Text1)(形状控件Shape1和图像控件Picture1可以不要)、一个定时器控件(Timer1)到 Form1。 设置MSFlexGrid1的行,列, 固定行,列为 0。 设置 Picture1的 Visiable 为 False, BorderStyle 为 None(0)。设置Timer1的Interval属性为50,Enabled属性为 False。

'完整代码如下:

Dim RowL As Long, ColL As Long
Dim MoveS As Boolean
Dim KeyD As Boolean

Private Sub Form_Load()
MoveS = True
For i = 1 To MSFlexGrid1.Rows - 1
MSFlexGrid1.TextMatrix(i, 0) = i
Next
For i = 1 To MSFlexGrid1.Cols - 1
MSFlexGrid1.TextMatrix(0, i) = i
Next
End Sub

Private Sub MSFlexGrid1_DblClick()
Text1 = ""
RowL = MSFlexGrid1.Row: ColL = MSFlexGrid1.Col
Text1 = MSFlexGrid1.TextMatrix(RowL, ColL)
Picture1.Visible = True
Text1.SetFocus
Text1.SelStart = 0
Text1.SelLength = LenB(Text1)
MoveS = True
Call Timer1_Timer
End Sub

Private Sub MSFlexGrid1_EnterCell()
If MoveS = True Then
Picture1.Visible = False
MSFlexGrid1.TextMatrix(RowL, ColL) = Text1
MoveS = False
End If
KeyD = True
End Sub

Private Sub MSFlexGrid1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyD = True Then MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) = "": KeyD = False
End Sub

Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) = _
MSFlexGrid1.TextMatrix(MSFlexGrid1.Row, MSFlexGrid1.Col) & Chr$(KeyAscii)
End Sub

Private Sub MSFlexGrid1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
If MSFlexGrid1.MouseCol = 0 Or MSFlexGrid1.MouseRow = 0 Then
Timer1.Enabled = True
Else
Timer1.Enabled = False
End If
End Sub

Private Sub Picture1_Resize()
On Error GoTo err
Shape1.Width = Picture1.ScaleWidth: Shape1.Height = Picture1.ScaleHeight
Text1.Left = 20: Text1.Top = 20
Text1.Width = Shape1.Width - 40: Text1.Height = Shape1.Height - 40
err:
End Sub

Private Sub Timer1_Timer()
Picture1.Left = MSFlexGrid1.CellLeft - 10: Picture1.Top = MSFlexGrid1.CellTop - 10
Picture1.Width = MSFlexGrid1.CellWidth + 30: Picture1.Height = MSFlexGrid1.CellHeight + 30
End Sub

原创粉丝点击