VB6SP6+Ac2k XpHome
現状FormのKeyPreviewをTrueにしてファンクションキー押下で
それぞれコマンドボタンに割り当てた処理をさせています。
しかしながら、TextBoxへ日本語入力中に変換のためF7やF8キーを押すと
日本語入力がクリアされ、それぞれの処理が走ってしまいます。
日本語入力中(文字がアンダーライン状態)のファンクションキー押下は無視したいのですが
入力確定後は有効となるようにするにはどうしたらよいのでしょうか。
キー押下はForm_KeyUpで処理しています。
その前(Form_KeyDown)に何とかすればよいのかと思いつつ
KeyCodeを0にしてみたのですが、現象は変わりませんでした。
日本語を入力できるTextBoxがFocusを受けた時にKeyPreviewをFalseにしてしまうと
入力確定後、ファンクションキー押下が当然効かなくなるし・・・
なにか良い回避方法をご存知の方いらっしゃったらご指導お願いします。
テキストボックスのIMEモードを”4−全角ひらがな”にされているなら
Form_KeyUpイベントの一番上に
If Text1.IMEMode = 4 Then Exit Sub
を書いてみたらどうですか?
>> あんびさん(某地域では凄い名前ですね)回答ありがとうございます。
それですと、文字確定後もファンクションキーを受け付けてくれませんよね。
文字確定後はKeyPreviewで先取りしたそれぞれの処理を行いたいのです。
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)
ツイート | ![]() |