新手求教!关于VB制作计算器的问题
怎么实现累加(减),累乘(除)的功能?
按下等号时,根据第一次的符号 进行累加(减)或 累乘(除)
累乘(除) 这个真没见过这个功能是怎么样的。
这样需要有一个按钮显示累加值。
AC 负责清当前数据和累加值。
C 负责清当前数据,但不清累加值。
复杂多了。。。。。。
Dim num1, num2 as string '第一和第二运算数 Dim operater as integer '运算符 Dim opr as boolean '存放是否刚按过运算符 Dim cal as boolean '存放是否已经执行完计算 Sub CommandCE_Click () num1="" num2="" operater =-1 '初始化,0~3留给运算符,取0~3之外的就可以 opr =false cal =false End sub '当按下数字键:Index与数字从0到9一一对应 sub CommandNum_Click(Index As Integer) '若非控件数组,这个函数拆开到各数组键对应的Click事件中 if opr then '如果刚按过运算符,输入的应该是新数字,将文本框textnum清空 textnum.text="" opr =false '修改变量 End if nums=textnum.text textnum.text=cdbl(nums & Index) '输入的数直接在原数字后 '可能显示或者其他的,还需要一些代码。 酌情增加 End sub '按下小数点 sub CommandDot_Click() if opr or cal then '如果刚按过运算符或者=,输入的应该是新数字,将文本框textnum清空 textnum.text="" opr =false '修改变量 cal=false End if if instr(textnum.text,".") then exit sub ’ 数字中已经有“.” textnum.text=cdbl(nums & ".") '直接在原数字后加 “.” '可能显示或者其他的,还需要一些代码。 酌情增加 End sub '按下运算符: 同样是控件数组,0~3 分别对应+、-、*、/ Sub CommandOpr_click(Index As Integer) if not cal And num1<>"" and num2<>"" and (operater >=0 and operater <=3) then CommandEq_Click '当前面的运算未完成时, 例如: 1+3 (没有按等号) +2, 先计算1+3 End if num1=Getnum(text1.text) operater =index opr =ture cal=false End sub '按下= Sub CommandEQ_Click() if operater <0 and operater >3 then exit sub '没有按下运算符时,不执行 if opr then exit sub '按下运算符时,但是未输入第二个运算数字时,不执行 if cal then '当连续点=时,textnum.text取出的放在num1, 保留原来的num2。 例: 3+1===== 相当于3+1+1+1+1 num1= getnum(textnum.text) else 如果不是连续的点击=, textnum.text取出的放在num2(num1在点击运算符的时候已经读入了) num1= getnum(textnum.text) End if ’执行运算 if num1<>"" and num2<>"" then Select case operater case 0 text.num1=cdbl(num1)+cdbl(num2) case 1 text.num1=cdbl(num1)-cdbl(num2) case 2 text.num1=cdbl(num1)*cdbl(num2) case 3 on error resume next text.num1=cdbl(num1)/cdbl(num2) if err then err.clear msgbox "除数为零,强制重置" CommandCE_Click '强制重置 End if End Select End if cal=true End Sub Function Getnum(a as string) as String if a="" Or a="."then '将无法转换为数值型的进行处理一下 Getnum="0" Else Getnum=a End if End Function
[此贴子已经被作者于2016-9-6 10:54编辑过]