[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/04/23(Mon) 16:47
投稿者名:popo
Eメール:
URL :
タイトル:
KeyAscii
Private Sub txtNumber_KeyPress(KeyAscii As Integer)
If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
        If cmbFooter.Enabled = False Then
            cmbFooter.Enabled = True
            cmbFooter.SetFocus          '付けたし部分(参考)
        Else
            cmbFooter.SetFocus
        End If
    End If

End Sub


上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。どこが違うのでしょうか?教えてください。ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。

投稿時間:2007/04/23(Mon) 18:07
投稿者名:matsu
Eメール:
URL :
タイトル:
Re: KeyAscii
> Private Sub txtNumber_KeyPress(KeyAscii As Integer)
> If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
>         If cmbFooter.Enabled = False Then
>             cmbFooter.Enabled = True
>             cmbFooter.SetFocus          '付けたし部分(参考)
>         Else
>             cmbFooter.SetFocus
>         End If
>     End If
>
> End Sub
>
>
> 上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。
>どこが違うのでしょうか?教えてください。
>ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。

PUSHENTKEYはどのように定義していますか?
cmbFooter.SetFocusが実行されているのにフォーカスが移らないということですか?

投稿時間:2007/04/23(Mon) 18:10
投稿者名:popo
Eメール:
URL :
タイトル:
Re^2: KeyAscii
> > Private Sub txtNumber_KeyPress(KeyAscii As Integer)
> > If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
> >         If cmbFooter.Enabled = False Then
> >             cmbFooter.Enabled = True
> >             cmbFooter.SetFocus          '付けたし部分(参考)
> >         Else
> >             cmbFooter.SetFocus
> >         End If
> >     End If
> >
> > End Sub
> >
> >
> > 上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。
> >どこが違うのでしょうか?教えてください。
> >ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
>
> PUSHENTKEYはどのように定義していますか?
> cmbFooter.SetFocusが実行されているのにフォーカスが移らないということですか?


Const PUSHENTKEY As Integer = 13    'EnterKey のように定義されています。
cmbFooter.SetFocusが実行されているのにフォーカスが移らないのです。
ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
すごく疑問に思います。

投稿時間:2007/04/24(Tue) 09:28
投稿者名:matsu
Eメール:
URL :
タイトル:
Re^3: KeyAscii
> > > Private Sub txtNumber_KeyPress(KeyAscii As Integer)
> > > If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
> > >         If cmbFooter.Enabled = False Then
> > >             cmbFooter.Enabled = True
> > >             cmbFooter.SetFocus          '付けたし部分(参考)
> > >         Else
> > >             cmbFooter.SetFocus
> > >         End If
> > >     End If
> > >
> > > End Sub
> > >
> > >
> > > 上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。
> > >どこが違うのでしょうか?教えてください。
> > >ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> >
> > PUSHENTKEYはどのように定義していますか?
> > cmbFooter.SetFocusが実行されているのにフォーカスが移らないということですか?
>
>
> Const PUSHENTKEY As Integer = 13    'EnterKey のように定義されています。
> cmbFooter.SetFocusが実行されているのにフォーカスが移らないのです。
> ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> すごく疑問に思います。

cmbFooterのGotFocusイベントで何か処理はしてないですか?
何も処理していないのであれば、GotFocusイベントにブレークポイントを設定して
確認してみてはどうでしょうか。

投稿時間:2007/04/24(Tue) 09:39
投稿者名:カズ
Eメール:
URL :
タイトル:
Re^4: KeyAscii
> > > > Private Sub txtNumber_KeyPress(KeyAscii As Integer)
> > > > If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
> > > >         If cmbFooter.Enabled = False Then
> > > >             cmbFooter.Enabled = True
> > > >             cmbFooter.SetFocus          '付けたし部分(参考)
> > > >         Else
> > > >             cmbFooter.SetFocus
> > > >         End If
> > > >     End If
> > > >
> > > > End Sub
> > > >
> > > >
> > > > 上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。
> > > >どこが違うのでしょうか?教えてください。
> > > >ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> > >
> > > PUSHENTKEYはどのように定義していますか?
> > > cmbFooter.SetFocusが実行されているのにフォーカスが移らないということですか?
> >
> >
> > Const PUSHENTKEY As Integer = 13    'EnterKey のように定義されています。
> > cmbFooter.SetFocusが実行されているのにフォーカスが移らないのです。
> > ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> > すごく疑問に思います。
>
> cmbFooterのGotFocusイベントで何か処理はしてないですか?
> 何も処理していないのであれば、GotFocusイベントにブレークポイントを設定して
> 確認してみてはどうでしょうか。

cmbFooterのGotFocusイベントはプログラム中に存在しません。どのようなアルゴリズムを挿入すればよいでしょうか?

投稿時間:2007/04/24(Tue) 10:48
投稿者名:matsu
Eメール:
URL :
タイトル:
Re^5: KeyAscii
> cmbFooterのGotFocusイベントはプログラム中に存在しません。どのようなアルゴリズムを挿入すればよいでしょうか?

cmbFooterが存在するフォームモジュール内に以下のコードを追加してやれば
フォーカスを取得した時点でメッセージボックスが表示されるはずです。

Private Sub cmbFooter_GotFocus()
    MsgBox "cmbFooter_GotFocus"
End Sub

投稿時間:2007/04/24(Tue) 10:55
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
老婆心ながら
> cmbFooterが存在するフォームモジュール内に以下のコードを追加してやれば
> フォーカスを取得した時点でメッセージボックスが表示されるはずです。

フォーカス/キーボード/マウス関連の処理追跡の場合、MsgBox を使うのは問題があるかと。
その時点で、処理の流れが中断されてしまいますので、確認だけなら Debug.Print を
使った方が無難かと思います。
(exe実行時なら、ListBox に AddItem するとか、App.LogEvent を使うなど)

逆に、処理の流れを中断したいというのであれば、ブレークポイントを使った方が
追跡は容易かと思います。

投稿時間:2007/04/24(Tue) 14:38
投稿者名:matsu
Eメール:
URL :
タイトル:
Re: 老婆心ながら
> > cmbFooterが存在するフォームモジュール内に以下のコードを追加してやれば
> > フォーカスを取得した時点でメッセージボックスが表示されるはずです。
>
> フォーカス/キーボード/マウス関連の処理追跡の場合、MsgBox を使うのは問題があるかと。
> その時点で、処理の流れが中断されてしまいますので、確認だけなら Debug.Print を
> 使った方が無難かと思います。
> (exe実行時なら、ListBox に AddItem するとか、App.LogEvent を使うなど)
>
> 逆に、処理の流れを中断したいというのであれば、ブレークポイントを使った方が
> 追跡は容易かと思います。

その通りですね。
Private Sub Combo1_GotFocus()
End Sub
を追加して、End Subにブレークポイントを設定した方がフォーカス取得後の動作も
デバッグしやすいですね。

投稿時間:2007/04/24(Tue) 10:55
投稿者名:カズ
Eメール:
URL :
タイトル:
Re^5: KeyAscii
> > > > > Private Sub txtNumber_KeyPress(KeyAscii As Integer)
> > > > > If txtNumber.Text <> "" And KeyAscii = PUSHENTKEY Then
> > > > >         If cmbFooter.Enabled = False Then
> > > > >             cmbFooter.Enabled = True
> > > > >             cmbFooter.SetFocus          '付けたし部分(参考)
> > > > >         Else
> > > > >             cmbFooter.SetFocus
> > > > >         End If
> > > > >     End If
> > > > >
> > > > > End Sub
> > > > >
> > > > >
> > > > > 上記のプロシージャを実行してもtxtNumberからcmbFooterにマウスのフォーカスが移りません。
> > > > >どこが違うのでしょうか?教えてください。
> > > > >ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> > > >
> > > > PUSHENTKEYはどのように定義していますか?
> > > > cmbFooter.SetFocusが実行されているのにフォーカスが移らないということですか?
> > >
> > >
> > > Const PUSHENTKEY As Integer = 13    'EnterKey のように定義されています。
> > > cmbFooter.SetFocusが実行されているのにフォーカスが移らないのです。
> > > ちなみに別の同じようなプログラムではこのコードで正しくフォーカスが移ります。
> > > すごく疑問に思います。
> >
> > cmbFooterのGotFocusイベントで何か処理はしてないですか?
> > 何も処理していないのであれば、GotFocusイベントにブレークポイントを設定して
> > 確認してみてはどうでしょうか。
>
どのようなcmbFooterのGotFocusイベントを挿入すればよいでしょうか?
ちなみにtxtNumberのLostFocusは下記のようになっています。

Private Sub txtNumber_LostFocus()
    If txtNumber.Text <> "" Then
        If cmbFooter.Enabled = False Then
            cmbFooter.Enabled = True
            cmbFooter.SetFocus
        Else
            cmbFooter.SetFocus
        End If
    End If
End Sub