把pagecontrol的ownerdrow属性置为true,改变页面标签背景颜色代码如下,可是原来各属性页tabsheet上的图片就不见了,怎样再重画出来呀????procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TmpRect: TRect;
begin
with PageControl1.Canvas do
begin
Brush.Color := clBlack;
Font.Color := clWhite;
FillRect(Rect);
TmpRect := Rect;
OffsetRect(TmpRect, 0, 3);
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption), -1, TmpRect, DT_CENTER or DT_VCENTER);
end;
end;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TmpRect: TRect;
begin
with PageControl1.Canvas do
begin
Brush.Color := clBlack;
Font.Color := clWhite;
FillRect(Rect);
TmpRect := Rect;
OffsetRect(TmpRect, 0, 3);
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption), -1, TmpRect, DT_CENTER or DT_VCENTER);
end;
end;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TmpRect: TRect;
ico:TIcon;
begin
with PageControl1.Canvas do
begin
Brush.Color := clBlack;
Font.Color := clWhite;
FillRect(Rect);
TmpRect := Rect;
OffsetRect(TmpRect, 0, 3);
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption), -1, TmpRect, DT_CENTER or DT_VCENTER);
ico:=TIcon.Create;
il1.GetIcon(TabIndex,ico);
Draw(Rect.Left+2,Rect.Top+2,ico);
ico.Free;
end;
大概这样,位置自己再调整一下
PageControl1.ActivePageIndex跟TabIndex比较,一样就画打开的书,不一样都画关闭的书
ico:=TIcon.Create;
dm.ImageL_pg.GetIcon(TabIndex,ico);
if TabIndex=PageControl1.ActivePage.TabIndex then
Draw(Rect.Left+2,Rect.Top+2,ico);//这里怎么写???
ico.Free;
.....
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
TmpRect: TRect;
ico: TIcon;
begin
with PageControl1.Canvas do
begin
Brush.Color := clBlack;
Font.Color := clWhite;
FillRect(Rect);
TmpRect := Rect;
OffsetRect(TmpRect, 0, 3);
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption), -1, TmpRect,
DT_CENTER or DT_VCENTER);
ico := TIcon.Create;
if PageControl1.ActivePageIndex = TabIndex then
ImageList1.GetIcon(0, ico)
else
ImageList1.GetIcon(1, ico);
Draw(Rect.Left + 2, Rect.Top + 2, ico);
ico.Free;
end;
end;
pagecontrol1上有tabsheet1,tabsheet2,tabsheet3
这三个属性页谁当前,那么它的imageindex为1(为一个打开的书状的图标),其余二个的imageindex为0(为一个关闭的图标)。
因为我不想用pagecontrol1那个灰色的标题背景,所以我采用重画的方法,这样一来就要重画标题上的图标,就是上面的写的
不明白的话,请再问我
begin
(Sender as TPageControl).Refresh;
end;