用TPageControl动态创建的TTabSheet标签页上带有关闭自身的关闭按钮,就像360浏览器的标签一样,代码咋写 谢谢赐教
解决方案 »
- PASCAL简单的问题?
- delphi的udp控件问题
- 用delphi制作msmq应用程序 怎样调用win sdk 请帮忙
- 请问到上海神州数码公司做ERP程序员(delphi+sql server)月薪多少?谢谢!
- 如何正确使用RECNO,为什么总为-1在TTABLE中
- Tadoconnection组件?
- 急:请问高手,怎样比较两幅图的异同,如果不同的时候,新图取代旧图?(抓屏的时候使用)
- DELPHI中文件系统的问题
- 急!急!急!请各位大侠指教Delphi的 Treeview 中叶对根是一对多的用法!
- 各位大虾!我是DELPHI初学者。各位高手能给我介绍几本适合初学者的DELPHI书吗???
- 如何更改M1卡密钥
- 什么意思 type T_dev_init = function(port: smallint; baud: longint): longint;
var
g_hBtn : HWND
begin
g_hBtn:=CreateWindow('Button','x', //X表示叉叉
WS_VISIBLE or WS_CHILD or BS_PUSHLIKE or BS_TEXT,
260, 1, 38, 38, handle, 0, 0, nil);//位置自己调未测。一方案
我也是用的TcxTabControl,感觉效果还是很不错的。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls;type
TPageControl = class(ComCtrls.TPageControl)
private
procedure WMLButtonDown(var Message: TWMLButtonDown); message WM_LBUTTONDOWN;
end; TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}{ TPageControl }procedure TPageControl.WMLButtonDown(var Message: TWMLButtonDown);
var
I: Integer;
R: TRect;
begin
inherited;
//Form1.Text := Format('X:%d, Y:%d', [Message.XPos, Message.YPos])
for I := 0 to PageCount-1 do
begin
R := TabRect(I);
R.Left := R.Right - 20;
if PtInRect(R, Point(Message.XPos, Message.YPos)) then
begin
Pages[I].Destroy;
Break
end;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
TabSheet1.Caption := 'TabSheet1 X';
TabSheet2.Caption := 'TabSheet2 X';
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, Buttons;type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure DoCloseClick(Sender: TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.DoCloseClick(Sender: TObject);
begin
PageControl1.Pages[TComponent(Sender).Tag].Destroy;
Sender.Destroy;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
TabSheet1.Caption := 'TabSheet1 ';
SpeedButton1.Tag := 0;
SpeedButton1.Flat := True;
SpeedButton1.Caption := 'X';
SpeedButton1.Width := 12;
SpeedButton1.Height := 12;
SpeedButton1.Parent := PageControl1;
with PageControl1.TabRect(0) do
begin
SpeedButton1.Left := Right - 20;
SpeedButton1.Top := Top + ((Bottom - Top) - 12) div 2;
end;
SpeedButton1.OnClick := DoCloseClick; TabSheet2.Caption := 'TabSheet2 ';
SpeedButton2.Tag := 1;
SpeedButton2.Flat := True;
SpeedButton2.Caption := 'X';
SpeedButton2.Width := 12;
SpeedButton2.Height := 12;
SpeedButton2.Parent := PageControl1;
with PageControl1.TabRect(1) do
begin
SpeedButton2.Left := Right - 20;
SpeedButton2.Top := Top + ((Bottom - Top) - 12) div 2;
end;
SpeedButton2.OnClick := DoCloseClick;
end;end.
比如 那个两边都截取斜角的选项卡, 只用设置 rzPageControl.TabStyle:= tsDoubleSlant; 就可以了..属性基本上已经可以满足所有的样式了.. 当然如果想要好看,, 那配合皮肤控件使用. 那就完美了...
关闭这个.. 用 rzPageControl.ShowCloseButton:= True; 就可以了. 然后那个关闭的小叉叉,也可以自己指定图片..