VB6.0 mshflexgrid问题请高手解答! 输入表格使用TEXTBOX+mshflexgrid完成。

feicui999 2009-07-29 09:01:43
VB6.0 mshflexgrid问题请高手解答! 输入表格使用TEXTBOX+mshflexgrid完成。
1、限制输入(某列只可输入数值也就是说。格式为“100.00”)
2、首行行高 (首行窄,其他行需要高)
3、某列不可编辑(我读出数据库中的索引编号用于超看,但怕客户改掉所以,想锁定不可修改某列)
4、如何检测增加数据未保存是否退出。提示用户应保存还是放弃。
...全文
580 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊孩子开学喽 2009-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 feicui999 的回复:]
谢谢各位的回答!可没有一个回答的是点上的。
5楼的老师你看错了。我是TEXTBOX+mshflexgrid不是msflexgrid,因此程序没法参考。
我简单的看了看,学到了别的新东西。还是很感谢的!
问题1:输入限制。(主要功能,使某列只能输入数值也就是,数字和小数点。并且小数点只能出现一次。)我通过网络找到了些类似代码,都不能有效控制,因为MSHFLEXGRID的输入是要出发很多事件的。例如:MSHFLEXGRID_KeyPress、TEXTBOX_KeyPress、GotFocus、LeaveCell、EnterCell。我调试半天的效果是输入的第一个英文字母被赋值到TEXTBOX控件了,后面在输入的字符的确能被限制住,可这样保存时数据类型一样会错误,软件会损坏的。
问题2:MSHFLEXGRID控件的确有个RowHeightMin属性可以设置最小行高,
MSHFLEXGRID.RowHeight(1) = 280
MSHFLEXGRID.RowHeightMin=500
可我要的效果是第一行扁些,其他行高,这样的设置,第一行也成了500,我改怎么解决问题。
问题3:我已解决,设定FIXedcols即可。
问题4:检测数据已录入未保存退出,事件可以写在退出按钮上,可这样会降低保存速度。不知道有没有更好的办法,我想知道大家遇到这些问题了吗?怎么处理的。

[/Quote]

MSHFLEXGRID还真没用过,一向都是用MSFLEXGRID,貌似两者差别不大,不过既然可以逐行设置行高,那不就是可以解决你的问题了么
feicui999 2009-08-01
  • 打赏
  • 举报
回复
哦。可能是我别的逻辑方面有错误。我再查吧!
logan0279 2009-08-01
  • 打赏
  • 举报
回复
测试了下你的代码,仍然正常!不能输入英文字母.

目前我的MSHFlexGrid中只添加了MSHFlexGrid_Click事件!
feicui999 2009-07-31
  • 打赏
  • 举报
回复
8楼的哥们!
限定第5列只能输入数字不能使用利用TextBox_KeyPress 事件么?
你实际测试会发现TextBox_KeyPress 事件有问题.因为 数据是先触发MSHFLEXGRID事件之后数据传入TextBox_KeyPress事件,我在TextBox_KeyPress处作限制后,每次的第一个英文字母总能被传入,而后面的字母就能被有效阻止了.这样明显事件处理不完整,存在逻辑缺陷.因为想问大家实际使用结果.
因为我程序已经开发完毕,为了减少软件BUG,希望限制用户错误操作,减少维护量.所以才实际测试这些问题的.
目前网上大都是些使用MSHFLEXGRID查询代码,实际的录入 增行 删行 保存行 事件处理各种情况没有现成的代码可供参考.希望那位仁兄提供点真实能用的纯粹的完善的MSHFLEXGRID事件处理代码.
我们解决一个问题的方法有很多,但总是不完美,我希望大家可以考虑完整经过实际使用测试.
feicui999 2009-07-31
  • 打赏
  • 举报
回复
第二个问题,设置某行行高:
MSHFLEXGRID.RowHeightMin=?
MSHFLEXGRID.RowHeight(1) = ?
经实际测试不可以.因为MIN已经是最小行高,因此MSHFLEXGRID.RowHeight(1) = ? 如果比MSHFLEXGRID.RowHeightMin=? 小则设置无效.
我经过一翻研究,发现只能使用循环行高来设置,但一旦增加行,需要重新设置新行,因为系统默认按照字体大小设置的行高.
另外请问VF8现在用的人多吗.我觉得相对DELFILE VB控件的功能真实可怜.
logan0279 2009-07-31
  • 打赏
  • 举报
