tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルSSTABにあるテキストボックスのタブ移動について
記事No12106
投稿日: 2008/04/24(Thu) 00:51
投稿者ぴえ
SSTABのタブ1にA,Bとういうテキストボックスがあり、
タブ2にC,Dというテキストボックスがあると仮定します。

TabIndexをAから順に1,2,3,4と設定しています。

実行時、BでTabキーを押すと、フォーカスがどこかにいってしまいます。
Tabキーを押し続けるとAにフォーカスが戻ってきます。

タブを切り替えない限り、Tabキーを押し続けると、A→B→A→B・・・
とフォーカスが移動するようにしたいのですが、
どのようにすればよろしいのでしょうか。

VB6を使用しています。
とても簡単な事なのかも知れませんが、まだ駆け出しでして
どなたかご教授願います。

[ツリー表示へ]
タイトルRe: SSTABにあるテキストボックスのタブ移動について
記事No12108
投稿日: 2008/04/24(Thu) 06:52
投稿者花ちゃん
> タブを切り替えない限り、Tabキーを押し続けると、A→B→A→B・・・
> とフォーカスが移動するようにしたいのですが、
> どのようにすればよろしいのでしょうか。

下記ではどうでしょうか?
Private Sub BText_LostFocus()
   AText.SetFocus
End Sub

[ツリー表示へ]
タイトルRe: SSTABにあるテキストボックスのタブ移動について
記事No12109
投稿日: 2008/04/24(Thu) 11:02
投稿者いな
Tabを切り替えるイベントで、
他のTabに存在する項目のEnableプロパティをFalseにし、
選択したTabに存在する項目のEnableプロパティをTrueに
するとかでも対処可能かと・・・。

[ツリー表示へ]
タイトルRe: 補足
記事No12110
投稿日: 2008/04/24(Thu) 16:40
投稿者いな
> フォーカスがどこかにいってしまいます。

の補足として、MSDNには、
[VB5] SP2:タブ ダイアログのタブ上のコントロールがなくなる
http://support.microsoft.com/kb/167107
の問題で解説されていますが、

(一部引用)
タブ上のコントロールは一時的な保持領域 (-72960) にあるので、
Tab は表示されますが、タブ上のコントロールは表示されません。
(一部引用)

と言うことで、非表示となっているTab側にあるテキストボックスの
Leftプロパティを見てみると
値がマイナスになっているということが分かると思います。

つまり、SSTabの外に追いやられているわけです。
Debug.Printなどで書き出してみると、こんなことやってるんだっと
からくりが少し読めるかも・・・。

[ツリー表示へ]
タイトルRe: SSTABにあるテキストボックスのタブ移動について
記事No12111
投稿日: 2008/04/24(Thu) 23:51
投稿者ぴえ
> SSTABのタブ1にA,Bとういうテキストボックスがあり、
> タブ2にC,Dというテキストボックスがあると仮定します。
>
> TabIndexをAから順に1,2,3,4と設定しています。
>
> 実行時、BでTabキーを押すと、フォーカスがどこかにいってしまいます。
> Tabキーを押し続けるとAにフォーカスが戻ってきます。
>
> タブを切り替えない限り、Tabキーを押し続けると、A→B→A→B・・・
> とフォーカスが移動するようにしたいのですが、
> どのようにすればよろしいのでしょうか。
>
> VB6を使用しています。
> とても簡単な事なのかも知れませんが、まだ駆け出しでして
> どなたかご教授願います。

[ツリー表示へ]
タイトルありがとうございます。
記事No12112
投稿日: 2008/04/25(Fri) 00:00
投稿者ぴえ
花ちゃん様、いな様

返信ありがとうございます。
LostFocusを試してみたところうまくいきました。

>他のTabに存在する項目のEnableプロパティをFalseにし、
>選択したTabに存在する項目のEnableプロパティをTrueに
実際にコーディングしているプログラムでは、項目をとてもたくさん配置しており、大変そうなので試しませんでした。
テスト的なものを作成して試させていただきたいと思います。

補足については、よく理解できませんでした。なんとなくわかるような感じです。
せっかく書いていただいたのに申し訳ありません。
そのうちわかるようになりたいです。

また、お二人の回答をみて難しくなかったことに感心しております。
ようは、応用というか発想というか経験というか、ボキャ品で何言ってるのか伝わらないかもしれませんが。。

ありがとうございました。

[ツリー表示へ]
タイトルRe: ありがとうございます。
記事No12113
投稿日: 2008/04/25(Fri) 14:01
投稿者
> 実際にコーディングしているプログラムでは、項目をとてもたくさん配置しており、大変そうなので試しませんでした。

SSTABに表示領域と近いサイズのPictureBoxを
フラット・同背景色・枠なし・TabStopなしで配置して
その中に各コントロールを配置しておくと
PictureBoxのEnabledプロパティ操作だけで
その中の各コントロールのEnabledを操作したのと同じ効果が得られますよ。

PictureBoxは配列化させて、Indexを配置するTabと同じにしておけば
Tab切り替え時の連携も簡単になると思います。
一度お試しあれ^^

[ツリー表示へ]
タイトルRe^2: ありがとうございます。
記事No12114
投稿日: 2008/04/25(Fri) 15:05
投稿者いな
> SSTABに表示領域と近いサイズのPictureBoxを
> フラット・同背景色・枠なし・TabStopなしで配置して

なるほど、自分は良くFrameを使います。
今度、試しにやってみます。

今思えば・・・。

サンプル投稿用掲示板
http://hanatyan.sakura.ne.jp/patio/read.cgi?no=103

に文書番号 : 193021    SSTab で隠れているタブ上のコントロールにフォーカスが移動する
    http://support.microsoft.com/kb/193021/ja

に同様の症例がありましたね。

[ツリー表示へ]
タイトルRe^2: ありがとうございます。
記事No12141
投稿日: 2008/04/28(Mon) 23:16
投稿者ぴえ
> PictureBoxは配列化させて、Indexを配置するTabと同じにしておけば
> Tab切り替え時の連携も簡単になると思います。
> 一度お試しあれ^^

琴様、ありがとうございます。
なるほどと思いました。
やっぱり経験でしょうか。
言われていることは簡単なことなのに、私には思いつきません。
次に作成するプログラムに生かしたいと思います。

[ツリー表示へ]