PageControlのImagesにImageListを指定して、タブの部分にImageを使用しています。
このとき、選択されているタブだけ色を変えたいのですがうまくいきません。
ImagesのbkColorを変更すると、タブ全体の色が変わってしまいます。
Imageを使用しつつ、選択中のタブの色を変更する方法はありますか?
□試したこと
https://www.petitmonte.com/bbs/answers?question_id=2258
ここを参考にしたのですが、Imageをタブに使用する場合にOwnerDrawをTrueにすると、タブに設定したImageが消えてしまいます。
代案として、選択中のタブのHighlightedをTrueにすることを考えたのですが、
Highlightの色が紺以外に変更できず、ハイライト中の画像がひどいことになるので諦めました。
OwnerDrawがTrueならImageが描画されないのは当然です。
Imageを自前で描画しましょう。
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
if Active then
begin
//アクティブ色
Control.Canvas.Brush.Color :=clRed;
Control.Canvas.FillRect(Rect);
end;
//TabIndex = ImageIndexだと仮定して
ImageList1.Draw(Control.Canvas, Rect.Left, Rect.Top, TabIndex);
end;
>>みんみんさん
回答ありがとうございます。OwnerDrawの意味を理解しないまま、書いていた通りに進めていました。
ツイート | ![]() |