§3 電卓の制作 VB6
 (4) 演算キーの追加 V 前へ 目次へ 次へ 

演算の処理

 演算キー(+, −, ×, ÷, =)を押したとき、cmdEnzan_Clickプロシージャが実行される。
 数字キーを押した後か、数字キー以外を押した後かによって処理を分ける。さらに、数字キー以外を押した後のときは四則キー(+, −, ×, ÷)か等号キー(=)かによって処理を分ける。

 数字キーを押した後 、初めての演算キーかどうかに分ける。(図3-4-2参照)
 初めての演算キーであればtxtDisplayのデータを変数dData1に記憶し、演算キーのフラグEFlagをTrue(初めてではない)にする。
 初めての演算キーでなければtxtDisplayのデータを変数dData2に記憶する。

図3-4-2

・プログラムリスト

Private Sub cmdEnzan_Click(Index As Integer)
'数字キーを押した後
If SuuFlag = True Then
If EFlag = False Then 'クリア、=キー以後初めての演算キー
dData1 = Val(txtDisplay.Text) '1つ目数値記憶
EFlag = True
Else
dData2 = Val(txtDisplay.Text) '2つ目数値記憶
End If
If Index <> EQU Then '=以外
Keisan
Enzan = Index '演算種類記憶
dData2 = 0
Else '=のとき
Keisan
EFlag = False
End If
txtDisplay.Text = Trim(Str(dData1)) '結果の表示
 演算キーの後、続いて等号キーが押されたときの処理である。
 例えば、10 + の後、=キーを押すごとに計算結果が20, 30, … と加算される。
図3-4-3
    '等号キーを押した後
    ElseIf Index = EQU Then
        If dData2 = 0 Then
            dData2 = dData1
        End If
        Keisan
        txtDisplay.Text = Trim(Str(dData1))
        EFlag = False
 演算キーの後、続いて四則キーが押されたときの処理である。
 txtDisplayに表示されているデータを変数dData1に、0を変数dData2に記憶する。
    '四則キーを押した後
    Else
        dData1 = Val(txtDisplay.Text)    '1つ目数値記憶
        dData2 = 0
        Enzan = Index        '演算種類記憶
        EFlag = True
    End If
    SuuFlag = False
End Sub

 このcmdEnzan_Clickプロシージャが呼び出されたとき、すなわち、演算キーが押されたときの演算の種類は、引数Indexに記憶されている番号によって判定する。同時に、1つ前に押された演算キー(等号以外)の種類は、グローバル変数Enzanに記憶させている。



cmdEnzan_Clickプロシージャを次にまとめておく。
Private Sub cmdEnzan_Click(Index As Integer)
'数字キーを押した後
If SuuFlag = True Then
If EFlag = False Then 'クリア、=キー以後初めての演算キー
dData1 = Val(txtDisplay.Text) '1つ目数値記憶
EFlag = True
Else
dData2 = Val(txtDisplay.Text) '2つ目数値記憶
End If
If Index <> EQU Then '=以外
Keisan
Enzan = Index '演算種類記憶
dData2 = 0
Else '=のとき
Keisan
EFlag = False
End If
txtDisplay.Text = Trim(Str(dData1)) '結果の表示 '等号キーを押した後 ElseIf Index = EQU Then If dData2 = 0 Then dData2 = dData1 End If Keisan txtDisplay.Text = Trim(Str(dData1)) EFlag = False '四則キーを押した後 Else dData1 = Val(txtDisplay.Text) '1つ目数値記憶 dData2 = 0 Enzan = Index '演算種類記憶 EFlag = True End If SuuFlag = False End Sub



 Keisanプロシージャ
 四則計算の処理部分である。どの演算をするかは変数Enzanに記憶されている。

Private Sub Keisan()
    If Enzan = TASU Then            '加算+
        dData1 = dData1 + dData2
    ElseIf Enzan = HIKU Then        '減算-
        dData1 = dData1 - dData2
    ElseIf Enzan = KAKERU Then      '乗算*
        dData1 = dData1 * dData2
    ElseIf Enzan = WARU Then        '除算/
        dData1 = dData1 / dData2
    End If
End Sub


 (4) 演算キーの追加 V 前へ 目次へ 次へ 
Copyright © 2001,2002 Hiroshi Masuda 

 

 

inserted by FC2 system