现在有一个TStringList 里面存的是Module类
Module类: id,Integer;
name,String;
parent,Integer;
children,TStringList;
数据结构就是这样,类似一个树--------------list中的数据-----------------
modObj1 := Module.create();
modObj1.id := 1;
modObj1.name := '系统管理';
modObj1.parent := -1;//-1代表父节点modObj2 := Module.create();
modObj2.id := 2;
modObj2.name := '字典管理';
modObj2.parent := 1; //父模块的idmodObj1.children := TStringList.create();
modObj1.children.addObject(intToStr(modObj2.id),modObj2);list := TStringList.create();
list.addObject(intToStr(modObj1.id),modObj1);---------------------------------
//.....
treeView : TTreeView;
//.....procedure loadTree();
var modObj : Module;//Module类
begin
for i:=0 to list.Count-1 do
begin
modObj := Module(list.Objects[i]);//这里list就是上面的内容
//怎么将list中的数据用TTreeView显示出来
end;
end;
Module类: id,Integer;
name,String;
parent,Integer;
children,TStringList;
数据结构就是这样,类似一个树--------------list中的数据-----------------
modObj1 := Module.create();
modObj1.id := 1;
modObj1.name := '系统管理';
modObj1.parent := -1;//-1代表父节点modObj2 := Module.create();
modObj2.id := 2;
modObj2.name := '字典管理';
modObj2.parent := 1; //父模块的idmodObj1.children := TStringList.create();
modObj1.children.addObject(intToStr(modObj2.id),modObj2);list := TStringList.create();
list.addObject(intToStr(modObj1.id),modObj1);---------------------------------
//.....
treeView : TTreeView;
//.....procedure loadTree();
var modObj : Module;//Module类
begin
for i:=0 to list.Count-1 do
begin
modObj := Module(list.Objects[i]);//这里list就是上面的内容
//怎么将list中的数据用TTreeView显示出来
end;
end;
1.生成樹的過程如下:procedure TRES_BOM_VIEW_F.CREATETREEVIEWMODEL;
var
iLoop:Integer;
Master,MasterNode:TTreeNode;
begin
adoq_getop.Close;
//SELECT distinct PARN_TYP FROM WWW where parn_typ<>'.' and parn_typ is not null order by PARN_TYP desc
adoq_getop.SQL.Text:='SELECT distinct PARN_TYP FROM WWW where parn_typ<>''.'' and parn_typ is not null order by PARN_TYP desc';
adoq_getop.Open;
adoq_getop.First;
cx_TV.Items.BeginUpdate;
cx_TV.Items.Clear;
Master:=cx_TV.Items.Add(nil,'昆盈BOM表檢視');
while not adoq_getop.Eof do
begin
if adoq_getop.FieldByName('PARN_TYP').AsString<>'' then
begin
Screen.Cursor:=crSQLWait;
MasterNode:=cx_TV.Items.AddChild(Master,VarToStr(adoq_getop.FieldValues['PARN_TYP']));
Application.ProcessMessages;
qry_op.Close;
qry_op.SQL.Text:='SELECT DISTINCT PARN_LITM FROM WWW WHERE PARN_TYP='''+ VarToStr(adoq_getop.FieldValues['PARN_TYP'])+''' GROUP BY PARN_LITM';
qry_op.Open;
for iLoop:=0 to qry_op.RecordCount -1 do
begin
cx_TV.Items.AddChild(MasterNode,VarToStr(qry_op.FieldValues['PARN_LITM']));
qry_op.Next;
end;
Application.ProcessMessages;
cx_TV.Items.EndUpdate;
Screen.Cursor:=crDefault;
end;
adoq_getop.Next;
Application.ProcessMessages;
end;
{
ThreadTView:=cx_TV;
ViewThread:=TExpandLH.Create;
ViewThread.Resume;
}
end;
begin
inherited;
try
RES_LOADING_F:=TRES_LOADING_F.Create(Self);
RES_LOADING_F.Label1.Caption:='正在檢索相關數據......';
RES_LOADING_F.Show;
RES_LOADING_F.Update;
CREATETREEVIEWMODEL;
finally
RES_LOADING_F.Close;
end;
end;
var
Nodes: TTreeNodes;
node: TTreeNode;
begin
Nodes := TreeView1.Items; {添加第一个元素}
node := Nodes.Add(nil, '一连长'); {'一连长'好孤独, 旁边没人} {现在 node 代表"一连长", 继续添加与其平级人员, 当然要参照"一连长"}
Nodes.Add(node, '二连长');
Nodes.Add(node, '三连长'); {安排"一连"的下一层: "排长"; 同时让 node 指向"一排长"}
node := Nodes.AddChild(node, '一排长');
Nodes.Add(node, '二排长');
Nodes.Add(node, '三排长'); {添加平级用 Add, 添加下级用 AddChild; 继续:}
node := Nodes.AddChild(node, '一班长');
Nodes.Add(node, '二班长');
Nodes.Add(node, '三班长'); {还有 AddChildFirst 和 AddFirst 是专门添加第一个的, 假如忘了第一个...}
node := Nodes.AddChild(node, '战士2');
Nodes.Add(node, '战士3');
Nodes.Add(node, '战士4');
Nodes.AddFirst(node, '战士1'); {用 AddFirst 可以让它站在前面}
end;
这个是万一老师的例子
楼主可以找下万一那里好多基础的东西