河北 王翠荣 王全海
我们在使用Visual Basic for Windows开发时,经常用到网格控件(Grid.vbx),因为此控件可以用来作类似于电子表格形式的输出表,且编程简单,但在此网格控件只有输出功能,而不能直接在网格上输入,这给使用者带来一些不便。如何在执行时向网络控件中输入数据,人们使用了一些方法,但大都使用一文本控件作中间转换,即将欲输入的信息先输入到该文本控件,然后将文本控件的TEXT属性赋给网格的TEXT属性,这种方法尽管解决了向网格输入数据问题,但增加了一文本框,对界面有些不美观,修改部分数字不方便,且影响速度,那么,如何直接向网格输入数据呢?
本文将解决直接向网格输入数据问题,基本思想是:使用网格控件KeyPress事件,从键盘上接收所击键位的KeyAscii值,再由Chr$()或Chr()函数转换成字符,然后读出网格单元的当前Text值与由键盘接收到的字符相加,组成新的字符串,再赋给该单元的Text属性,即Grid.Text=Grid.Text+Chr$(KeyAscii)。程序清单如下:
程序中定义了两个Form级变量WgridCol%和WgridRow%。
Sub Grid-KeyPress(KeyAscii as Integer)
Grid.Col=WgridCol%
Grid.Row=WgridRow%
if KeyAscii=8Then `keyascii=8为退格删除键
if Grid.Text<>””Then Grid.text=Mid$(Grid.text,
1,Len(Grid.text)-1)‘删除最后一个字符
Else
Grid.text=Grid.text+Chr$(KeyAscii)
End if
End Sub
Sub Grid-RowColChange()
Wgrid.Col%=Grid.Col
Wgrid.Row%=Grid.Row
End Sub
这样就可以实现对网格的任意输入,可以输入字符、数字等等。由于数字0到9的Ascii值为48到57,小数点Ascii的值为46,所以可以输入任意实数。若您想防止用户输入除数字、小数点以外的任何其他字符,可对来自于键盘的Ascii值进行判断,有条件地接收,就实现了仅输入数值字符。同理也可以限制只输入字母字符。
根据这种思想,也可以对VB中一切不具有输入功能,但具有KeyAscii或者KeyDown事件的控件进行直接输入,如标签Label等。
-
vb教程之使VB的网格控件具有输入功能
本栏文章均来自于互联网,版权归原作者和各发布网站所有,本站收集这些文章仅供学习参考之用。任何人都不能将这些文章用于商业或者其他目的。( Pfan.cn )
最新更新
python爬虫及其可视化
使用python爬取豆瓣电影短评评论内容
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比