16,748
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.Button1Click(Sender: TObject);
var
TreeList: TStrings;
I: Integer;
Nodes: array[0..1024] of TTreeNode;
ALevel: Integer;
AText: String;
begin
if OpenDialog1.Execute then
begin
TreeList := TStringList.Create;
TreeList.LoadFromFile(OpenDialog1.FileName);
try
with TreeView1 do
begin
Items.Clear;
Nodes[0] := nil;
for I := 0 to TreeList.Count - 1 do
begin
GetTreeInfo(TreeList.Strings[I],ALevel,AText);
Nodes[ALevel] := TreeView1.Items.AddChild(Nodes[ALevel-1],AText);
end;
end;
finally
TreeList.Free;
end;
end;
end;
procedure TForm1.GetTreeInfo(S: String; var Level: Integer; var AText: String);
var
Posi: Integer;
begin
Posi := 1;
Level := 1;
while Posi < Length(S) do
begin
if S[Posi] = '/' then
begin
if Copy(S,Posi+1,4)= '....' then
begin
Inc(Level);
Inc(Posi,5);
Continue;
end
else
begin
AText := Copy(S,Posi+1,Length(S)-Posi);
Break;
end;
end
else
Break;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
function GetText(ALevel: Integer; AText: String): String;
var
J: Integer;
begin
Result := '/';
for J := 0 to ALevel-1 do
begin
Result := Result + '..../';
end;
Result := Result + AText;
end;
var
I: Integer;
SaveTree: TStrings;
begin
SaveTree := TStringList.Create;
try
for I := 0 to TreeView1.Items.Count - 1 do
begin
SaveTree.Add(GetText(TreeView1.Items[I].Level,TreeView1.Items[I].Text));
end;
if SaveDialog1.Execute then
SaveTree.SaveToFile(SaveDialog1.FileName);
finally
SaveTree.Free;
end;
end;