这是一段用数据库一对多关联动态生成TreeView的程序段,可以参考。 sen : TTreeView; t,v : TTreeNode; area,id : string; len : integer; begin sen := Sender as TTreeView; qArea.Open (); qArea.First (); t := TTreeNode.Create(sen.Items); while not qArea.Eof do begin area := qArea.Fields.FieldByName ('area').AsString; t := sen.Items.Add(t,area); t.ImageIndex := 13; t.SelectedIndex := 13; qArea.Next; SelectCustMsg ('WHERE area=''' + area + '''','',''); Application.ProcessMessages (); while not qCustMsg.Eof do begin id := qCustMsg.Fields.FieldByName ('custId').AsString; len := Length (id); id := zeroPad[len] + id; v := sen.Items.AddChild (t,id); v.ImageIndex := 14; v.SelectedIndex := 14; qCustMsg.Next (); Application.ProcessMessages (); end; end; qArea.Close (); end;
sen : TTreeView;
t,v : TTreeNode;
area,id : string;
len : integer;
begin
sen := Sender as TTreeView;
qArea.Open ();
qArea.First ();
t := TTreeNode.Create(sen.Items);
while not qArea.Eof do
begin
area := qArea.Fields.FieldByName ('area').AsString;
t := sen.Items.Add(t,area);
t.ImageIndex := 13;
t.SelectedIndex := 13;
qArea.Next;
SelectCustMsg ('WHERE area=''' + area + '''','','');
Application.ProcessMessages ();
while not qCustMsg.Eof do
begin
id := qCustMsg.Fields.FieldByName ('custId').AsString;
len := Length (id);
id := zeroPad[len] + id;
v := sen.Items.AddChild (t,id);
v.ImageIndex := 14;
v.SelectedIndex := 14;
qCustMsg.Next ();
Application.ProcessMessages ();
end;
end;
qArea.Close ();
end;