tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルフォーカスの現在の位置
記事No11245
投稿日: 2008/01/28(Mon) 10:27
投稿者
Controlを使用してENTERによるフォーカス移動をしています。
フォーカスがあるTEXTBOXのBACKCOLORを変更しているのですが、
マウス・TABでの移動時に、うまく変更できません。
マウス・TABでの移動後に文字でも入力すれば
Form_KeyPress・Form_KeyDownで変更出来るのですが
移動後すぐに変更するには、やはり各TEXTBOXのGOTFOCUSを
使用するしか方法はないのでしょうか?
他には、あまり使いたくないんですがTIMERを使う方法しか思いつかず
悩んでいます。
1画面に張り付いているTEXTBOXが多く長文になってしまうので
それを避けたいのもあるのです。

教えてください。宜しくお願いします。

[ツリー表示へ]
タイトルRe: フォーカスの現在の位置
記事No11247
投稿日: 2008/01/28(Mon) 11:44
投稿者いな
> マウス・TABでの移動後に文字でも入力すれば
> Form_KeyPress・Form_KeyDownで変更出来るのですが

この場合の
Formのプロパティ、KeyPreviewはどう(True Or False)なっていますか?

[ツリー表示へ]
タイトルRe: フォーカスの現在の位置
記事No11250
投稿日: 2008/01/28(Mon) 13:01
投稿者花ちゃん
> 1画面に張り付いているTEXTBOXが多く長文になってしまうので
> それを避けたいのもあるのです。

TextBox は配列になっていないのですか? 上記が目的なら配列にした方が簡単なような
タイマーを使うのがいやなら、サブクラス化してメッセージを捕まえるとか(これも
結構大変)

[ツリー表示へ]
タイトルRe^2: フォーカスの現在の位置
記事No11253
投稿日: 2008/01/28(Mon) 13:11
投稿者
いなさん・花ちゃんさん返信ありがとうございます。

> Formのプロパティ、KeyPreviewはどう(True Or False)なっていますか?
formのKeyPreview は trueです。

> TextBox は配列になっていないのですか? 上記が目的なら配列にした方が簡単なような
> タイマーを使うのがいやなら、サブクラス化してメッセージを捕まえるとか(これも
> 結構大変)
配列にはなっていません。
結構大変だって聞いていたのでサブクラス化は
やったことがないんです。

[ツリー表示へ]
タイトルRe^3: フォーカスの現在の位置
記事No11254
投稿日: 2008/01/28(Mon) 13:17
投稿者YK
クラスモジュールで
WithEventsを利用したらどうでしょう。

[ツリー表示へ]
タイトルRe^4: フォーカスの現在の位置
記事No11255
投稿日: 2008/01/28(Mon) 14:05
投稿者
YKさん 返信ありあがとうございます。

> クラスモジュールで
> WithEventsを利用したらどうでしょう。

WithEvents で出来ました。
今まで使ったことが無かったのですが、何とか思うように動きました。
WithEvents 過去ログから参照して自分なりに作ってみてたのですが
下記のようでしょうか?

Private Const LogCtrNum = 37
Private Ctr(LogCtrNum) As Control
Private WithEvents A As TextBox

Private Sub Form_Load()
   Call FocSet
End Sub

Private Sub FocSet()
    Set Ctr(0) = Txt0
    Set Ctr(1) = Txt1
    Set Ctr(2) = Txt2    
    ・
    ・
    ・
    Set Ctr(37) = Txt37
End Sub

Private Sub A_LostFocus()
    SE = Screen.ActiveControl.TabIndex
    ChgColor (SE)                         'BackColor変更
    Set a = Ctr(SE)
End Sub


いなさん 花ちゃんさん YKさん 本当にありがとうございました。

[ツリー表示へ]