• ベストアンサー

VB6で電卓を作っているのですが誰か教えてください

コマンドボタンからの入力は出来ているのですが、キーボードからの入力が出来ません・・・何か良い方法はないでしょうか? 例えば、キーボードで演算子の+を押すとコマンドボタンの+を押したことと同じになればと考えています。

質問者が選んだベストアンサー

  • ベストアンサー
  • emsuja
  • ベストアンサー率50% (1031/2047)
回答No.3

一度下記のようなルーチンを作った事があります。 常に Command1(n) で押された数字は Text1 に表示して FOCUS は Text1 に戻します。 Command2(n) は 四則演算ボタンです Private Sub Text1_KeyPress(KeyAscii As Integer)  Select Case KeyAscii   Case 48 To 57    ' 数字キー    Call Command1_Click(KeyAscii - 48)   Case 61      ' = キー    Call Command2_Click(0)   Case 43     ' + キー    Call Command2_Click(1)   Case 45      ' - キー    Call Command2_Click(2)   Case 42     ' * キー    Call Command2_Click(3)   Case 47     '/ キー    Call Command2_Click(4)   Case 8     ' BackSpace    'カーソル位置から一文字前の数字を削除する処理   Case 13     'Enter キー    Call Command3_Click  End Select  KeyAscii = 0 End Sub カーソルの位置が TextBox に表示されますので数字の挿入処理も可能です

teruteru2
質問者

お礼

回答ありがとうございます。 なるほど、これなら分かりやすいですね(^^)

その他の回答 (3)

回答No.4

補足と言うか余談と言うか… KeyPressでは「文字コード」が取得できますが、KeyDown等では 「キーコード」が取得できます。 KeyDownで処理する場合、テンキーの数字の「キーコード」と、 そうでない(アルファベットの上の横並びの)数字の「キーコード」は、 違いますので、注意が必要です(両方に対応する必要がある)。 同様に、大きいEnterキーと、テンキー部の小さいEnterキーでは キーコードが違いますし、「+」なども違います (「+」の場合は更に、「;」のキーコードとKeyDownの引数「Shift」とを  絡めて判定する必要がある)。 なお、大体のキーコードは、ヘルプ(MSDN)の「キー コード定数」に 載っていますが、「;」のキーコード等、一部は載っていません。 これらについては、簡単な(キーコードを表示するだけとかの)プログラムを 作成して、実際に確認すればいいと思います。 …でもまぁ面倒なので、KeyPressで判定できる文字は全てKeyPressで 処理した方が、楽でしょうね。

teruteru2
質問者

お礼

確かに面倒ですね・・・なるべくKeyPressで処理してみます。 回答ありがとうございました。

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

フォームのKeyPreviewをTrueにして、フォームのKeyDownで処理する場合。 >コマンドボタンからの入力は出来ているのですが 各コマンドボタンからの処理で Private Sub keyPlus_Click() MsgBox "+" End Sub Private Sub keyMinus_Click() MsgBox "-" End Sub みたいなのがあるだろうから Private Sub Form_KeyPress(KeyAscii As Integer) Select Case Chr(KeyAscii) Case "+": keyPlus_Click Case "-": keyMinus_Click End Select End Sub で処理する。 deleteキーなどはKeyPressでは捕まえられないので、必要なら Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyDelete: MsgBox "delete" End Select End Sub とかで処理する。

teruteru2
質問者

お礼

回答ありがとうございます。 KeyPressでは制限があるのですね。すべてKeyPressで作ろうとしていたので、KeyDownも使用してみます。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ボタンのキャプションプロパティで設定する文字列を &+ といった具合にすれば そのボタンのClickイベントが ALTキーと+キーを押した場合に実行されます この場合 +と _ がボタンに表示されます 別の手段としては Formの KeyPreviewプロパティをTrueにして コントロールより先に Formでキー入力を処理させます FormのKeyDownイベントなどで if (( Shift = 0 ) and (KeyCode = vbKeyAdd)) or _   ((Shift and vbShiftMask ) And ( KeyCOde = 187 ) ) then   ' + ボタンが押された場合の処理 end if といった具合に処理を記述しましょう vbKeyAddはテンキーの『+』です KeyCode=187はメインキーボードの『れ』のキーのコードです

teruteru2
質問者

お礼

回答ありがとうございます。 キーコードでそのように処理できるのを始めて知りました。ぜひ、参考にさせていただきます(^^)

