- - PR -
TabコントロールのTab描画方法
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-11-27 13:38
こんにちわ。
日頃、参考にさしてもらっております。 今回は、Tabコントロールの描画方法について 質問させて頂きます。 開発環境は、Visual Studio .NET 2002(VC++)、 Windowsフォームを使って行います。 問題になっていることは、 フォーカスがあるTabの背景(見出し部分)に色をつけたいのです。 __________ |タブA|タブB|タブC| | |___|___|___ | | 処理としましては、 タブBに移動すれば、タブBの背景色が変わり、 タブAの背景色が元の色(灰色など)に戻る、 という仕掛けをつくりたいのです。 私が作成したアプリを実行すると、 起動時にまずタブAにフォーカスがあり、 そのままキーダウン処理やマウスクリック処理で フォーカスをタブ上で移動すると、 正常に背景色が変化します。 しかし、タブ以外のコントロールへ一回フォーカスを移し、 (例えば、タブA内の別のコントロールをクリック、など) 再度、タブへフォーカスを移すと 背景色があるタブとフォーカスが移ったタブで、 (背景色があるタブにフォーカスした場合は、このタブのみ) 背景色と表示文字列が消えてしまいます。 いろいろなイベント処理が関わってくると思うのですが、 正常に動作するようなアドバイスをお願い致します。 以下のようにコーディングしました。 (サイズ、ロケーション等は省きます)
分かりにくいとは思いますが、 宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2003-11-27 18:40
こんにちわ。諸農です。
こちらの環境が .NET 1.1 C#Builderで、同じ環境ではないので、 あまり参考にはならないような気もしますが。。
こちらでは単純にDrawItemイベントハンドラを使うだけで うまくいっているようです。
ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2003-11-27 20:25
優希です。
ありがとうございます。 早速、試してみたのですが、 フォーカスがあるタブ以外は タブの輪郭が表示されない現象に陥ります。 本来、タブが存在するで『あろう』個所をクリックすると、 そのタブのみが表示されます。 諸農和岳さんのコーディングされた 「tabControl1」は、DrawItemイベントハンドラの 引数から生成したTabControlと考えて宜しいですか? それと、 このタブに文字列を追加したいのですが、 何かよい方法がありますでしょうか? 私もいろいろ試してみますので、 何かあればご指摘ください。 宜しくお願い致します。 | ||||||||||||
|
投稿日時: 2003-11-27 21:20
優希です。
自己レスです。 タブに文字列の表示は、 Jubeiさんのコードに以下のコードを加えると 出来ました。
あと、タブの輪郭の表示なのですが、 タブの外観を設定するプロパティ[Appearance]を使って、 [Normal, Buttons, FlatButtons]のNormal以外にすれば、 多少、タブの境界線が出ますが、 ボタン型になってしまい、望みどおりではありません。 できれば、Normal時で境界線が出る方法があれば、 アドバイスの程、宜しくお願いします。 また、 この部分に関係が出てくるのか分かりませんが、 下記のタブA〜C以外のDの部分(タブではない部分)の 背景色を変更することは 可能なのでしょうか? __________ |タブA|タブB|タブC| D | |___|___|___ | | | ||||||||||||
|
投稿日時: 2003-11-27 22:27
こんにちわ。諸農です。
VS.NET2003/.NET v1.1の環境で行いました。
こんな感じでしょうか。。 輪郭の3Dと背景色はどうすればいいのかはちょっとわかりませんです。。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2003-11-27 23:23
こんばんは、meiです。
DrawItemイベントですが、これはページ毎に呼ばれると思うので、 1回について1つのページを描画する方が良いと思います。 (3ページあれば3回呼び出される) C#で申し訳ないのですが、サンプルコードを書いてみました。
優希さんの図にあったD領域ですが、 Cページを描画するタイミングで、Cページの右端からタブコントロールの右端まで、 また、高さはタブの高さと同じで描画すれば良いんじゃないかと思います。 如何でしょうか? | ||||||||||||
|
投稿日時: 2003-11-28 06:41
諸農です。
あらぁ!これは気付きませんでした。 いい事を教えていただきました(^.^) ありがとうございます。 ではでは(^^)/ _________________ 諸農和岳 Powered by Turbo Delphi & Microsoft Visual Studio 2005 十兵衛@わんくま同盟 http://blogs.wankuma.com/jubei/ | ||||||||||||
|
投稿日時: 2003-11-28 09:43
優希です。
諸農さん、meiさん ありがとうございました。 D領域の背景色の設定が出来ました。 タブの外観が決まった形しかないのが残念ですが、 それ以外が完成して満足しております。 また何かありましたら、 宜しくお願い致します。 |
1