VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/07/03(Sun) 23:24
投稿者Starfish
Eメール
URL
タイトルRe^3: Form_KeyDownについて

>ですが、バグ報告があったことは理解しました。ただ回避方法がないのは
>残念ですが。(読み足らない?)

 自動翻訳は、

>>解決方法
>>タブ コントロールにフォーカスがある場合、 2 のキー イベントをコードが無視するよう
>>コード記述の可能性があります。 これは、以前にキー イベントが発生したかどうか、
>>グローバル フラグ変数を表するために、利用することで実行できました。 これの以外、
>>この機能に依存するコードを記述するのを回避するのが最適なオプションです。

 適当に訳すと

解決方法
 もしもフォーカスがSSTabコントロールにあったら、2つ目のキーイベントを
無視するようにプログラムを書くことで、可能かも知れません。
そのキーイベントが以前に発生したかどうかをあらわすグローバルなフラグ変数
を利用することで、これを行うことができるかもしれません。
これのほかに、最良のオプションはこの機能性に依存するコードを書くことを
避けることです。

 なので、フラグをもって制御するか、SSTabを使った場合はKeyPreview機能を
使うなといっております。

 フラグを使った、例をあげておきます。

Dim mblnTab As Boolean

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    
    If Me.ActiveControl.Name = "SSTab1" Then
        mblnTab = Not mblnTab
        If Not mblnTab Then
            Debug.Print "無視" & CStr(KeyCode)
            Exit Sub
        End If
    Else
        mblnTab = False ' 念のため
    End If

    Debug.Print KeyCode
        
End Sub

 個人的には、SSTabは使わずに、レイアウトとかは大変ですが、TabStrip
を使用することを薦めておきます。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -