KeyPreview=True時の日本語入力


J2924  2005-06-03 00:33:31  No: 122171

VB6SP6+Ac2k XpHome
現状FormのKeyPreviewをTrueにしてファンクションキー押下で
それぞれコマンドボタンに割り当てた処理をさせています。
しかしながら、TextBoxへ日本語入力中に変換のためF7やF8キーを押すと
日本語入力がクリアされ、それぞれの処理が走ってしまいます。
日本語入力中(文字がアンダーライン状態)のファンクションキー押下は無視したいのですが
入力確定後は有効となるようにするにはどうしたらよいのでしょうか。
キー押下はForm_KeyUpで処理しています。
その前(Form_KeyDown)に何とかすればよいのかと思いつつ
KeyCodeを0にしてみたのですが、現象は変わりませんでした。
日本語を入力できるTextBoxがFocusを受けた時にKeyPreviewをFalseにしてしまうと
入力確定後、ファンクションキー押下が当然効かなくなるし・・・

なにか良い回避方法をご存知の方いらっしゃったらご指導お願いします。


あんび  2005-06-03 01:52:39  No: 122172

テキストボックスのIMEモードを”4−全角ひらがな”にされているなら
Form_KeyUpイベントの一番上に
If Text1.IMEMode = 4 Then Exit Sub
を書いてみたらどうですか?


J2924  2005-06-03 18:15:23  No: 122173

>> あんびさん(某地域では凄い名前ですね)回答ありがとうございます。

それですと、文字確定後もファンクションキーを受け付けてくれませんよね。
文字確定後はKeyPreviewで先取りしたそれぞれの処理を行いたいのです。


だんきち  2005-06-04 00:41:42  No: 122174

Private test As Boolean

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

    Select Case KeyCode
    Case vbKeyF7
        If test = True Then
            End
        Else
            test = True
        End If
    End Select
End Sub

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

    If KeyCode <> 118 Then
        test = False
    Else
        test = True
    End If

End Sub

改善の予知はありますが
なんとなく動きます。(TT)


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

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






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