Commandに焦点を合わせないようにするためには?

解決


asl  2003-04-30 00:45:36  No: 106993  IP: [192.*.*.*]

Commandをフォームに設置するとForm_KeyDownが動かなくなります。

Commandボタンの周りにある黒い奴をどうにかして外せませんか?
そして、フォームでkeyDown操作を行わせたいです。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Label1 = Chr(KeyCode)
End Sub

編集 削除
Say  2003-04-30 06:56:42  No: 106994  IP: [192.*.*.*]

ボタンの絵のImageコントロールを配置してはいかがでしょう?

編集 削除
nanashi  2003-04-30 14:31:07  No: 106995  IP: [192.*.*.*]

フォームの表示領域の外にTextBoxなどを置いて最初のフォーカスをそのテキストボックスにしてみるとか。

編集 削除
たかみちえ  URL  2003-04-30 20:22:33  No: 106996  IP: [192.*.*.*]

KeyDownに効くかどうかはわかりませんけど…。
KeyPreview(フォームのプロパティ)ってどうでしょうか?
以前確かこれを切り替えて、うまくやれた記憶がありますけど。

編集 削除
DotL  2003-05-01 00:04:34  No: 106997  IP: [192.*.*.*]

たかみちえさんの言う通りフォームのKeyDownを受け取りたいだけならば、
フォームのKeyPreviewをTrueにすればよいのですが、フォーカスも当てたくないならば、いくつか方法がありますがnanashiさんの方法が簡単だと思います。

編集 削除
asl  2003-05-01 18:49:52  No: 106998  IP: [192.*.*.*]

みなさんの意見を取り入れて色々考えてやって見たのですが悩んでいます。プログラムの過程でそのコマンドボタンを押すためnanashiさんのような方法ではできませんでした。このコマンドボタンを押した時、コマンドボタンから黒い奴を外すが出来るような奴はないですか?

タイピングソフトを作っているのですが。コマンドボタンは3つ、開始キーとリタイアキーと終了キーで、
エンターを押すと開始キーが動作しフォームに打つ文字を表示させてゲームが開始される。エスケープキーを押すとリタイアキーが動作してゲームをリタイアする。開始キーが押されてゲームが開始されたときはエスケープは押せない。ゲーム開始されたら60秒間でゲームが終わるまで開始ボタンは押せない。といった具合です。

編集 削除
とおりすがり  2003-05-02 09:21:59  No: 106999  IP: [192.*.*.*]

基本的にはキー操作ができ、ボタンのクリックイベントも起こしたいのでしょ?
だったら、Sayさんが述べているようにボタンの画像を埋め込み、nanashiさんの述べている事を行なったらいいのでは?

例えば、ImageコントロールとLabelコントロールを貼ってこんなコードを書いてみました。
Private Sub Form_KeyPress(KeyAscii As Integer)
    Label1.Caption = Chr(KeyAscii)
    Select Case KeyAscii
        Case vbKeyReturn
            Label1.Caption = "Enterが押されたよ"
        Case vbKeyEscape
            Label1.Caption = "Escが押されたよ"
    End Select
End Sub
Private Sub Image1_Click()
    Label1.Caption = "Image1_Click!"
End Sub

60秒の制御はTimerコントロールとフラグ等を使ってKeyPressの所で制御してみては?

編集 削除
nanashi  2003-05-02 10:46:10  No: 107000  IP: [192.*.*.*]

ゲーム動作中はボタンのEnabledをFalseにすれば良いんじゃないですか?
Falseにすると困るならゲームが始まったら別のコントロールにフォーカスを移すとか。

編集 削除
asl  2003-05-04 03:44:34  No: 107001  IP: [192.*.*.*]

KeyPressで上手くいきました。みなさんどうもありがとう御座います。勉強しなおしてきます。

編集 削除
asl  2003-05-04 03:44:56  No: 107002  IP: [192.*.*.*]

解決

編集 削除