PageControl i zaawansowane nazywanie zakładek

0

Mam PageControl z jedną zakładką. Do niego można sobie dodawać dynamicznie nowe zakładki i je usuwać, do których przypisywana jest domyślna nazwa (np. "Nowa zakładka") z tym, że chcę by każda zakładka miała inną nazwę (poprzez dodanie na końcu nazwy, w nawiasie kolejnej cyfrki) - czyli np.: "Nowa zakładka", "Nowa zakładka (2)", "Nowa zakładka (3)".

Z tym, że jeśli ktoś usunie zakładkę, a potem doda nową to "uzupełni" się luka w numeracji.

Chodzi mi o coś podobnego jak np. w Windowsie gdzie tworząc nowe pliki (np. txt) przypisywana im jest domyślna nazwa z cyferką na końcu.

Wymyśliłem coś takiego, ale nie działa w 100% tak jak bym chciał:

var   NewTab : TTabSheet;
        i,  j : byte;
        s : String;
        k : Boolean;
begin
 s := 'Nowa zakładka';
 k := False;
 i := 0;

NewTab := TTabSheet.Create(Self); 

if (PageControl1.ControlCount = 1) then NewTab.Caption := S else
  begin
    while not k do
      begin
        for j := 0 to PageControl1.ControlCount - 1 do
          if PageControl1.Pages[i].Caption = s + ' (' + IntToStr(i) + ')' then
            begin
              Inc(i);
            end
          else
            begin
              NewTab.Caption := (s + ' (' + IntToStr(i) + ')');
              K := True;
              Inc(i);
            end;
      end;
  end;

NewTab.PageControl := PageControl1;
0
procedure AddTab(_PageControl:TPageControl);
const TabCaption='Nowa zakładka (%d)';

  function TabExists(i:integer):boolean;
  var n:integer;
  begin
  result:=FALSE;
  for n:=0 to _PageControl.PageCount-1 do
    result:=result or (_PageControl.Pages[n].Caption=Format(TabCaption, [i]));
  end;

var i:integer;
begin
i:=1;
while TabExists(i) do
  inc(i);
with TTabSheet.Create(_PageControl) do
  begin
  Caption:=Format(TabCaption, [i]);
  PageControl:=_PageControl;
  Parent:=PageControl;
  end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1