以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于单元格里百分比的输入效率问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40120)

--  作者:a9858
--  发布时间:2013/9/10 8:45:00
--  关于单元格里百分比的输入效率问题
表里有一列“含水率”含水7.6%,比如输入0.076,就会变成7.6%,这样要敲键盘5次,效率不高。
能不能直接输入7.6就会变成7.6%呢,在狐表4.16之前的版本都是可以的,
升级到6.2版后,输入7.6就变成760%。不知道我表达清楚没有,那位老师出手帮忙啊,谢谢!!!

--  作者:Bin
--  发布时间:2013/9/10 8:58:00
--  
你好,这个一直都是这样的吧.你可以考虑在DataColChanged中把输入的值除以100来实现你这个需求.
--  作者:a9858
--  发布时间:2013/9/10 9:39:00
--  
bin老师我没弄好,你再出手啊。
这样不行你帮我改改吧
If e.DataCol.Name = "含水率" Then
    e.DataRow("含水率") = e.DataRow("含水率")/100
End If

--  作者:Bin
--  发布时间:2013/9/10 9:43:00
--  
不行,刚才忽略了! 这样做不行的,会死循环. 你老老实实用输入多几个0吧 要不你用录入窗口做,然后在窗口文本框处理,这样就好了.
--  作者:a9858
--  发布时间:2013/9/10 9:48:00
--  
狐爸给的代码在表的AfterEdit事件中写
If e.Col.Name = "含水率" Then
    e.Row("含水率") = e.Row("含水率") / 100
End If

这样也不行

--  作者:hanxuntx
--  发布时间:2013/9/10 9:56:00
--  

呵呵,要这样写

If e.DataCol.Name = "损耗" Or e.DataCol.Name = "利用率" Then
    If e.NewValue >= 1 Then
            e.Cancel = True
            e.DataRow(e.DataCol.Name) = e.NewValue/100
    End If
End If


--  作者:狐狸爸爸
--  发布时间:2013/9/10 14:21:00
--  

可以直接设置e.NewValue:

 

If e.DataCol.Name = "损耗" OrElse e.DataCol.Name = "利用率" Then
    If e.NewValue >= 1 Then
            e.NewValue = e.NewValue/100
    End If
End If