TabControlでTabIndexの場所のTABの色を変更したいのですが

解決


くまお  2022-03-01 11:40:27  No: 150084  IP: [192.*.*.*]

Tab数が1ケ月(28-31)ある場合(TabControl1.Tabsは、日付になってます)、画面の幅の関係で、一部が表示されるわけですが、数が多いとTabIndexの場所が見つけにくい(全部グレーですので(=ω=;))。TabIndexの場所のTab色を帰る事って出来ないのでしょうか?
TPanelを置いて、クリックしたときだけ、TabIndexのあるTabにの違うPanelを重ねて表示させるとかいろいろ試しましたが。。。FormShowの時は、どうしようもなく、隠れているTabを←→で移動するときも、イベントが取れませんし、クリックしないとX軸の場所もとって来れないし。良い案がありましたらよろしくお願いします。

編集    削除
くまお  2022-03-01 11:48:08  No: 150085  IP: [192.*.*.*]

TabIndexの場所のTab色を帰る→変えるの間違いです( ̄□ ̄;) 

編集    削除
hiro  URL  2022-03-01 12:29:25  No: 150086  IP: [192.*.*.*]

過去ログをご参照ください。

過去ログに明記されていませんでしたが、TabControlのOwnerDrawプロパティをTrueにする必要があります。

編集    削除
take  2022-03-01 12:32:12  No: 150087  IP: [192.*.*.*]

TabControlにはありませんが、その上位クラス TCustomTabControlには
継承用のイベントとして OnDrawTab が用意されていますので
これを利用すればTabの描画を変えることが出来ます。

編集    削除
くまお  2022-03-01 12:38:13  No: 150088  IP: [192.*.*.*]

申し訳ありません。過去ログは見たのですが、現在delphi10.4 , delphi7 ,denphi3 で作業しています。delphi10.4であれば、問題ないのですが、今回はDelphi3当時の物を加工しなくてはならず、グリッドの問題で、10.4に移植出来ないのが現状です。
パーフェクトグリッドという物を使っており、これがネックで移植出来ません(><)
1レコード2段表示の必要があり、しかもあっちこっちで使われている関係上、Delphi3でTabControlのtab色を変更せざるを得ません。よろしくお願いします。

編集    削除
take  2022-03-01 13:04:56  No: 150089  IP: [192.*.*.*]

Delphi3はさすがに厳しいですが
タブの描画タイミングで WM_ERASEBKGND が送られますので
これに反応して描画すれば背景だけなら変えられるかも

参考ページ
https://theroadtodelphi.com/2012/04/12/creating-colorful-tabsheets-with-the-vcl-styles/

編集    削除
igy  2022-03-01 21:37:55  No: 150090  IP: [192.*.*.*]

試していませんが、
http://scan.jp/
で、大野さんが公開されている 
「Delphi 3 Q&A 150選」(大野元久著、株式会社ビレッジセンター出版局)
のP.127には、
オーナー描画機能を追加したTabControlEx、PageControlExコンポーネント
に関する記載があるようです。

編集    削除
くまお  2022-06-29 14:04:17  No: 150296  IP: [192.*.*.*]

昔のDELPHIでは無理があるようです。皆さん、ありがとうございました。

編集    削除