从三个表建立treeview,想实现如下结构:
全部
|___中餐厅 //这是营业部门//
| |___川菜 //这是大类//
| | |___热菜 //这是小类//
| | |___凉菜
| |___粤菜
|
|___西餐厅
| |___咖啡
| | |___黑咖啡
| | |___墨西哥咖啡
| |___法国菜
|
|___桑拿
|___桑拿代码如下
procedure TSprojectsetForm.FormShow(Sender: TObject);
var
a,J,I: Integer;
st:string;
List:Array[0..5] of TTreeNode;
begin
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 营业部门表');
qry1.Open;
while not qry1.Eof do //加入营业部门
begin
list[0]:=tv1.Items.AddChild(tv1.Items[0],qry1.fieldbyname('营业部门名称').AsString);
list[0].SelectedIndex:=1;
qry1.Next;
end; // while
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 大类表');
qry1.Open;
while not qry1.Eof do //加入大类
begin
for a:= 0 to tv1.Items[0].Count - 1 do // Iterate
begin
if tv1.Items[0].Item[a].Text=qry1.FieldByName('营业部门名称').AsString then
begin
list[0]:=tv1.Items.AddChild(tv1.Items[0].item[a],qry1.fieldbyname('大类名称').AsString);
list[0].SelectedIndex:=2;
break;
end;
end; // for
qry1.Next;
end; // while
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 小类表');
qry1.Open; //添加小类
while not qry1.Eof do {问题在这儿,叶子节点只能建立热菜、凉菜其他叶子节点没有比如黑咖啡、墨西哥咖啡,请高手指点!}
begin
for a:= 0 to tv1.Items[1].Count-1 do // Iterate
begin
st:=tv1.Items[1].Text;
if tv1.Items[1].Item[a].Text=qry1.FieldByName('大类名称').AsString then
begin
list[0]:=tv1.Items.AddChild(tv1.Items[1].item[a],qry1.fieldbyname('小类名称').AsString);
list[0].SelectedIndex:=2;
break;
end;
end; // for
qry1.Next;
end; // while
end;
end.
全部
|___中餐厅 //这是营业部门//
| |___川菜 //这是大类//
| | |___热菜 //这是小类//
| | |___凉菜
| |___粤菜
|
|___西餐厅
| |___咖啡
| | |___黑咖啡
| | |___墨西哥咖啡
| |___法国菜
|
|___桑拿
|___桑拿代码如下
procedure TSprojectsetForm.FormShow(Sender: TObject);
var
a,J,I: Integer;
st:string;
List:Array[0..5] of TTreeNode;
begin
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 营业部门表');
qry1.Open;
while not qry1.Eof do //加入营业部门
begin
list[0]:=tv1.Items.AddChild(tv1.Items[0],qry1.fieldbyname('营业部门名称').AsString);
list[0].SelectedIndex:=1;
qry1.Next;
end; // while
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 大类表');
qry1.Open;
while not qry1.Eof do //加入大类
begin
for a:= 0 to tv1.Items[0].Count - 1 do // Iterate
begin
if tv1.Items[0].Item[a].Text=qry1.FieldByName('营业部门名称').AsString then
begin
list[0]:=tv1.Items.AddChild(tv1.Items[0].item[a],qry1.fieldbyname('大类名称').AsString);
list[0].SelectedIndex:=2;
break;
end;
end; // for
qry1.Next;
end; // while
qry1.Close;
qry1.SQL.Clear;
qry1.SQL.Add('select *from 小类表');
qry1.Open; //添加小类
while not qry1.Eof do {问题在这儿,叶子节点只能建立热菜、凉菜其他叶子节点没有比如黑咖啡、墨西哥咖啡,请高手指点!}
begin
for a:= 0 to tv1.Items[1].Count-1 do // Iterate
begin
st:=tv1.Items[1].Text;
if tv1.Items[1].Item[a].Text=qry1.FieldByName('大类名称').AsString then
begin
list[0]:=tv1.Items.AddChild(tv1.Items[1].item[a],qry1.fieldbyname('小类名称').AsString);
list[0].SelectedIndex:=2;
break;
end;
end; // for
qry1.Next;
end; // while
end;
end.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货