Проблема с TPageControl DrawTab - PullRequest
       40

Проблема с TPageControl DrawTab

1 голос
/ 30 августа 2011

Я установил стиль TPageControl на Плоские кнопки (tsFlatButtons) и изменил цвет кнопки вкладки с помощью события OnDrawTab.

Это работает, но кнопка, которая неактивна, имеет серый цвет (цвет btnFace) граница!enter image description here

Есть идеи, как это исправить?

procedure TForm1.PageControlDrawTab(Control: TCustomTabControl;
          TabIndex: Integer; const Rect: TRect; Active: Boolean);

var
  AText: string;
  ARect: TRect;

begin
  with (Control as TPageControl).Canvas do
  begin
    ARect := Rect;
    OffsetRect(ARect, 0, 4);

    Brush.Color := COLOR1;
    FillRect(Rect);

    AText := TPageControl(Control).Pages[TabIndex].Caption;

    with Control.Canvas do   
      DrawText(Control.Canvas.Handle, PChar(AText), -1,ARect, DT_CENTER or DT_SINGLELINE);

  end;
end;

Ответы [ 3 ]

1 голос
/ 09 августа 2012

Я знаю, что это очень старый пост, но поскольку он не содержит полного ответа, и у меня возникла та же проблема, и я наконец-то узнал, как это сделать, я подумал, что должен сообщить вам ...

Кроме того, ваш код не работает должным образом, если на некоторых вкладках для tabvisible установлено значение False Вот я думаю, что лучший способ исправить это, используя целое число i, чтобы зациклить вкладки:

for I := 0 to TPageControl(Control).PageCount-1 do
  if TPageControl(Control).Pages[I].TabIndex = TabIndex then
begin
  FillRect(Control.Canvas.Handle,aRect,Control.Canvas.Brush.Handle);
  // Do your text drawing here
  break;
end;
1 голос
/ 30 августа 2011

В качестве обходного пути, если дизайн вам подходит enter image description here Вы можете скрыть текущие вкладки:

  for I := 0 to Pred(PageControl1.PageCount) do
    PageControl1.Pages[I].TabVisible := False;

и добавьте TTabSet с этими свойствами:

BackgroundColor := clGradientActiveCaption;
SelectedColor := clGradientActiveCaption;
Style := tsModernTabs
0 голосов
/ 27 января 2014

См. Этот блок ниже, чтобы исправить проблемы с ничьей на Win64bits

https://forums.embarcadero.com/thread.jspa?messageID=292598

...