掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TTabControlのタブを全て自前で描画するには? (ID:22890)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして、宜しくお願いします。 TTabControlのOnDrawTabイベントを使ってタブの描画を全て自前で描画したいと考えていますが、デフォルトで描画されるタブ選択時の枠などが消せないで困っています。 TDrawTabEvent型は以下のようになっていて、DefaultDrawが無いためにどのようにすればいいのかわかりません。 type TDrawTabEvent = procedure(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean) of object; ツールバー等ではDefaultDrawをFalseにすることで上記の事が実現可能なのですが、タブコントロールにデフォルトドローさせない方法はあるのでしょうか? それともう一つCustomDrawStateも無いので描画すべき状態がわかりませんので、下記のようなコードで状態を取得しようとしていますが、こちらもうまくいきません。 procedure(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean) var tcItem: TC_ITEM; begin with Control.Canvas do begin tcItem.mask := TCIF_STATE; SendMessage(Control.Handle, TCM_GETITEM, TabIndex, Integer(@tcItem)); Result := tcItem.dwState; if (Result and TCIS_BUTTONPRESSED) <> 0 then DoSomething else if (Result and TCIS_HIGHLIGHTED) <> 0 then DoSomething; TCIS_BUTTONPRESSEDの方はうまくいくのですが、TCIS_HIGHLIGHTEDの方がうまくいきません。HIGHLIGHTEDはホットトラックでマウスオーバーされている時に返されると思っているのですがあってますでしょうか? どちらかでもいいのでお答え頂けたら幸いです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.