ひとりでんたく。- Visual Basic で電卓つく~る。その2 -←前回。
すでに「ひとりでんたく」じゃなくなってしまった、前回のあらすじ。
はぁ・・・今日も湿度たか~い。
前回は数字を入力する動作を作りました。それだけです。(←こっちがあらすじ。)
じゃ、つぎー!
1+2=3 な感じをつく~る!(ついでに -, ×, ÷ もいっとけー!)
それっぽいことになってまいりました!流れはこんな感じ?
- 1 を入力 → 表示は 1 に。
- + を入力 → 表示は変化なし。
- 2 を入力 → 表示は 2 に。
- = を入力 → 表示は 3 に。
ふぅむ・・・ ⅱのときにⅰの 1 と、+ を覚えておいて、ⅲでの 2 を新しく入力できる状態にしておいて、ⅳで 覚えておいた ⅰの値と、ⅲでの値をⅱの演算子で計算して、結果を表示すればよい・・・のかな?(自分で書いててナゾだ・・・。orz)
さっそく用意したのがコレ↓。
Public Enum ArithmeticOperation
None
Addition
Subtraction
Multiplication
Division
End Enum
演算の種類(なんも無し, +, -, ×, ÷)を表します。
んでもって、ⅰで入力されたのと、ⅱで入力されたのを覚えておくためのフィールドを作りますた。
Private _memo As Decimal
Private _operation As Calculator.ArithmeticOperation
さらに、ⅲの時に新しく入力できる(ⅰに続けざまに入力しない)ように、判断用のフィールドも作りました。
Private _nextInputIsNew As Boolean
で、初期化メソッドを修正して
Public Sub Initialize()
Me.DisplayText = "0"
Me._memo = Decimal.Zero
Me._operation = ArithmeticOperation.None
Me._nextInputIsNew = True
End Sub
で、ⅱの部分のメソッドはこんな感じ?
Public Sub SetArithmeticOperation(ByVal op As Calculator.ArithmeticOperation)
Me._memo = Decimal.Parse(Me.DisplayText)
Me._operation = op
Me._nextInputIsNew = True
End Sub
お次は・・・えっと、ⅲの時のためにこないだ作った InputNumber メソッドを修正します。
Public Sub InputNumber(ByVal number As Decimal)
If Not Calculator.ValidInputNumbers.Contains(number) Then
Exit Sub
End If
Dim newText As String
If Me._nextInputIsNew Then
newText = "0"
Me._nextInputIsNew = False
Else
newText = Me.DisplayText
End If
If newText = "0" Then
newText = number.ToString
Else
newText &= number.ToString
End If
Dim parseValue As Decimal
If Decimal.TryParse(newText, parseValue) Then
Me.DisplayText = newText
End If
End Sub
んでんで、んでんで、ⅳのとこ~
お医者さん:「今回はもうやめておきなさい。」
ってことで、次回に。こなくそー!!