难题 ( 积分: 100 )

  • 主题发起人 主题发起人 redphoenix1
  • 开始时间 开始时间
R

redphoenix1

Unregistered / Unconfirmed
GUEST, unregistred user!
PageControl1中有几个TabSheet页,现在是想:当选中某一个TabSheet页时,把被选中的那个TabSheet页四周的边框用颜色描绘出来,比如在四周套一层红色。不知道各位有什么好的办法,再下这里有礼了!
 
PageControl1中有几个TabSheet页,现在是想:当选中某一个TabSheet页时,把被选中的那个TabSheet页四周的边框用颜色描绘出来,比如在四周套一层红色。不知道各位有什么好的办法,再下这里有礼了!
 
如下便是了:
先设置pagecontrol的ownerdraw=true,然后在pagecontrol的OnDrawTab事件里写如下代码:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
if Active then
begin
Control.Canvas.Brush.Color := clBlue;
Control.Canvas.Font.Color := clWhite;
end;

Control.Canvas.TextRect(Rect, Rect.Left + 5, Rect.Top + 5, PageControl1.ActivePage.Caption);
end;
 
楼上的大哥,我想你应该没理解我的问题,见效果图
12221.jpg
 
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
if Active then
begin
Control.Canvas.Brush.Color := clAqua;
Control.Canvas.Font.Color := clWhite;
end;

Control.Canvas.TextRect(Rect, Rect.Left + 5, Rect.Top + 5, PageControl1.ActivePage.Caption);
PageControl1.Canvas.Rectangle(0,20,Control.Width,Control.Height);//加这句就可以了
end;
 
那它那个渐变效果是怎么实现的?
 
hongxing_dl兄,你这样的画法我前面就试过了
问题1,TABSHEET那个TAB周围无法覆盖,还是有一圈白色
问题2,Rectangle(0,20,Control.Width,Control.Height);这样画的是整个矩形,而我希望和TABSHEET相交的那个地方不画。
其实如果有一个画不规则轮廓的函数,那问题就解决啦。
 
你的图的效果是三方控件,或者用了换肤控件。
 
hongxing_dl你好,我的目的很简单,就是想用线条包围整个TabSheet页的边框。
不知道您有没有什么好办法,有没有什么描绘轮廓的函数。
 
不会真的没人会吧,那我看来要结帐了[:D]
 
有画不规则轮廓的函数,TCanvas.Polyline(const Points: array of TPoint);
 
楼主,怎么贴的图,多谢了,教教我!
 
接受答案了.
 

Similar threads

D
回复
0
查看
936
DelphiTeacher的专栏
D
D
回复
0
查看
730
DelphiTeacher的专栏
D
D
回复
0
查看
689
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部