比如:
001计算机专业
001001计算机一班
001002计算机二班
002电子专业
002001电子一班
……
以下两个过程是我很久以前用来建立树图的,供你参考:
你只需在from的Create事件中加入代码
begin
Init;
end;
procedure TfmFeeList.Init;
var __Item:TTreeNode;
__c:array[0..20] of Char;
__Add:string;
begin
TreeView.Items.Clear;
With tbTree do begin
First;
while not Eof do begin
__Add := FieldByName('sNo').AsString;
StrPCopy(__c,__Add);
__Add := FieldByName('sName').AsString;
__Item:=TreeView.Items.Add(nil,__Add);
ChapterAddChild(__Item,__c); //再识别子集
end;
end;
end;
procedure TfmFeeList.ChapterAddChild(_SelfItem:TTreeNode;_Self
Char);
var _c,_s:array[0..20] of Char;
_i:integer;
_Item:TTreeNode;
_Add:string;
begin
With tbTree do
begin
Next;
_i := StrLen(_Self);
while not Eof do
begin
_Add := FieldByName('sNo').AsString;
StrPCopy(_c,_Add);
if (StrLIComp(_c,_Self,_i) = 0) then
begin //是子集
_Add := _Add + '-' + FieldByName('sName').AsString;
_Item:=TreeView.Items.AddChild(_SelfItem,_Add);
ChapterAddChild(_Item,_c); //再识别子集
end
else break;
end;
if not Eof then
begin
StrPCopy(_c,FieldByName('sNo').AsString);
StrPCopy(_s,StrRScan(_Self,'.'));
if StrLIComp(_c,_Self,_i-Length(_s)) = 0 then
begin //是兄弟
_Add := FieldByName('sNo').AsString + '-' + FieldByName('sName').AsString;
_Item:=TreeView.Items.Add(_SelfItem,_Add);
ChapterAddChild(_Item,_c); //再识别子集
end;
end;
end;
end;