あなたの習慣について教えてください!!

VB6.0でタイピングゲームを作る事は可能でしょうか?
もし可能であれば、ボタンをキー配列分用意しないといけませんが、押すキー(アルファベット)によって、ボタンを判別させることは可能でしょうか?

例えば、ボタンを一つ用意し、以下のプログラムでアルファベットのAが押された時に通るようにしたい場合はどうすればよいのでしょうか?

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)

End Sub

A 回答 (5件)

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)


'Aだったら
If KeyCode = vbKeyA Then
'主処理
End If
End Sub

となりますかね。(^^)
でもこれだと コマンドボタンの上にフォーカスが来ているときじゃないと反応しないのでタイピングを作成するなら Form_KeyDown のほうが良いかもしれません。
    • good
    • 0

Form上に1つコマンドボタンを貼りつけ、それをコピーしてコマンドボタンを増やす。

2つ目の時に、コントロール配列にしますかと聞いてくるので「はい」。
コマンドボタンの各Captionを「a,b,c,d・・・」と設定する。
最初のコマンドボタンをダブルクリックして
Private Sub Command1_Click(Index As Integer)
s = Array("a", "b", "c", "d")
MsgBox s(Index)
End Sub
とする。
Form上の「a」のボタンをクリックすると「a」と表示できる。
参考になれば。
    • good
    • 0

補足ですが,


私の場合,なるべくフォーム中に入れる「フォーカスを受け取れるオブジェクト」を極力減らすようにしています。例えば,フォーム中のフォーカスを受け取れるオブジェクトはPicturebox1個だけにして,そこにKeyDownを付ける。文字表示などはすべてLabelとかのフォーカスの受け取れないオブジェクトにする。とかです。
また,その「フォーカスを受け取れるオブジェクト」は,できればCommandButtonはやめたほうがいいです(Enterキーやスペースキーに反応してしまうからです)。
    • good
    • 0

Keycodeを取っているのでキーコードで判断されたらいかがですか?


そうしておけば65から91までしか受けつけないとか制御しやすいでしょう。
しかし、一番の難関は2文字同時に押した時とかローマ字カナ変換などの面倒な所でしょう。
ちなみに
A-Zまでを入力してEntを押すと掛かった秒数を表示するプログラムを1行で組んだ事があります。
頑張ってください。
    • good
    • 0

VB6.0、5.0の


コマンドボタン、
オプションボタン、
コンボボックスなど、
VB標準のOCX(コントロール)は
KeyDown,KeyPress,KeyUpイベントにバグ?
があります。
実際、
それぞれのイベントが呼び出されないです。
Picturebox+Labelで
画面を表示し、
Private Sub Form_KeyPress(KeyAscii As Integer)
Dim intX1 As Integer
Dim intX2 As Integer
Dim intX3 As Integer
Dim intX4 As Integer
intX1 = Instr(1, _
"1234567890-^\", _
Ucase$(Chr$(KeyAscii)), _
vbTextCompare)

intX2 = Instr(1, _
"QWERTYUIOP@[", _
Ucase$(Chr$(KeyAscii)), _
vbTextCompare)

intX3 = Instr(1, _
"ASDFGHJKL;:]", _
Ucase$(Chr$(KeyAscii)), _
vbTextCompare)

intX4 = Instr(1, _
"ZXCVBNM,./", _
Ucase$(Chr$(KeyAscii)), _
vbTextCompare)

If intX1 > 0 Then
MsgBox "1行目の左から" & _
Format$(intX) & _
"個目のキーが押されました。", vbOkOnly
End If
If intX2 > 0 Then
MsgBox "2行目の左から" & _
Format$(intX) & _
"個目のキーが押されました。", vbOkOnly
End If
If intX3 > 0 Then
MsgBox "3行目の左から" & _
Format$(intX) & _
"個目のキーが押されました。", vbOkOnly
End If
If intX4 > 0 Then
MsgBox "4行目の左から" & _
Format$(intX) & _
"個目のキーが押されました。", vbOkOnly
End If
End Sub

というのを
ステップ実行して動きを確かめてみてはどうでしょう?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!