'实现步骤
'1 打开 VB5, 开启一个新的工程。
'2 在菜单"工程" 中选择 "部件", 在列表中选中
'"Microsoft FlexGrid Control .."
'3 放一个 MsFlexGrid 控件和一个TextBox 控件(Text1)到 Form1。
'修改MsFlexGrid 控件的名称为 Grid1, 设置Grid1 的行,列
'为 4, 固定行,列为 0。 设置 Text1 的 Visiable 为 False,
'BorderStyle 为 None(0)。
'4 在Form1 的代码中增加声明:
Const ASC_ENTER = 13 '回车
Dim gRow As Integer
Dim gCol As Integer
'5 增加代码到 Grid_KeyPress 过程:
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
'6 增加代码到 Text1_KeyPress 过程:
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
'7 增加代码到 Text1_LostFocus 过程:
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
正文
MSFlexGrid控件可编辑的简单实现方法22005-07-22 13:14:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/leafage/3086.html
阅读(5445) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论