2024年7月3日发(作者:)
自己用vb制作类似电子表格的可输入控件
应朋友之邀,准备制作一个工程软件,我首选用Visual basic 6.0语言工具来编程,可是
在编程的过程中发现需要输入输出大量数据的控件,像MSFlexGrid, MSHFlexGrid, DataGrid
等不能像Excel 中电子表格那样直接输入数据,可愁坏了我,于是在网上搜罗一翻,把那些
个代码进行了调试,还不能使自己满意,靠别人还不如靠自己,运用别人的灵感加上自己的
努力,我终于把MSFlexGrid控件给进行了改造,自己感觉挺满意的,就把自己的改造心德
写成文字,分享给那些喜欢编程的童鞋们参考。
基本思路:
1. MSFlexGrid控件不能直接进行数据输入,我用一个文本框代替单元格的输入工作。
2. 当任何一个单元格获得焦点时,文本框完全覆盖获得焦点的单元格,这样就不会像
MSFlexGrid控件的第一印象让人感觉生硬不爽。
3. 鼠标点击单元格,上下左右健移动单元格时,文本框还要显示相应单元格的数据,基本
上是完全代替了获得焦点的单元格,这样,一个文本框的作用不仅仅是向单元格输入,
还会起到显示数据的作用。
以上思路,其实就是这么简单,不多说,下面就是具体编程过程,代码也很简单。
一, 在窗体From1中添加,一个MSFlexGrid控件,一个文本框text1.
二, 属性:
控件
MSFlexGri
d控件
Text控件
属性
名称
height width Borderstyle
1180
0
RowHeightMin fixedcols rows
300
0
4
cols
8
Grid1
Text1 280
三, 属性设置好了,现在就开始写代码。你也可以全部复制粘贴
Option Explicit
Const Enter_Asc = 13 ‘首先需要声明一些常量
Const Tab_Asc = 9
Private Sub Form_Load()
Dim i As Integer
For i = 0 To – 1 ‘设置Grid控件的宽度
th(i) = 1200
Next i
For i = 0 To 7 Step 2
trix(0, i) = "测点编号" '在Grid固定行添加列标题。
Next i
For i = 1 To 7 Step 2
trix(0, i) = "测点厚度(mm)"
Next i
End Sub
Private Sub Grid1_Click()
‘下面这两句很关键,是指在Grid1控件单击事件发生时,Text1控件会在相应单元格上出
现
= + (th(0)) * ol
= + (ght(0)) * ow
If = Then ‘判断鼠标是否点击了列标题行,如果是的话,则自动转
至下一行显示文本框,文本框就不会覆盖在列标题上。
= + (ght(0)) * 1
End If
End Sub
Private Sub Grid1_KeyPress(KeyAscii As Integer) ‘Grid控件接受键盘输入时激活文本框
us
rt = 0
If KeyAscii <> Enter_Asc And KeyAscii <> Tab_Asc Then
SendKeys Chr(KeyAscii)
End If
End Sub
Private Sub Grid1_RowColChange() ‘可以使用上下左右健控制单元格,当单元格的焦点
变化时文本框也随之变化。这句很关键
=
= + (th(0)) *
= + (ght(0)) *
End Sub
Private Sub Text1_LostFocus()
=
End Sub
Private Sub Text1_Change() ‘文本框的内容变化时,让文本框的内容与Grid控件内容一致
=
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Enter_Asc Then
us
KeyAscii = 0
End If
End Sub
Private Sub Text1_LostFocus()
=
End Sub
发布者:admin,转转请注明出处:http://www.yc00.com/news/1719952611a2759392.html
评论列表(0条)