利用微软网格控件进行编辑输入

Zcj850927

Zcj850927

2016-02-19 15:44

今天图老师小编给大家精心推荐个利用微软网格控件进行编辑输入教程,一起来看看过程究竟如何进行吧!喜欢还请点个赞哦~

  Visual Basic中提供了许多标准控件和定制控件,每一个控件都可以提供一组特殊的用户界面和编程能力。充分利用每一个控件的特性和方法,可以使编程工作更加容易、简单。

  微软网格控件MSFlexGrid是个定制控件。使用微软网格控件,可以按行列顺序显示正文、数字和图片,就象电子表格一样。网格的高度、宽度和其它特性都可以进行调整,而且网格的行和列可以单个地或成组地进行操作。MSFlexGrid控件对包含在内的单元内容可进行分类、合并以及格式化,并且可以与数据库控件相绑定。MSFlexGrid控件具有50多种属性,比其它网格控件功能更强大,灵活性更强。

  但是MSFlexGrid控件同其它Grid网格控件一样,用户不能编辑网格单元中的内容,在要求对其内容进行修改时,这可能是一个缺陷。虽然可以对DBGrid控件进行编程完成编辑的功能,但其功能不如MSFlexGrid强大。当在录入工作量比较大时,如果利用MSFlexGrid进行输入,代替Text或其它控件,从而避免了界面的反复刷新和不断地操作按钮,录入速度和效率会得以大大提高。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  在应用程序中使用 MSFlexGrid 之前,应先将 MSFlxGrd.ocx 文件添加到工程中。

  实现编辑网格单元的方案

  为了仅仅要求实现能够对网格单元进行输入,可以在MSFlexGrid的KeyPress事件中加入以下代码,但是修改编辑输入后的内容还十分困难。

  

  Sub MSFLexGrid1_KeyPress(KeyAscii As Integer)  MSFlexGrid1.Text=MSFlexGrid1.Text & Chr$(KeyAscii)  End Sub

  另外一种方法是文本框和网格相结合,用户编辑操作文本框中的内容,操作完后移至网格单元中。在这个过程中,应该实现以下几个功能:

  (1)文本框能准确定位,与待编辑网格单元相重合(2)平时文本框不显示,当进行编辑操作时显示(3)在输入完一行后能自动判断并加一新行(4)按回车键确认并自动到下一列(5)双击网格单元可显示文本框进行编辑(6)文本框消失后,把文本框内容移到网格单元中。

  编辑网格单元的具体实现

  建立一个新工程,在Form1上添加控件 Text1和MSFlexGrid1,根据表1设置其属性。

  

  表1 表单Form1的对象和属性

对象属性设置 Text1VisibleFalse Text“” MSFlexGrid1Rows2 Cols根据字段数目自行设置 FixedCols0 FixedRows1

  首先要实现文本框显示的时候,能与网格单元准确重合。ShowTextBox子例程便可以实现此功能。在此考虑网格本身的Top和Left值、网格单元的高度和宽度、分隔网格单元的边框的宽度。

  

  Sub ShowTextBox()    With MSFlexGrid1    '隐藏文本框,设置高度和宽度     Text1.Visible = False     Text1.Height = .RowHeight(.Row) - (Screen.TwipsPerPixelY) * 2     Text1.Width = .ColWidth(.Col)    ' 计算文本框左坐标     Text1.Left = .CellLeft + .Left     Text1.Top = .CellTop + .Top     Text1.Visible = True     Text1.SetFocus   End With  End Sub

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  当有按键触发网格单元时,则把单元中的内容保存到文本框中,然后显示文本框等待编辑。

  

  Private Sub MSFlexGrid1_KeyPress(KeyAscii As Integer)  Dim char As String  If KeyAscii = 13 Then   Text1.Text = MSFlexGrid1.Text     Text1.SelStart = Len(Text1.Text)     Else      char = Chr$(KeyAscii)      Text1.Text = char      Text1.SelStart = 1     End If     ShowTextBox     KeyAscii = 0  End Sub

  当焦点离开一个网格单元时,先保存文本框中的内容到网格单元,然后检测离开单元是否在最大行第一列(可自己设第几列),如果是自动加一行。

  

  Private Sub MSFlexGrid1_LeaveCell()    MSFlexGrid1.Text = Text1.Text  If MSFlexGrid1.Col = 0 And MSFlexGrid1.Row  0 And _   MSFlexGrid1.Row = MSFlexGrid1.Rows - 1 And MSFlexGrid1.Text  "" Then     MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1   End If  End Sub

  为了响应鼠标动作,添加以下代码。

  

  Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, _                   x As Single, y As Single)   Text1.Visible = False  End Sub

  当网格单元发生变化时,取网格单元内容到文本框,等待编辑,从而保证文本框中的内容最新。

  

  Private Sub MSFlexGrid1_RowColChange()   Text1.Text = MSFlexGrid1.Text  End Sub

  双击网格单元可以对网格单元中内容进行编辑。

  

  Private Sub MSFlexGrid1_DblClick()   If MSFlexGrid1.Row  0 And MSFlexGrid1.Col = 0 Then MSFlexGrid1_KeyPress 13  End Sub

  文本框起输入编辑框的作用,模拟网格单元,输入到文本框的内容,经过处理送到网格中,当输入完后按回车键可以自动到下一列,若为最后一列,跳转到下一行的第一列等待输入。

  

  Private Sub Text1_KeyPress(KeyAscii As Integer)    If KeyAscii = 13 Then      MSFlexGrid1.Text = Text1.Text      Text1.Visible = False      MSFlexGrid1.SetFocus      If MSFlexGrid1.Col  (MSFlexGrid1.Cols - 1) Then       MSFlexGrid1.Col = MSFlexGrid1.Col + 1      ElseIf MSFlexGrid1.Row  MSFlexGrid1.Rows - 1 Then         MSFlexGrid1.Row = MSFlexGrid1.Row + 1         MSFlexGrid1.Col = 0      End If      KeyAscii = 0     End If  End Sub

  以上程序在VB6.0 (中文企业版)下运行通过,实现了对MSFlexGrid网格单元的输入编辑。当然还可以添加一些代码完成对一些击键的响应,如按Tab自动到下一列,按Ese键取消输入等,这都很容易做到,在此不再叙述。如果您使用VB6.0 (中文企业版),还可以用MSHFlexGrid控件来完成编辑输入的功能。

展开更多 50%)
分享

猜你喜欢

利用微软网格控件进行编辑输入

编程语言 网络编程
利用微软网格控件进行编辑输入

Delphi中利用MSCOMM控件进行GPS数据采集

编程语言 网络编程
Delphi中利用MSCOMM控件进行GPS数据采集

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

VCL中网格控件原理分析

编程语言 网络编程
VCL中网格控件原理分析

word2024中使用内容控件对输入位置进行提示

word
word2024中使用内容控件对输入位置进行提示

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VC优秀的网格控件CGridCtrl

编程语言 网络编程
VC优秀的网格控件CGridCtrl

VC增强Edit控件为日期输入控件

编程语言 网络编程
VC增强Edit控件为日期输入控件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

史上最简单的方法复制或迁移Oracle数据库

史上最简单的方法复制或迁移Oracle数据库

Win10磁盘清理功能如何使用?

Win10磁盘清理功能如何使用?
下拉加载更多内容 ↓