関連するQ&A

  • VBについて

    Visual Basicで1つのオブジェクトの中にフォームを2つ作った時、片方のフォームに入力した情報を処理し、もう1つのフォームでその結果を見るにはどうすれば良いのでしょうか?  例えば、1つのフォームにテキストボックスAとコマンドボタンを貼り付け、もうひとつにテキストボックスBを貼り付けて、テキストボックスAにXと入力し、コマンドボタンを押すとテキストボックスBにYと入力されるような事です。  分かる方、是非教えてください。

  • 電卓を作りたいので教えてください。

    電卓を作りたいので教えてください。 まずはVisual Basic 2005でプラスだけの電卓を作りたいと思います。 まず数値ボタンを0~9まで作って、あとは演算ボタン(+・=)とテキストラベルを用意します。あと合計値を保管する合計変数も。 そこまではわかります。 パーツ一覧  0  1  2  3  4  5  6  7  8  9  +  =  合計  テキストラベル GUIを作って、、、 あとは数値ボタンを押してテキストラベルに数値を代入して表示します。    ・・・テキストラベル:12 合計:0 演算ボタンが押されたら合計変数に代入します。テキストラベルの値→合計変数 ・・・テキストラベル:12 合計:12 数値ボタンを押してテキストラベルに代入して表示します。          ・・・テキストラベル:8 合計ボタンを押すと合計変数に代入して、合計変数+演算ボタン さらに、合計をテキストラベルに代入します。                ・・・テキストラベル:20 合計:20 こんな感じでいいですか? なにか問題があればご指摘くださいmm あとコレクション・列挙型・構造体を使いたいのですが、この電卓だとどの辺で使えますか? もっと難しいアプリでないとこれらは必要ないですか? 速くコレクション・列挙型・構造体を使いたいのですが。。

  • キーボードの電卓

    私は、NECバリュースターの、VC800J/6のパソコンを使っています。キーボードの数字のボタンは、横並びと、電卓形式と2種類ありますが、ふとした瞬間、電卓方式での入力ができないときがあります。どうすればいいのでしょうか?横並びの方は確実に入力ができます。

  • 電卓プログラムを作りたい。

    わたしは、プログラムの初心者なのですが、力不足でプログラムが作れないのでご協力おねがいします。 データをすべて整数で演算子は、1個だけ用い、標準入力を受け取り、リターンキーが押されると、その解答を標準出力に表示するような、加減乗除の四則演算と整数剰余の演算を繰り返し行うことが可能な電卓プログラムを作りたいのですが、、、。

  • VBでキーボードを使わずに"Ctrl+A"をしたい!

    初歩的な質問で申し訳ないのですが、VBでキーボードを使わずに、何かコマンドボタンを押した時に"Ctrl+A"などを実行したいです。VBでコーディングしていけば同じような機能は実現できるのですが、もっと簡単な方法があるような気がしてなりません・・。このボタンを押したら"Ctrl+A"を実行する、みたいなコーディングはどのようにすれば実現できるのでしょうか?

  • 簡易電卓のつくり方

    .  タグを用いて,以下のような整数四則演算用プログラムをつくっています。  ページを読み込むと文字列入力ダイアログ( prompt('') )が表示され,そこに入力された式を計算して,結果を警告ダイアログ( alert('') )で表示し,そしてページを読み込んだ時の処理に戻す。  どなたか方法の分かる方お願いします! ※ 参考: <input type=text id=hta><input type=button onclick=hta.value=eval(hta.value)>

  • VB6 ユーザーコントロールのフォーカス無効

    現在VB6 SP5にて、テンキーのようなユーザーコントロールを作成しています。 コマンドボタンを配置し、押された場合にキーボードの入力をエミュレートするような作りにしています。 問題は、作成したコントロールをフォームに貼り付けて使用する場合に、マウスでクリックしたキーに応じて、現在フォーカスのあるテキストボックスなどに入力したいのですが、ユーザーコントロールのコマンドボタンにフォーカスが移ってしまい、うまくいきません。 ユーザーコントロールのCanGetFocusプロパティをFalseに設定しようとすると、「フォーカスを取得できないコントロール上に配置された子コントロールは、フォーカスを取得することができません。」とエラーが表示されてFalseにできません。 フォーカスを無効にし、このような機能を実現するには何か良い方法ありますでしょうか?

  • アクセスの演算フォーム(非連結)でデータをクリアするには。

    アクセスの演算フォーム(非連結)で1つのボタンで入力した値をクリアにするにはどうしたらよいでしょうか。いつもはコマンドボタンウィザードで作っているのであまり詳しくありません。非連結だとウィザードの選択肢に削除というのがないのですが。よろしくお願いいたします。

  • VBでのプログラミング

    こんにちは。Visual Basic6を使っている初心者です。 2択で心理テストを作りたいと思っています。 トップページの開始ボタン(コマンドボタン)を押した後、そのまま同じウインドウに選択肢を書いたふたつのコマンドボタンを表示したいのですが、本を読んでみてもそれらしい方法が見当たりません(難しい方法なんでしょうか・・・) 表示させる方法をご存知の方がいればぜひ教えてください。 複数のプロジェクトやフォームを用意する必要がある場合、それらをどうやって組み合わせるのかも教えてください!お願いします。

  • VBで電卓の=

    VisualBasicで電卓を作っています。 それで11桁数字を入力すると”数字は10桁まで”と表示されるようにする事と=がちゃんと機能するようなコードが知りたいんです. 基本的なことしか習っていないのでC言語はわかりません。 とても困ってます。教えてください。 (^人^)お、ね、が、い