?? pagecontrolex.pas
字號:
unit PageControlEX;
interface
uses
Windows, SysUtils, Classes, Controls, RzTabs, Buttons, ComCtrls, CommCtrl;
type
TPageControlEX = class(TPageControl)
private
{ Private declarations }
FCloseBtn: TSpeedButton;
protected
{ Protected declarations }
procedure CloseBtnClick(Sender: TObject);
procedure DrawTab(TabIndex: Integer; const Rect: TRect;
Active: Boolean); override;
property OwnerDraw;
property OnDrawTab;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TPageControlEX]);
end;
procedure TPageControlEx.CloseBtnClick(Sender: TObject);
begin
if Self.ActivePage <> nil then
Self.ActivePage.Free;
if Self.ActivePage = nil then
FCloseBtn.Hide;
end;
constructor TPageControlEx.Create(AOwner: TComponent);
begin
inherited;
FCloseBtn := TSpeedButton.Create(Self);
FCloseBtn.Flat := True;
FCloseBtn.Width := 16;
FCloseBtn.Height := 16;
FCloseBtn.Caption := 'X';
FCloseBtn.OnClick := CloseBtnClick;
OwnerDraw := True;
end;
destructor TPageControlEx.Destroy;
begin
FCloseBtn.Free;
inherited;
end;
procedure TPageControlEx.DrawTab(TabIndex: Integer; const Rect: TRect;
Active: Boolean);
var
NewTabWidth: Integer;
R: TRect;
begin
inherited;
NewTabWidth := Canvas.TextWidth(Tabs[TabIndex]) + 24;
if (Rect.Right - Rect.Left) < NewTabWidth then
TabWidth := NewTabWidth;
TabCtrl_GetItemRect(Handle, TabIndex, R);
if Active then
begin
FCloseBtn.Parent := Self;
FCloseBtn.Anchors:=[akTop,akRight];
FCloseBtn.Left := Rect.Right - FCloseBtn.Width-2;
FCloseBtn.Top := Rect.Top + 2;
FCloseBtn.Show;
Canvas.TextOut(R.Left + 20, R.Top + 2, Tabs[TabIndex]);
end
else begin
//Canvas.TextOut(R.Right - FCloseBtn.Width, R.Top + 2, 'X');
Canvas.TextOut(R.Left + 16, R.Top + 2, Tabs[TabIndex]);
end;
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -