起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 311|回复: 10

【结】pagecontrol用代码改变颜色后图标不见了[问题]**

[复制链接]
发表于 2008-3-14 09:04:55 | 显示全部楼层 |阅读模式
pagecontrol用代码改变颜色后图标不见了,怎么让图标显示出来?
回复

使用道具 举报

发表于 2008-3-14 11:22:33 | 显示全部楼层
请楼主提供
1、是怎么改变的颜色的
2、改变前效果图
3、改变后效果图
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-14 14:35:39 | 显示全部楼层
procedure THJKM.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
      AText:   string;
      APoint:   TPoint;
begin
      with   (Control   as   TPageControl).Canvas   do
      begin
          Brush.Color   :=   graphics.clwhite;//TabSheet的颜色
          FillRect(Rect);
          AText   :=   TPageControl(Control).Pages[TabIndex].Caption;
          with   Control.Canvas   do
          begin
              APoint.x   :=   (Rect.Right   -   Rect.Left)   div   2   -   TextWidth(AText)   div   2;
              APoint.y   :=   (Rect.Bottom   -   Rect.Top)   div   2   -   TextHeight(AText)   div   2;
              TextRect(Rect,   Rect.Left   +   APoint.x,   Rect.Top   +   APoint.y,   AText);
          end;
      end;
end;
代码改变颜色
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-14 14:39:25 | 显示全部楼层
改变前

1.jpg

10.74 KB, 下载次数: 147

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-14 14:42:05 | 显示全部楼层
改变后

1.jpg

9.5 KB, 下载次数: 146

回复 支持 反对

使用道具 举报

发表于 2008-3-14 15:28:11 | 显示全部楼层
楼主,可以试试使用GraphicTab和GraphicPageControl这两个控件,效果很不错的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-14 19:32:36 | 显示全部楼层
GraphicPageControl有点问题,写代码判断当前激活的tab但就是判断不了,同样的方法在pagecontrol中就起作用。而且GraphicPageControl有时出些小bug比如caption改变了要关闭后再开才看得见,所以为了保险起见我就用pagecontrol了
回复 支持 反对

使用道具 举报

发表于 2008-3-17 10:06:30 | 显示全部楼层
GraphicTab没有楼主说的bug
回复 支持 反对

使用道具 举报

发表于 2008-3-17 10:10:59 | 显示全部楼层
procedure TMainForm.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
      AText:   string;
      APoint:   TPoint;
      icon:TIcon ;
begin
      with   (Control   as   TPageControl).Canvas   do
      begin
          icon:=TIcon.Create;
          try
            ImageList1.GetIcon(TabIndex,icon);
            Brush.Color   :=   graphics.clwhite;//TabSheet的颜色
            FillRect(Rect);
            AText   :=   TPageControl(Control).Pages[TabIndex].Caption;
            with   Control.Canvas   do
            begin
                APoint.x   :=   (Rect.Right   -   Rect.Left)   div   2   -   TextWidth(AText)   div   2;
                APoint.y   :=   (Rect.Bottom   -   Rect.Top)   div   2   -   TextHeight(AText)   div   2;
                TextRect(Rect,   Rect.Left   +   APoint.x,   Rect.Top   +   APoint.y,   AText);
                Draw(Rect.Left,3,icon);
            end;
          finally
              icon.Free;
          end;

      end;

end;
Ticon对象放在窗体的事件上创建比较好,这样些效率不会太好。例子只是描述一个方法
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-20 15:17:46 | 显示全部楼层
结贴吧,用别的控件做了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-9 05:17 , Processed in 0.042026 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表