我将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;
答案 0 :(得分:1)
作为解决方法,如果设计适合您 ,您可以隐藏当前标签:
for I := 0 to Pred(PageControl1.PageCount) do
PageControl1.Pages[I].TabVisible := False;
并添加 TTabSet 具有以下属性:
BackgroundColor := clGradientActiveCaption;
SelectedColor := clGradientActiveCaption;
Style := tsModernTabs
答案 1 :(得分:1)
我知道这是一个非常古老的帖子,但由于它没有完整的答案,我遇到了同样的问题,终于找到了怎么做,我想我应该让你知道......
如果某些选项卡的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;
答案 2 :(得分:0)
请参阅下面的单元,修复Win64bits上的Draw问题