指定PageControl的Tabsheet标签颜色

Mr Dang 2013-07-15 09:58:48
Delphi中,指定PageControl的Tabsheet标题颜色,如通过procedure TXX.PgcGetColour(PgcIndex:integer;TSColour:string);做接口去改变标签颜色,然后不会随着Active而改变了。

不指定PageControl的TabSheet标题颜色的时候,clblack 黑色;
指定PageControl的TabSheet标题颜色的时候,有clRed和clGreen 红色和绿色,指定后不随Active而变化了。
脑袋笨,写不出,求帮忙。

我知道
ownerDraw=true;
procedure TFrm_XXX.pgc1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
if Active then
begin
Control.Canvas.Font.Color:=clGreen;
end;
Control.Canvas.TextOut((Rect.Left+4),(Rect.Top+4),pgc1.Pages[TabIndex].Caption);
end;
...全文
167 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr Dang 2013-07-15
  • 打赏
  • 举报
回复
自己给自己分

Arr:array of string;

procedure TFrm_XXX.pgc1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
    Control.Canvas.Font.Color:=pgcGetColor(TabIndex);   
    Control.Canvas.TextOut((Rect.Left+4),(Rect.Top+4),pgc1.Pages[TabIndex].Caption);
end; 

function pgcGetColor(pgcIndex:integer):TColor;
begin
    Result:=StringToColor(Arr[pgcIndex]);  {Arr定义的string类型数组}
end;

procedure TFrm_XXX.FormCreat(Sender: TObject);
var
 i: integer;
begin
    setlength(Arr,8);
    for i:=0 to 7
    begin
        Arr[i]:='clblack';
    end;
end;

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