Установка цвета TTabControl после XPManifest в Delphi - PullRequest
1 голос
/ 28 ноября 2009

В моей форме есть компонент tabcontrol. После того, как я установил XPManifest, его цвет стал белым, я хочу изменить его, но не могу найти свойство color. И я не хочу удалять XPManifest также. Есть ли способ решить эту проблему?

1 Ответ

5 голосов
/ 28 ноября 2009

Чтобы изменить цвет TTabControl, необходимо установить для свойства OwnerDraw значение true false и написать собственный код для рисования вкладок и фона в OnDrawTab * 1006. * Событие.

см. Этот пример.

procedure TForm38.TabControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
y    : Integer;
x    : Integer;
aRect: TRect;
begin
  if Active then
  begin
    //Fill the tab rect
    Control.Canvas.Brush.Color := clWebGainsboro;
    Control.Canvas.FillRect(Rect);        
    //Fill the background
    aRect.Left:=1;
    aRect.Right:=Control.Width-1;
    aRect.Bottom:=Control.Height-1;
    aRect.Top:=Rect.Bottom+1;
    Control.Canvas.FillRect(aRect);   
  end
  else
  begin
    //Fill the tab rect
    Control.Canvas.Brush.Color := clBtnFace;
    Control.Canvas.FillRect(Rect);
  end;

  y  := Rect.Top + ((Rect.Bottom - Rect.Top - Control.Canvas.TextHeight(TTabControl(Control).Tabs[TabIndex])) div 2) + 1;
  x  := Rect.Left + ((Rect.Right - Rect.Left - Control.Canvas.TextWidth (TTabControl(Control).Tabs[TabIndex])) div 2) + 1;
  //draw the tab title
  Control.Canvas.TextOut(x,y,TTabControl(Control).Tabs[TabIndex]);
end;
...