Also bei idYes soll der Name gesetzt werden, der vorm umbenennen war?
Delphi-Quellcode:
idYes: S := Node.Text; // Setzt wieder alten Wert vorm umbenennen
idNo: S := S + ' [new]';
Node.Text hält noch den alten Namen, der Node steht ja erst kurz davor unbenannt zu werden...
btw: statt [new] würde sich [1]..[n] anbieten
Vielleicht kannst Du was mit anfangen, ansonsten einfach ignorieren
(der Teil für einen Zweig ist alleine ja recht übersichtlich)
Delphi-Quellcode:
function GetUniqueNodeText(aTreeView: TTreeView; aParentNode: TTreeNode;
aNodeText : String; OnlyInTwig : Boolean = True): String;
var
i : Integer;
sl : TStringList;
begin
Result := aNodeText;
{<--- Prüft nur einen Zweig bzw. erste Ebene --->}
if OnlyInTwig then begin
i := 0;
while NodeTextExistsInTwig(aTreeView, aParentNode, Result) do begin
inc(i);
Result := aNodeText+'['+IntToStr(i)+']';
end;
{<--- Prüft alle Nodes --->}
end else begin
sl := TStringList.Create;
try
// Namen sammeln, damit Items nicht x-mal durchlaufen werden muss
// Aufwand relativiert sich bei großen Bäumen
for i := 0 to aTreeView.Items.Count-1 do
if Pos(AnsiUpperCase(aNodeText), AnsiUpperCase(aTreeView.Items[i].text)) > 0 then
sl.Add(AnsiUpperCase(aTreeView.Items[i].text));
// Prüfen und gg. erweitern
i := 0;
while sl.IndexOf(AnsiUpperCase(Result)) >= 0 do begin
inc(i);
Result := aNodeText+'['+IntToStr(i)+']';
end;
finally
sl.Free;
end;
end;
end;