| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4388 人关注过本帖, 1 人收藏
标题:XP计算器?
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 110楼 hu9jj
谢谢H版指点。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-20 21:39
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
他一定是不知道怎么用INKEY()的,估计刚才是想用CommandButton的快捷键来着。

授人以渔,不授人以鱼。
2012-09-20 21:40
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 112楼 TonyDeng
哈哈 被俺搞出来啦 具体按什么键有什么功能可以参照下面这一段程序
程序代码:
 Procedure Get_Memory(mem_Style, flag_num)
               If gc_Expression == ""
                      MessageBox("请先输入数据")
                    Else 
                        If gc_Result == ""
                             i = 0
                             gc_temp = gc_Expression                      
                             Do while IsDigit(Right(gc_Temp, 1))
                                 i = i + 1
                                 gc_Temp = Left(gc_Temp, Len(gc_Temp) - 1)              
                             EndDo
                             If i == 0
                             gc_MemValue = gc_MemValue
                             Else
                             a = Right(gc_Expression, i)
                             gc_temp = &mem_Style + &a * flag_num
                             gc_MemValue = Transform(gc_temp)
                             EndIf
                        Else          
                             If gc_Result != Transform(&gc_Expression)
                                 i = 0
                                 gc_temp = gc_Expression                     
                                 Do while IsDigit(Right(gc_Temp, 1))
                                     i = i + 1
                                     gc_Temp = Left(gc_Temp, Len(gc_Temp) - 1)              
                                 EndDo
                                 If i == 0
                                 gc_MemValue = gc_MemValue
                                 Else
                                 a = Right(gc_Expression, i)
                                 gc_temp = &mem_Style + &a * flag_num
                                 gc_MemValue = Transform(gc_temp)
                                 EndIf
                             Else
                                 gc_temp = &mem_Style + &gc_Expression * flag_num
                                 gc_MemValue =  Transform(gc_temp)
                             EndIf
                         EndIf
                         gc_Memory = "M"
                        MessageBox("现在存储的数据是:" + gc_MemValue)
                     EndIf
        EndProc

       Procedure KeyPress(i, n) &&i为InKey()函数的返回值
           Do Case
               Case i >= 40 .and. i <= 57 && 数字 小数点 括号 和 运算符
                    gc_Expression = gc_Expression + chr(i)
               Case i == 61     && 计算结果的 '='号
                    gc_Result = Transform(&gc_Expression)
               Case i == 37     && 求一个数的百分之一 此具重复功能
                    gc_Result = gc_Expression
                    gc_Result = Transform(&gc_Expression/100)
                    gc_Expression = gc_Result
               Case i = 83 && 要求表达式的平方根请按 shift + s 此具重复功能
                    gc_Result = gc_Expression
                    gc_Result = Transform(Sqrt(&gc_Result))
                    gc_Expression = gc_Result
               Case i = 73 && 要求表达式的倒数请按 shift + i 此具重复功能
                     gc_Result = gc_Expression
                    gc_Result = Transform(1/&gc_Expression)
                    gc_Expression = gc_Result
               Case i = 127 && 退格
                    gc_Expression = Left(gc_Expression, Len(gc_Expression) - 1)
               Case i = 99 && 清空表达式请按 c 键
                    gc_Expression = ""
                    gc_Result = ""
               Case i = 67 && 清空表达式最后一个数请按 shift + c 键
                    Do while IsDigit(Right(gc_Expression, 1))
                       gc_Expression = Left(gc_Expression, Len(gc_Expression) - 1)                   
                    EndDo
               Case i = 102 && 要改变数的符号请按 f
                    If Left(gc_Expression, 1) != '-'
                       gc_Expression = Padl(gc_Expression, Len(gc_Expression) + 1, "-")
                    Else
                       gc_Expression = Right(gc_Expression, Len(gc_Expression) - 1)
                    EndIf
               Case i = 120  && 要以覆盖方式存储请按  alt + 1
                    ThisForm.Get_Memory("", 1)

               Case i = 121 && 要以增加方式存储请按  alt + 2
                    ThisForm.Get_Memory(gc_MemValue, 1)

               Case i = 122 && 要以减少方式存储请按  alt + 3
                    ThisForm.Get_Memory(gc_MemValue, -1)

               Case i = 123 && 要读取存储请按 alt + 4
                    gc_Expression = gc_Expression + Transform(gc_MemValue)
               Case i = 124 && 要清空存储请按 alt + 5
                    gc_Memory = ""
                    gc_MemValue = ""
                    MessageBox("现在存储的数是:" + gc_MemValue)
           EndCase
         ThisForm.Refresh
       EndProc                   
我也不知道怎么打包 连编了个exe 其他的文件也不大 都压缩发上来算了
看看有没有BUG
jsq1.zip (46.51 KB)



[ 本帖最后由 有容就大 于 2012-9-20 23:24 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-09-20 23:16
wjp456789
Rank: 5Rank: 5
来 自:四川成都
等 级:职业侠客
威 望:1
帖 子:345
专家分:330
注 册:2012-6-25
收藏
得分:0 
按键功能实现了。。但是应该实现回车计算功能(相当于“=”)
连编的EXE文件一样的没有菜单,没有图标,是一个狐狸头像。

我是来向高手学习的!
2012-09-20 23:48
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用wjp456789在2012-9-20 23:48:33的发言:

按键功能实现了。。但是应该实现回车计算功能(相当于“=”)
连编的EXE文件一样的没有菜单,没有图标,是一个狐狸头像。

是要 呵呵 我直接用=来的 有点一根经啊 不过这个改下也比较容易

55 我还是不会打包 你知道具体流程吗 让一个东东完全脱离 VFP的软件环境 和 运行库?
不过我压缩包里都用东西了 你要看效果可以在VFP里打开项目管理器 调整下菜单文件mpr的路径就可以了


[ 本帖最后由 有容就大 于 2012-9-20 23:54 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-09-20 23:51
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:3 
i >= 40 .and. i <= 57
BETWEEN(I,40,57)

坚守VFP最后的阵地
2012-09-20 23:57
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用sdta在2012-9-20 23:57:57的发言:

i >= 40 .and. i <= 57

呵呵 是呢 又忘了 记得上次你也提醒过 ~~

梅尚程荀
马谭杨奚







                                                       
2012-09-20 23:59
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
以下是引用wjp456789在2012-9-20 23:48:33的发言:

按键功能实现了。。但是应该实现回车计算功能(相当于“=”)
连编的EXE文件一样的没有菜单,没有图标,是一个狐狸头像。

555 发现一个问题 就是如果设置回车键为输出结果键 那么必须先然按钮的焦点丢失掉
这个麻烦了。。。

梅尚程荀
马谭杨奚







                                                       
2012-09-21 00:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
      gc_Result = gc_Expression
      gc_Result = Transform(Sqrt(&gc_Result))
合二为一
gc_Result = Transform(Sqrt(gc_Expression))





坚守VFP最后的阵地
2012-09-21 00:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对初学者来说,合格吧,多锻炼就好了。以后自然会发现更好的方法,就是这样逐步提高的。

授人以渔,不授人以鱼。
2012-09-21 00:05
快速回复:XP计算器?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029225 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved