pagecontrol问题,相当于散分

tankkxx 2003-04-10 08:53:23
怎么才能改变PAGECONTROL上tabsheet的标题颜色,难道非得设置自定义draw然后自己写代码吗?
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tankkxx 2003-04-14
  • 打赏
  • 举报
回复
虽然效益不好,但也不能拖欠薪水.结贴!
blueshu 2003-04-10
  • 打赏
  • 举报
回复
正如你所说^__^
u2m 2003-04-10
  • 打赏
  • 举报
回复
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TMainForm = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Memo1: TMemo;
Edit1: TEdit;
Button1: TButton;
TabSheet3: TTabSheet;
procedure PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
procedure PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
MainForm: TMainForm;
i: Integer;

implementation

{$R *.dfm}

procedure TMainForm.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
var
pt: TPoint;
begin
GetCursorPos(pt);
pt := PageControl1.ScreenToClient(pt);
if PageControl1.IndexOfTabAt(pt.X, pt.Y ) = 1 then
AllowChange := False;
end;

procedure TMainForm.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
rt: TRect;
begin
with PageControl1.Canvas do
begin
rt := Rect;
Brush.Color := clBtnFace;
FillRect(rt);
if TabIndex = 1 then
Font.Color := clGrayText;
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption),
-1, rt, DT_CENTER or DT_VCENTER);
end;

end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
PageControl1.OwnerDraw := True;
end;

end.
delphiyesgood 2003-04-10
  • 打赏
  • 举报
回复
在熟悉一遍:)
procedure TMainForm.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
var
pt: TPoint;
begin
GetCursorPos(pt);
pt := PageControl1.ScreenToClient(pt);
if PageControl1.IndexOfTabAt(pt.X, pt.Y ) = 1 then
AllowChange := False;
end;

procedure TMainForm.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
rt: TRect;
begin
with PageControl1.Canvas do
begin
rt := Rect;
Brush.Color := clBtnFace;
FillRect(rt);
if TabIndex = 1 then
Font.Color := clGrayText;
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption),
-1, rt, DT_CENTER or DT_VCENTER);
end;

end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
PageControl1.OwnerDraw := True;
end;

end.

procedure TMainForm.PageControl1Changing(Sender: TObject;
var AllowChange: Boolean);
var
pt: TPoint;
begin
GetCursorPos(pt);
pt := PageControl1.ScreenToClient(pt);
if PageControl1.IndexOfTabAt(pt.X, pt.Y ) = 1 then
AllowChange := False;
end;

procedure TMainForm.PageControl1DrawTab(Control: TCustomTabControl;
TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
rt: TRect;
begin
with PageControl1.Canvas do
begin
rt := Rect;
Brush.Color := clBtnFace;
FillRect(rt);
if TabIndex = 1 then
Font.Color := clGrayText;
DrawText(Handle, PChar(PageControl1.Pages[TabIndex].Caption),
-1, rt, DT_CENTER or DT_VCENTER);
end;

end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
PageControl1.OwnerDraw := True;
end;

end.

5,388

社区成员

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

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