1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
unit test_TabBrowser;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, OleCtrls, SHDocVw, XPMan;
type
TForm1 = class(TForm)
pcNavigator: TPageControl;
btAdd: TButton;
btRemove: TButton;
XPManifest1: TXPManifest;
procedure btAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btRemoveClick(Sender: TObject);
private
{ Déclarations privées }
FTabSheets : Array of TTabSheet;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Setlength(FTabSheets, 0);
end;
procedure TForm1.btAddClick(Sender: TObject);
var len : Integer;
begin
len := Length(FTabSheets);
SetLength(FTabSheets, len + 1);
FTabSheets[len] := TTabSheet.Create(pcNavigator);
FTabSheets[len].Name := 'ts' + IntToStr(len);
FTabSheets[len].Caption := FTabSheets[len].Name;
FTabSheets[len].PageControl := pcNavigator;
pcNavigator.ActivePageIndex := pcNavigator.PageCount - 1;
end;
procedure TForm1.btRemoveClick(Sender: TObject);
var
del : TTabSheet;
i, len, cur : Integer;
begin
len := Length(FTabSheets);
if len > 0 then begin
if ((pcNavigator.ActivePageIndex = pcNavigator.PageCount - 1) and (len > 1)) then
pcNavigator.ActivePageIndex := pcNavigator.PageCount - 2;
cur := pcNavigator.ActivePageIndex;
del := FTabSheets[cur];
del.PageControl := nil;
del.Free;
for i := cur to len - 2 do begin
FTabSheets[i + 1].name := 'ts' + IntToStr(i);
FTabSheets[i] := FTabSheets[i + 1];
end;
SetLength(FTabSheets, len - 1);
end;
end;
end. |
Partager