2012-01-24 24 views
1

私は自分でVB6を学習し始めました。私は単純な電卓を作成しました、そして、私はそれが画面に "オペレータ"を表示することを望みます。VB6電卓:オペレータサインを画面に表示

たとえば、「1」を押して「プラス記号」を入力し、最後に「8」を押すと、計算機に「1 + 8」が表示されます。そして "等号"が押されると、電卓は "1 + 8 = 9"を表示するはずです。以下は

は私が作った非常にnoobのコードです:

Dim formula As String 
    Dim itemOne As Integer 
    Dim itemTwo As Integer 

    Private Sub btn1_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 1 
    End Sub 

    Private Sub btn2_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 2 
    End Sub 

    Private Sub btn3_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 3 
    End Sub 

    Private Sub btn4_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 4 
    End Sub 

    Private Sub btn5_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 5 
    End Sub 

    Private Sub btn6_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 6 
    End Sub 

    Private Sub btn7_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 7 
    End Sub 

    Private Sub btn8_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 8 
    End Sub 

    Private Sub btn9_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 9 
    End Sub 

    Private Sub btnDivide_Click() 
    itemOne = txtboxScreen.Text 
    txtboxScreen.Text = "" 
    formula = "/" 
    End Sub 

    Private Sub btnEqual_Click() 
    itemTwo = txtboxScreen.Text 
    If formula = "+" Then 
    txtboxScreen.Text = itemOne + itemTwo 
    ElseIf formula = "-" Then 
    txtboxScreen.Text = itemOne - itemTwo 
    ElseIf formula = "*" Then 
    txtboxScreen.Text = itemOne * itemTwo 
    ElseIf formula = "/" Then 
    txtboxScreen.Text = itemOne/itemTwo 
    End If 
    End Sub 

    Private Sub btnMinus_Click() 
    itemOne = txtboxScreen.Text 
    txtboxScreen.Text = "" 
    formula = "-" 
    End Sub 

    Private Sub btnPlus_Click() 
    itemOne = txtboxScreen.Text 
    txtboxScreen.Text = "" 
    formula = "+" 
    End Sub 

    Private Sub btnTimes_Click() 
    itemOne = txtboxScreen.Text 
    txtboxScreen.Text = "" 
    formula = "*" 
    End Sub 

    Private Sub btnZero_Click() 
    txtboxScreen.Text = txtboxScreen.Text & 0 
    End Sub 

答えて

1

私はあなたがbutton_clickイベントでテキストボックスに持っていた値で押されたボタンのオペレータサインを連結したいと思います。

のようなもの:

Private Sub btnPlus_Click() 
    txtboxScreen.Text = txtboxScreen.Text & " + " 
End Sub 

と同じボタンを、あなたはしたい表現評価を(使用して評価する

Private Sub btnEqual_Click() 
    txtboxScreen.Text = txtboxScreen.Text & " = " & Eval(txtboxScreen.Text) 
End Sub 

)は堅牢なソリューションではありませんが、それはだ評価その機能を実現する簡単な方法です。

+0

@Hossein EVALはMS Access Object Libraryにあります。 –

+0

ありがとう... 5年間のプログラミングと私はそれに気付かなかった。私はすでにvb6をオフにしていますが。 – Hossein

+0

@ YanovskiShai:あなたのコード= SubまたはFunctionで定義されていないコードでコンパイルエラーが発生しました – vurquee

3

番号ボタンにはcontrol arrayを使用することをおすすめします。これは非常に、特に複雑なプロジェクトのために、このインスタンス内のコードを簡素化します:あなたは、フォームの宣言セクションで変数を宣言しているときに代わりに薄暗いのプライベート使用する必要があります

また
Private formula As String 
    Private itemOne As Integer 
    Private itemTwo As Integer 

    Private Sub btnNumbers_Click(Index As Integer) 
      txtboxScreen.Text = txtboxScreen.Text & Index 
    End Sub 

''Remainder of your code goes here 

、。

+0

+1。強くお勧めします。 – Hossein

+0

@ MarkKram:Sir、あなたのコードを試しましたが、このコンパイルエラーが表示されます=プロシージャ宣言は、同じ名前のイベントまたはプロシージャの記述と一致しません。 – vurquee

+0

@covanova私が投稿したリンクの指示に従っていますか? –

1

最初の数値、2番目の数値、演算子(「数式」と呼ばれます)を別々に保存し、テキストボックスのテキストを個別に設定する必要があります。

Private Sub btn1_Click() 
    currentItem = currentItem & "1" 
    UpdateText() 
End Sub 

演算子ボタン:

Dim formula As String 
Dim itemOne As String 'This time this is string 
Dim itemTwo As String 'This time this is string 

Dim currentItem As String 'Will hold the current number being entered 
Dim Result As String 'This is string, too. 

あなたのすべてのボタンのようなコードになります。ここではそれを行うための一つの方法です

Private Sub btnPlus_Click() 
    itemOne = currentItem 
    formula = "+" 
    UpdateText() 
End Sub 

とequalsボタン:

Private Sub btnEqual_Click() 
    itemTwo = currentItem 
    If formula = "+" Then 
     'Str is optional, but Val's are necessary since 
     'itemOne and itemTwo are strings. 
     Result = Str(Val(itemOne) + Val(itemTwo)) 
    ElseIf ... 
     . 
     . 
     . 
    End If 
    UpdateText() 
End Sub 

まあ、への呼び出しに気づいたすべてのサブプロシージャの最後に?ここでは、次のとおりです。

Private Sub UpdateText() 
    txtboxScreen.Text = itemOne & formula & itemTwo 
    'If result is not empty, we will add the '=' part too 
    If Result <> "" Then 
     txtboxScreen.Text = txtboxScreen.Text & "=" & Result 
    End If 
End Sub 

あなたはまた""にすべての変数を設定しますAC/ONキーに興味があるかもしれません。

このメソッドはあまり素敵ではありませんが、エクスプレッションエバリュエーターなしで実行することができます。エクスプレッションエバリュエーターは、式全体をそのまま計算できます。 Evalはそのような関数であり、ネット上でその実装を見つけることができます。

+0

+1 ** **評価**。ありがとう! – vurquee