mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 14:18:17 +02:00
LCL: Improve getting an unused name for a new Notebook page. Issue #36957.
This commit is contained in:
parent
571d253de0
commit
a641e34bff
@ -11,6 +11,26 @@
|
|||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function CreateUniquePageName(BaseName: string; OwnerComp: TComponent): string;
|
||||||
|
// Inspired by TCustomFormEditor.CreateUniqueComponentName
|
||||||
|
var
|
||||||
|
i, j: integer;
|
||||||
|
begin
|
||||||
|
i:=0;
|
||||||
|
Result:=BaseName;
|
||||||
|
while true do begin
|
||||||
|
j:=OwnerComp.ComponentCount-1;
|
||||||
|
while (j>=0) and (CompareText(Result,OwnerComp.Components[j].Name)<>0) do
|
||||||
|
dec(j);
|
||||||
|
if j<0 then exit;
|
||||||
|
inc(i);
|
||||||
|
if BaseName[length(BaseName)] in ['0'..'9'] then
|
||||||
|
BaseName:=BaseName+'_';
|
||||||
|
Result:=BaseName+IntToStr(i);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{******************************************************************************
|
{******************************************************************************
|
||||||
TUNBPages
|
TUNBPages
|
||||||
******************************************************************************}
|
******************************************************************************}
|
||||||
@ -69,29 +89,11 @@ end;
|
|||||||
function TUNBPages.AddObject(const S: string; AObject: TObject): Integer;
|
function TUNBPages.AddObject(const S: string; AObject: TObject): Integer;
|
||||||
var
|
var
|
||||||
NewPage: TPage;
|
NewPage: TPage;
|
||||||
NewName: string;
|
|
||||||
OK: Boolean;
|
|
||||||
i: integer;
|
|
||||||
begin
|
begin
|
||||||
Result := FPageList.Add(AObject);
|
Result := FPageList.Add(AObject);
|
||||||
NewPage := TPage(AObject);
|
NewPage := TPage(AObject);
|
||||||
if IsValidIdent(S) then
|
if IsValidIdent(S) then
|
||||||
begin
|
NewPage.Name := CreateUniquePageName(S, FNotebook.Owner);
|
||||||
NewName := S;
|
|
||||||
i := 1;
|
|
||||||
repeat
|
|
||||||
OK := True;
|
|
||||||
try
|
|
||||||
NewPage.Name := NewName;
|
|
||||||
except // Name was reserved, try adding numbers to it.
|
|
||||||
on E: EComponentError do begin
|
|
||||||
OK := False;
|
|
||||||
NewName := S + IntToStr(i);
|
|
||||||
Inc(i);
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
until OK;
|
|
||||||
end;
|
|
||||||
NewPage.Caption := S;
|
NewPage.Caption := S;
|
||||||
NewPage.Parent := FNotebook;
|
NewPage.Parent := FNotebook;
|
||||||
NewPage.Align := alClient;
|
NewPage.Align := alClient;
|
||||||
|
Loading…
Reference in New Issue
Block a user