以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于个人自定义计算器 求改进  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7534)

--  作者:yankunhao
--  发布时间:2010/7/6 18:54:00
--  关于个人自定义计算器 求改进

做了一个计算器窗口,当要计算时按=号就可以调出这个计算器窗口,然后输入如2+3+8的代码按回车就能将计算结果输入到当前行的数量列。

 但有个问题,现在只按=号是不能达到上述所说的,只有按“ctrl+=”才能达到所想的目的。

 

  请问有什么办法只按“=”号就能达到想要的结果呢?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:计算器.rar

[此贴子已经被作者于2010-7-6 18:55:40编辑过]

--  作者:czy
--  发布时间:2010/7/6 19:45:00
--  
我按等于键可以调出窗口,只不过会在焦点单元格中输入等于字符。
--  作者:yankunhao
--  发布时间:2010/7/6 21:42:00
--  
是可以调出窗口,但计算结果不会自动显示,如果按"ctrl + ="时调出窗口就能将计算结果显示于数量列的当前行里。
--  作者:yankunhao
--  发布时间:2010/7/6 22:06:00
--  

If e.KeyCode=keys.Oemplus then
Sendkeys.Send("{TAB}")
e.Cancel=true
Forms("计算器").Open()
End If

 

这样就可以了,呵呵。


--  作者:czy
--  发布时间:2010/7/6 22:26:00
--  
呵呵,Sendkeys.Send("{TAB}")多此一举吧?
--  作者:yankunhao
--  发布时间:2010/7/6 23:01:00
--  
还是有一个问题(在独立窗口时),就是得到结果时,再按任何健都不会反应,除非点一下鼠标才行;如果改为模式窗口时,按健虽然有反应, 但得不到结果。
--  作者:狐狸爸爸
--  发布时间:2010/7/6 23:14:00
--  

没必要用计算器吧,简单点,在ValidateEdit事件中判断输入内容,如果内容以“=”开始,例如:

 

=99+128

 

则用eval求此表达式的值,并用求得的值替换输入的内容。

[此贴子已经被作者于2010-7-6 23:14:29编辑过]

--  作者:yankunhao
--  发布时间:2010/7/7 8:49:00
--  
以下是引用狐狸爸爸在2010-7-6 23:14:00的发言:

没必要用计算器吧,简单点,在ValidateEdit事件中判断输入内容,如果内容以“=”开始,例如:

 

=99+128

 

则用eval求此表达式的值,并用求得的值替换输入的内容。

[此贴子已经被作者于2010-7-6 23:14:29编辑过]

经测试这个方法只有在列的数据类型为字符时才可以,如果在数值列就不行。请问是这样吗?


--  作者:狐狸爸爸
--  发布时间:2010/7/7 8:59:00
--  

是这个理,看来此方法没有实际意义。

 

图片点击可在新窗口打开查看

 


--  作者:yankunhao
--  发布时间:2010/7/7 9:07:00
--  
所以还是以窗口的形来做吧,大家有没办法解决像我在6楼所说的现象呢?