我就是想实现像傲游那样,双击空白处便可以新增一个空白页,双击已经存在的SHEET就是关闭这个SHEET,请问高手该用什么事件,具体该怎么写

解决方案 »

  1.   


    //****************************************************************
    //打开tabForm过程参数1.ClassType:TComponentClass组件类 2.OpenFrom:TForm窗体
    //****************************************************************
    procedure TForm1.Open_Tab_Form(ClassType:TComponentClass;OpenFrom:TForm);
    var
    Thetabsheet:ttabsheet;
    ThePanel:Tpanel;
    begin
       //动态创建tabsheet和panel
       TheTabSheet := TTabSheet.Create(Self);
       TheTabSheet.PageControl := PageControl1;
       ThePanel:=Tpanel.Create(self);
       ThePanel.Parent:= TheTabSheet;
       ThePanel.Align:=alClient;
       //ThePanel.DockSite:=true;  // 将ThePanel.DockSite:=true则出现关闭条
       //载入一个窗体到TAbsheet
       application.CreateForm(ClassType,OpenFrom);
       OpenFrom.Dock(ThePanel,BoundsRect);
       OpenFrom.show;
       TheTabSheet.Caption:=OpenFrom.Caption;
       TheTabSheet.Show;
    end;//****************************************************************
    //双击tab关闭
    //****************************************************************
    procedure TForm1.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;