我将TPageControl样式设置为平面按钮(tsFlatButtons),并使用OnDrawTab事件更改选项卡的按钮颜色。
它可以工作,但未激活的按钮有灰色(btnFace颜色)边框!

你知道怎么解决这个问题吗?
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;发布于 2011-08-30 22:37:21
作为一种变通办法,如果设计适合您

,您可以隐藏当前选项卡:
for I := 0 to Pred(PageControl1.PageCount) do
PageControl1.Pages[I].TabVisible := False;并添加具有以下属性的TTabSet:
BackgroundColor := clGradientActiveCaption;
SelectedColor := clGradientActiveCaption;
Style := tsModernTabs发布于 2012-08-09 17:03:04
我知道这是一个非常古老的帖子,但由于它没有一个完整的答案,我也有同样的问题,并最终找到了如何做,我想我应该让你知道…
此外,如果某些选项卡将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;发布于 2014-01-28 03:52:59
请参阅下面的单元,修复Win64bits上的绘图问题
https://stackoverflow.com/questions/7241313
复制相似问题