最近VBを始めたばかりの初心者なのですが SSTaBと TabStripの違いがよくわかりません、SSTaBの方がデザインモードでそれぞれのタブを表示切替できて使いやすいのですが、TabStripの有用性はどこにあるのでしょうか?
また TabStripの場合それぞれのタブ上でのボタンなどの配置はどうすれば簡単にできるのでしょうか? どのタブを選択しているかに応じて 表示させたいボタンやテキストボックスの Visible をコードでいちいち True ,Falseにしてやるしかないのでしょうか?
環境は Win2000pro + VB6.0 です。
よろしくお願いします。
> 最近VBを始めたばかりの初心者なのですが SSTaBと TabStripの違いがよくわかりません、
Windows共通コントロール(コモンコントロール)群の一つに、「タブコントロール」という物が
あります。TabStripは、それをVBから使いやすいように、AcitveXコントロール化した物です。
根底にあるのは、OSの標準的なコントロールですので、動作が軽いのが特徴と言えます。
(その分、SSTabよりも使いにくい面もあるのですが…)
それに対する、Microsoft Tabbed Dialog Control(SSTab)ですが、実はこれ自体は
OSの標準コントロールではありません。そもそも、Microsoft社が開発したものではなく、
『Sheridan Software Systems』社からOEM供給されているコンポーネントです。
> TabStripの有用性はどこにあるのでしょうか?
例えばTabStripは、MultiSelectを設定する事で、同時に複数のタブを選択状態に
するようなアプリを作る事ができます。
また、SSTabには幾つかの問題がある事が知られているため、
TabStripを使われる方も多いようです。
(ただし、それらの問題の幾つかは、Service Packによって解決されていますけれどね)
> SSTaBの方がデザインモードでそれぞれのタブを表示切替できて使いやすいのですが、
SSTab上の他のタブに置かれているコントロールにも、
アクセスできてしまう事がある事に気を付けてください。
例えば、フォームにSSTabだけを配置し、その最初のタブにCommand1をおき、
2番目のタブにCommand2を置いておくとします。ここで、
Option Explicit
Private Sub Command1_Click()
Debug.Print Command1.Left, Command2.Left
MsgBox "1"
End Sub
Private Sub Command2_Click()
Debug.Print Command1.Left, Command2.Left
MsgBox "2"
End Sub
のようなコードを書いておきます。
これを実行し、最初のタブにあるCommand1を押します。("1"と表示されます)
ここまでは問題ないのですが、この後、Command1上で、キーボードの矢印キーを押すと、
『フォーカスが消えてしまう』という問題が発生します。
———正確には、フォーカスが消えたのではなく、別のタブ上に配置したはずの
Command2上に移動しているのです。そのため、さらにそのままスペースキーなどを
押すと、画面には表示されていないはずの Command2 を押せてしまう、という事になります。
> また TabStripの場合それぞれのタブ上でのボタンなどの配置はどうすれば簡単にできるのでしょうか?
TabStripはコンテナにはなれないので、ボタンなどを重ねて配置する事はできますが、
TabStrip自体にボタンを貼り付けるという事はできません。
そこで、ヘルプの『タブ ストリップ (TabStrip) コントロール』の項にあるサンプルのように、
Frameなどの別のコンテナコントロールを併用するのが一般的です。
つまり、ボタンやテキストボックスなどのVisibleを個別に修正するのではなく、
コンテナ自体のVisibleを編集する事で、その上にあるコントロールの表示/非表示を
一度に切り替える事ができるというわけですね。
魔界の仮面弁士さん レスありがとうございます。
SSTabとTabStripの背景や特徴など本当にわかりやすい説明で感謝します。
また SSTaBに対する注意点のご指摘も興味深かったです。
>> また TabStripの場合それぞれのタブ上でのボタンなどの配置はどうすれば簡単にできるのでしょうか?
>そこで、ヘルプの『タブ ストリップ (TabStrip) コントロール』の項にあるサンプルのように、
>Frameなどの別のコンテナコントロールを併用するのが一般的です。
>つまり、ボタンやテキストボックスなどのVisibleを個別に修正するのではなく、
>コンテナ自体のVisibleを編集する事で、その上にあるコントロールの表示/非表示を
>一度に切り替える事ができるというわけですね。
ヘルプは穴があくほど読んだのですが TabStripに関しては使用例の記述が無いためあの説明だけではイメージがつかめませんでした。Webでもあまり情報がなくごく一般的に使われているインターフェースなのになぜかなと思った次第です。
>コンテナ自体のVisibleを編集する事で、その上にあるコントロールの表示/非表示を
>一度に切り替える事ができるというわけですね。
これをヒントにもう少しがんばって見ます。
ありがとうございます。
ツイート | ![]() |