初学VB,编计算器碰到问题

flashrain 2003-09-16 08:42:08
初学VB,编计算器,有问题请教,代码如下:
Dim num1, num2 As Double
Dim StrNum1, StrNum2 As String
Dim Sign As Integer '定义运算符
Dim Pointed As Boolean '小数点是否按过
Dim ClickSign As Boolean '判断是否已有运算符号
Dim Result As Double '定义结果
Dim FirstNum As Boolean '判断是否是数字开头

Sub Command1_Click(Index As Integer) '0-9数字键
If FirstNum Then
StrNum1 = Str(Index) '实型转字符型
FirstNum = False '初赋值为假
Else '非初赋值
StrNum1 = StrNum1 + Str(Index)
End If
text1.Text = StrNum1 '显示
End Sub

Private Sub Command1_KeyPress(Index As Integer, KeyAscii As Integer)
Select Case KeyAscii
Case 96
Index = 0
Call Command1_Click
Case 97
Index = 1
Call Command1_Click
Case 98
Index = 2
Call Command1_Click
Case 99
Index = 3
Call Command1_Click
Case 100
Index = 4
Call Command1_Click
.......
End Select
End Sub

Private Sub Command2_Click(Index As Integer) '运算符
Pointed = False '还原标记值
If ClickSign Then '前面已有运算符未运算
Call run
Else
ClickSign = True
StrNum2 = StrNum1 '把字符串1复制给字符串2
StrNum1 = "" '字符串1清空
End If
Sign = Index '储存键入的运算符
End Sub

Private Sub Command3_Click() '等于号
If Not ClickSign Then
text1.Text = StrNum1
Result = Val(StrNum1)
FirstNum = True
Pointed = False
Else
Call run
ClickSign = False
End If
End Sub

Private Sub point_Click() '小数点
If Not Pointed Then '如果没有小数点
StrNum1 = StrNum1 + "."
Else '已有小数点
Exit Sub '则退出单击事件
End If
Pointed = True
text1.Text = StrNum1
End Sub

Private Sub CE_Click()
Call Form_Load
End Sub

Sub Form_Load()
num1 = 0
num2 = 0
StrNum1 = ""
StrNum2 = ""
FirstNum = True
PointFlag = False
Sign = -1
ClickSign = False
text1.Text = "0."
End Sub

Public Sub run()
num1 = Val(StrNum2)
num2 = Val(StrNum1)
Select Case Sign
Case 0 '加
Result = num1 + num2
Case 2 '减
Result = num1 - num2
Case 1 '乘
Result = num1 * num2
Case 3 '除
Result = num1 / num2
End Select
StrNum2 = Str(Result)
StrNum1 = StrNum2
text1.Text = StrNum2
End Sub
问题一是0的问题,如何解决在小数点前之能有一个0
问题二是小数点的问题,一开始运行可以,当按CE键后小数点就不起作用了
问题三是数字小键盘的键盘事件不行,不知道错在那里
帮忙改改代码,谢谢


...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
OrangeSeaCoast 2003-09-18
  • 打赏
  • 举报
回复
定义为"Dim Pointed As Boolean '小数点是否按过"
地FORM_LOAD事件中
没有将Pointed重新初使化!而是将PointFlag初使化,估计是这个错误!
建议在程序最开始加上Option Explicit自动检测变量是否声明!
OrangeSeaCoast 2003-09-18
  • 打赏
  • 举报
回复
用转换函数将数字转化为字符输出,即
if cint(text1.Text)<1 and cint(text1.Text)>0 then
text1.Text="0."& cstr(StrNum)
elseif cint(text1.Text)>-1 and cint(text1.Text)<0 then
text1.Text="-0."&cstr(StrNum)
else
……
endif
flashrain 2003-09-18
  • 打赏
  • 举报
回复
自己在顶
flashrain 2003-09-17
  • 打赏
  • 举报
回复
up
northwolves 2003-09-16
  • 打赏
  • 举报
回复
1.修改控制面板区域设置中的数字格式。
2. form_load 中加pointed=false
benxie 2003-09-16
  • 打赏
  • 举报
回复

Select Case KeyAscii
键盘的键盘事件 KeyAscii=13

7,762

社区成员

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

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