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

解決


くまお  2022-03-01 11:40:27  No: 150084

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


くまお  2022-03-01 11:48:08  No: 150085

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


hiro  URL  2022-03-01 12:29:25  No: 150086

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

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


take  2022-03-01 12:32:12  No: 150087

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


くまお  2022-03-01 12:38:13  No: 150088

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


take  2022-03-01 13:04:56  No: 150089

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

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


くまお  2022-06-29 14:04:17  No: 150296

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


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加