这是我以前写的一个算法,希望对你有帮助
MEMO中的内容是:
1
2
3
1_1
1_2
2_1
3_1
1_3
4_4
算法如下:
procedure TForm1.Button1Click(Sender: TObject);
const
SplitChar='_';
var
i,j: Integer;
S: String;
hh: TTreeNode;
function GetParent(Value: String):String;
var
TempPos: Integer;
begin
If Pos(SplitChar,Value)>0 then
begin
TempPos:=Pos(SplitChar,Value);
Delete(Value,TempPos,TempPos);
Result:=Value;
end;
end;
begin
TreeView1.Items.Clear;
for i:=0 to Memo1.Lines.Count-1 do
begin
s:=Memo1.Lines.Strings;
If Pos(SplitChar,S)=0 then
TreeView1.Items.Add(nil,s)
else
begin
hh:=nil;
for j:=0 to TreeView1.Items.Count-1 do
begin
If TreeView1.Items.Item[j].Text=GetParent(S) then
begin
hh:=TreeView1.Items.Item[j];
Break;
end;
end;
if hh<>nil then
TreeView1.Items.AddChild(hh,S);
end;
end;
end;