回复
第二个问题,设置某行行高:
MSHFLEXGRID.RowHeightMin=?
MSHFLEXGRID.RowHeight(1) = ?

这样不可以么?
logan0279 2009-07-31
  • 打赏
  • 举报
回复
限定第5列只能输入数字不能使用利用TextBox_KeyPress 事件么?
feicui999 2009-07-31
  • 打赏
  • 举报
回复

[Quote=引用 16 楼 feicui999 的回复:]
txtedit1_KeyPress
事件截图
[/Quote]
feicui999 2009-07-31
  • 打赏
  • 举报
回复


txtedit1_KeyPress
事件截图
feicui999 2009-07-31
  • 打赏
  • 举报
回复
我刚学不久。不过接触很久了。TextBox_KeyPress在我这里,怎么第一个值总是能传入呢。等我贴图。
Private Sub txtedit1_KeyPress(KeyAscii As Integer)

Dim Numbers As String '允许输入的字符
If flex1.Col = 5 Then '第5列
' MsgBox "flex1.Col = 5"
Numbers = "1234567890" + Chr(46) + Chr(8)
If InStr(Numbers, Chr(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End If

'删除回车符,以消除嘟嘟声。
If KeyAscii = Asc(vbCr) Then KeyAscii = 0
End Sub

yachong 2009-07-31
  • 打赏
  • 举报
回复
这个东西不难,关键是要细心,不怕烦琐。
logan0279 2009-07-31
  • 打赏
  • 举报
回复
你的MSHFlexGrid事件分别有哪些?

我刚试了下,TextBox_KeyPress事件一切,可以按我要求控制输入呀!
logan0279 2009-07-31
  • 打赏
  • 举报
回复
呵呵,我最近在学习VB,正打算用TextBox结合MSHFlexGrid来做的,所以有此一问.

增加新行的时候只需要设置新行的高度就可以了呀,不需要再循环所有行的吧.

我学习VB时间不短,可一直断断续续的,没怎么学好,兄弟不介意的话,可以加我QQ,以后有什么问题可以向你请教.
feicui999 2009-07-30
  • 打赏
  • 举报
回复
''限定第5列只能输入数字。方法一
'Private Sub flex1KeyPressEdit(ByVal Row As Long, ByVal Col As Long, KeyAscii As Integer)
'Dim Numbers As String '允许输入的字符
'If flex1.Col = 5 Then '第5列
' MsgBox "flex1.Col = 5"
' Numbers = "1234567890" + Chr(46) + Chr(8)
' If InStr(Numbers, Chr(KeyAscii)) = 0 Then
' KeyAscii = 0
' End If
'End If
'End Sub

''限定第5列只能输入数字。方法二
'Private Sub flex1_change()
'MsgBox "第5列必须输入数字"
' If flex1.Col = 5 Then
' If Not IsNumeric(.Text) Then
' MsgBox "第5列必须输入数字"
' End If
' End If
' End Sub
feicui999 2009-07-30
  • 打赏
  • 举报
回复
谢谢各位的回答!可没有一个回答的是点上的。
5楼的老师你看错了。我是TEXTBOX+mshflexgrid不是msflexgrid,因此程序没法参考。
我简单的看了看,学到了别的新东西。还是很感谢的!
问题1:输入限制。(主要功能,使某列只能输入数值也就是,数字和小数点。并且小数点只能出现一次。)我通过网络找到了些类似代码,都不能有效控制,因为MSHFLEXGRID的输入是要出发很多事件的。例如:MSHFLEXGRID_KeyPress、TEXTBOX_KeyPress、GotFocus、LeaveCell、EnterCell。我调试半天的效果是输入的第一个英文字母被赋值到TEXTBOX控件了,后面在输入的字符的确能被限制住,可这样保存时数据类型一样会错误,软件会损坏的。
问题2:MSHFLEXGRID控件的确有个RowHeightMin属性可以设置最小行高,
MSHFLEXGRID.RowHeight(1) = 280
MSHFLEXGRID.RowHeightMin=500
可我要的效果是第一行扁些,其他行高,这样的设置,第一行也成了500,我改怎么解决问题。
问题3:我已解决,设定FIXedcols即可。
问题4:检测数据已录入未保存退出,事件可以写在退出按钮上,可这样会降低保存速度。不知道有没有更好的办法,我想知道大家遇到这些问题了吗?怎么处理的。
熊孩子开学喽 2009-07-30
  • 打赏
  • 举报
回复
看看这个: http://download.csdn.net/source/369462
TEXTBOX+MSFLEXGRID的编辑功能都在里面了。至于限制输入或显示格式什么的无非就是在TEXT的输入事件中加代码转换,比如FORMAT函数ISNURMERIC函数等等,你可以自己参考MSDN. 行高问题,我想,如果你真的仔细研究过MSFLEXGRID这个控件的属性和方法就不应该再问了。至于锁定行也是蛮简单,因为MSFLEXGRID本来就是不可编辑的,你的代码只是利用TEXTBOX来“输入”,因此你只要定义好在某些行上面TEXTBOX不可输入就行,比如LOCKED属性。程序未保存退出提醒在我给你的历程里面自己找。

只提供思路,不提供代码
clear_zero 2009-07-30
  • 打赏
  • 举报
回复
你现在设计到哪了?

100.00可以用FORMAT(value,"0.00")
futosky 2009-07-30
  • 打赏
  • 举报
回复
基于技术很烂,认为100.00这种格式写个判断过程得了
feicui999 2009-07-30
  • 打赏
  • 举报
回复
大哥。我那说是作业了。我是在开发程序。汗!
孤独剑_LPZ 2009-07-29
  • 打赏
  • 举报
回复
又是个只发作业的,这年头都怎么了?
作业要自己做,不会的地方可以帮你解答
VB控件属性大全【珍藏版】 1.01、窗体(FORM)的常用属性 2 1.02、标签控件(Lable)的常用属性 7 1.03、文本框控件(TextBox)的常用属性 9 1.04、框架控件(Frame)的常用属性 13 1.05、命令按钮控件(CommandButton)的常用属性 15 1.06、复选框控件(CheckBox)的常用属性 17 1.07、单选钮控件(OptionButton)的常用属性 19 1.08、组合框控件(ComboBox)常用属性 22 1.09、列表框控件(ListBox)的常用属性 25 1.10、水平滚动条控件(HScrollBar)和垂直滚动条控件(VScrollBar)的常用属性 28 1.11、定时器控件的常用属性 30 1.12、文件系统控件的常用属性 30 1.13、形状控件(Shape)常用属性 33 1.14、直线控件(Ling)的常用属性 35 1.15、图像控件(Image)的常用属性 36 1.16、图片框控件(PictureBox)的常用属性 38 1.17、数据控件(Data)的常用属性 43 1.18、OLE容器控件(OLE)的常用属性 46 1.19、菜单控件的常用属性 48 2.02、电影(ActiveMovie)控件的常用属性 49 2.01、Adodc控件的常用属性 52 2.03、动画(Animation)控件的常用属性 55 2.04、公用对话框控件(CommonDialog)控件的常用属性 56 2.05、数据组合框(DataCombo)控件的常用属性 60 2.06、数据型电子表格控件(DataGrid)的常用属性 62 2.07、数据列表(DataList) 控件的常用属性 65 2.08、DTPicker控件的常用属性 67 2.09、平面滚动条控件(FlatScrollBar)的常用属性 70 2.10、图像组合框(ImageCombo)控件的常用属性 71 2.11、图像列表控件(ImageList)的常用属性 74 2.12、Inet控件的常用属性 74 2.13、列表视图控件(ListView)的常用属性 75 2.14、MAPIMessages控件的常用属性 79 2.15、MAPISession控件的常用属性 80 2.16、MaskEdBox控件的常用属性 80 2.17、多媒体(MMControl)控件的常用属性 83 2.18、月视图(MonthView)控件的常用属性 86 2.19、图表控件(MSChard)的常用属性 89 2.20、MSComm的常用属性 93 2.21、电子表格控件(MSFlexGrid)的常用属性 94 2.22、层次型电子表格控件(MSHFlexGrid)的常用属性 99 2.23、MSRDC控件的常用属性 104 2.24、PictureClip控件的常用属性 106 2.25、进度栏(ProgressBar)控件的常用属性 107

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