PageControlのタブにImageを使用した場合の色変更について

解決


eshter  2008-05-27 00:22:32  No: 30798

PageControlのImagesにImageListを指定して、タブの部分にImageを使用しています。
このとき、選択されているタブだけ色を変えたいのですがうまくいきません。
ImagesのbkColorを変更すると、タブ全体の色が変わってしまいます。
Imageを使用しつつ、選択中のタブの色を変更する方法はありますか?

□試したこと
https://www.petitmonte.com/bbs/answers?question_id=2258
ここを参考にしたのですが、Imageをタブに使用する場合にOwnerDrawをTrueにすると、タブに設定したImageが消えてしまいます。

代案として、選択中のタブのHighlightedをTrueにすることを考えたのですが、
Highlightの色が紺以外に変更できず、ハイライト中の画像がひどいことになるので諦めました。


みんみん  2008-05-27 05:28:54  No: 30799

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;


eshter  2008-05-28 21:54:57  No: 30800

>>みんみんさん

回答ありがとうございます。OwnerDrawの意味を理解しないまま、書いていた通りに進めていました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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