左键双击关闭pagecontrol中的一个分页即一个tabsheet,功能像遨游浏览器一样
procedure TfrmServerSetup.PageControl1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Index: Integer;
begin
//左键点击并且双击
if (Button = mbLeft) and (ssDouble in Shift) then
begin
Index := PageControl1.IndexOfTabAt(X, Y);
if Index >= 0 then
PageControl1.Pages[Index].Free;
end;
end;
//根据名称检查tab是否已经存在
function FindTab(pagecontrol:TPageControl;tabName:string):integer;
var
i:integer;
begin
Result := -1;
for i := 0 to pagecontrol.PageCount - 1 do
begin
if pagecontrol.Pages[i].Name = tabName then
begin
Result := i;
Break;
end;
end;
end;
procedure FormToSheet(pagecontrol:TPageControl;frm:TForm;tabName,tabCaption:string);
var
i:integer;
tab:TTabSheet;
begin
i := FindTab(pagecontrol,tabName);
if i > 0 then
begin
pagecontrol.Pages[i].TabVisible := True;
pagecontrol.ActivePageIndex := i;
end
else
begin
tab := TTabSheet.Create(pagecontrol);
tab.Name := tabName;
tab.Caption := tabCaption;
tab.PageControl := pagecontrol;
pagecontrol.ActivePage := tab;
frm.ParentWindow := tab.Handle;
frm.Tag :=tab.TabIndex;
tab.InsertControl(frm);
frm.Show;
end;
frm.Show;
end;
//销毁时,可以查找tab上的组件,找到窗体,然后freeandnil,当然也可以通过指针处理,在tag中保存窗体指针地址,销毁时根据这个地址去处理