加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

VB增加 MsFlexGrid控件 的编辑功能实例源码

(2013-06-21 20:43:21)
标签:

msflexgrid控件

vb笔记

vb知识

msflexgrid的编辑功能

it

分类: 封笔之VB笔记

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

    在按下一个键后,就把TextBox 移动到当前的位置, 并激活。 在键入回车或移动到其他网格时,就把TextBox 中的内容放到网格中。

实现步骤

1 打开 VB, 开启一个新的工程。

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

8. 按 F5 开始测试。 您可以自由地在 Grid 中移动, 按回车可以开始或结束编辑。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有