唉,还真是有这样的闲人,还正好就是我吧,呵呵,不过最近老是看到有人问这样的问题,不知道是怎么回事。 言归正传:首先,最好要使用控件数组来做,可以定义17个按钮的数组,然后使用一个LABEL作为显示板,使用一全局变量Opera记录计算方式: COMMAND1(0)---COMMAND1(16) 在程序启动的时候写: Dim Opera as String '用来记录所做的操作 Dim Data(1) as Double '用来记录操作数 Dim I as long for I =0 to 9 Command1(I).caption=I next command1(10).caption="." command1(11).caption="+" command1(12).caption="-" command1(13).caption="x" command1(14).caption="/" command1(15).caption="=" command1(16).caption="C" 然后可以这样写: (随手写的SELECT CASE,估计可能会有点错,说个思路而已) sub command1_click(Index as long) select case Index case is < 11 : label1.caption =label1.caption & command1(Index).caption'显示数字 case 11 to 14: Opera =command1(I).caption '记录操作符号咯 label1.caption="" '好像计算器按下操作符之后面板是清空的吧 case 15: Calculate '按"="就是计算咯 case 16: data(0)=0 '按"C"这个按钮就是清空一切,呵呵 data(1)=0 Opera="" label1.caption="" end select end subSub Caculate() select case Opera case "+": Data(0)=Data(0)+Data(1) case "-": Data(0)=Data(0)-Data(1) case "x": Data(0)=Data(0)*Data(1) case "/": if data(1)<>0 then Data(0)=Data(0)/Data(1) '不能除以0哦 end select label1.caption=data(0) end sub对了,别忘记一件很重要的事,否则程序运行不起来: sub label1_change() dim I as long if opera="" then I=0 else I=1 '意思就是,如果前面按过操作符,那就是第二个操作数啦 data(I)=val(label1.caption) '万一你按的是10.5.1.7这样的东东该如何计算呢? label1.caption=data(I) '只显示经过检验的数字咯 end sub好像到这里就完了吧,呵呵,挺简单的吧,偶刚学VB的时候也写过这玩意儿的,居然还想得起来.补充一下: Dim Opera as String '用来记录所做的操作 Dim Data(1) as Double '用来记录操作数 这两个是全局定义,放在程序最前面下面这一段可以放在FORM_lOAD里面 Dim I as long for I =0 to 9 Command1(I).caption=I next command1(10).caption="." command1(11).caption="+" command1(12).caption="-" command1(13).caption="x" command1(14).caption="/" command1(15).caption="=" command1(16).caption="C"至于控件数组,很简单的,放一个COMMAND按钮在窗体上,然后选中它,不断得按"Ctrl+C" 和 "CtrL+V",标准的WINDOWS复制方法. 因为懒得一个一个控件去设定CAPTION值,所以就用了一个循环来做,楼主排版的时候要注意哦,不是很直观,呵呵
只是要功能 完全可以调用windows的计算器
言归正传:首先,最好要使用控件数组来做,可以定义17个按钮的数组,然后使用一个LABEL作为显示板,使用一全局变量Opera记录计算方式:
COMMAND1(0)---COMMAND1(16)
在程序启动的时候写:
Dim Opera as String '用来记录所做的操作
Dim Data(1) as Double '用来记录操作数
Dim I as long
for I =0 to 9
Command1(I).caption=I
next
command1(10).caption="."
command1(11).caption="+"
command1(12).caption="-"
command1(13).caption="x"
command1(14).caption="/"
command1(15).caption="="
command1(16).caption="C"
然后可以这样写: (随手写的SELECT CASE,估计可能会有点错,说个思路而已)
sub command1_click(Index as long)
select case Index
case is < 11 : label1.caption =label1.caption & command1(Index).caption'显示数字
case 11 to 14: Opera =command1(I).caption '记录操作符号咯
label1.caption="" '好像计算器按下操作符之后面板是清空的吧
case 15: Calculate '按"="就是计算咯
case 16: data(0)=0 '按"C"这个按钮就是清空一切,呵呵
data(1)=0
Opera=""
label1.caption=""
end select
end subSub Caculate()
select case Opera
case "+": Data(0)=Data(0)+Data(1)
case "-": Data(0)=Data(0)-Data(1)
case "x": Data(0)=Data(0)*Data(1)
case "/": if data(1)<>0 then Data(0)=Data(0)/Data(1) '不能除以0哦
end select
label1.caption=data(0)
end sub对了,别忘记一件很重要的事,否则程序运行不起来:
sub label1_change()
dim I as long
if opera="" then I=0 else I=1 '意思就是,如果前面按过操作符,那就是第二个操作数啦
data(I)=val(label1.caption) '万一你按的是10.5.1.7这样的东东该如何计算呢?
label1.caption=data(I) '只显示经过检验的数字咯
end sub好像到这里就完了吧,呵呵,挺简单的吧,偶刚学VB的时候也写过这玩意儿的,居然还想得起来.补充一下:
Dim Opera as String '用来记录所做的操作
Dim Data(1) as Double '用来记录操作数
这两个是全局定义,放在程序最前面下面这一段可以放在FORM_lOAD里面
Dim I as long
for I =0 to 9
Command1(I).caption=I
next
command1(10).caption="."
command1(11).caption="+"
command1(12).caption="-"
command1(13).caption="x"
command1(14).caption="/"
command1(15).caption="="
command1(16).caption="C"至于控件数组,很简单的,放一个COMMAND按钮在窗体上,然后选中它,不断得按"Ctrl+C" 和 "CtrL+V",标准的WINDOWS复制方法.
因为懒得一个一个控件去设定CAPTION值,所以就用了一个循环来做,楼主排版的时候要注意哦,不是很直观,呵呵