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

解決


asl  2003-04-30 09:45:36  No: 106993

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

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

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


Say  2003-04-30 15:56:42  No: 106994

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


nanashi  2003-04-30 23:31:07  No: 106995

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


たかみちえ  URL  2003-05-01 05:22:33  No: 106996

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


DotL  2003-05-01 09:04:34  No: 106997

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


asl  2003-05-02 03:49:52  No: 106998

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

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


とおりすがり  2003-05-02 18:21:59  No: 106999

基本的にはキー操作ができ、ボタンのクリックイベントも起こしたいのでしょ?
だったら、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 19:46:10  No: 107000

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


asl  2003-05-04 12:44:34  No: 107001

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


asl  2003-05-04 12:44:56  No: 107002

解決


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加