比如我有个表table1 id name node
1 A null
2 B null
3 V B
4 G B
5 A1 A
6 A2 A
7 a3 A
8 K NULL
现在我想把他显示在TREEVIEW上面
点写代码啊?各位告诉 显示成
A
A1
A2
A3
B
V
G
K
刚才问过的,但答案都生成不了我要的效果我只是要二级节点
其它都不用
求代码
1 A null
2 B null
3 V B
4 G B
5 A1 A
6 A2 A
7 a3 A
8 K NULL
现在我想把他显示在TREEVIEW上面
点写代码啊?各位告诉 显示成
A
A1
A2
A3
B
V
G
K
刚才问过的,但答案都生成不了我要的效果我只是要二级节点
其它都不用
求代码
解决方案 »
- 讨论加密方式及加密狗方面的问题。
- 请问:怎样在窗体加载时创建9百9十9万9千9百9十9个(9999999)个CheckBox控件或者是TcheckBoxList并显示出来。
- 字符串问题
- 插入dbgrid以后,执行exe时所显示的列宽度怎么设定?还有icon只能在窗体处显示吗?
- 关于active问题。
- <请教〉编程方面的电子书下载网站
- 怎么在DELPHI中将一个文件该名?
- 如果做一个程序用来控制局域网内的计算机?最好有源程序,谢谢?给我能的所有分
- 师兄们帮帮我可以吗。一个简单的问题。但我从没有做过。
- 请问个位大虾那有ADO的资料下载
- 帮忙看看delphi能不能实现以下效果
- 如何让DriveCombox更新Drive的列表?
tmpRoot: TTreeNode;
function GetRoot(aNode: string): TTreeNode;
var
I: Integer;
begin
Result := nil;
for I := 0 to TreeView1.Items.Count - 1 do // Iterate
begin
if TreeView1.Items[i].Text = aNode then
begin
Result := TreeView1.Items[i];
break;
end;
end; // for
end;
begin
//dxRibbon1.ColorSchemeName := 'MoneyTwins';
ADOQuery2.SQL.Text := 'select * from users order by node';
ADOQuery2.Open;
ADOQuery2.Filter := ' Node = null';
ADOQuery2.Filtered := True;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
TreeView1.Items.AddChild(nil, ADOQuery2.Fields[1].AsString) ;
ADOQuery2.Next;
end; // while ADOQuery2.Filter := ' Node <> null';
ADOQuery2.Filtered := True;
ADOQuery2.First;
while not ADOQuery2.Eof do
begin
tmpRoot := GetRoot(ADOQuery2.Fields[2].AsString);
if tmpRoot <> nil then
TreeView1.Items.AddChild(tmpRoot, ADOQuery2.Fields[1].AsString) ;
ADOQuery2.Next;
end;
ADOQuery2.Close;
procedure SetDataToTV(Qry: TQuery);
var
vNodes: array of TTreeNode;
vNd: TTreeNode;
SL : TStringList;
vi: integer;
begin
with Qry do
begin
if active then active := False;
SQL.Text := 'Select * from table1 order by node';
open;
SL := TStringList.Create;
vi := 0;
while not eof do
begin
if FieldByName('NODE').ISNull then//注意排序,先让所有父节点全部产生,
begin
inc(vi);
SetLength(vNodes,vi);
vNode[vi-1]:=TreeView1.Items.Add(nil,FieldByName('Name').AsString);
SL.Add(FieldByName('Name').AsString+'='+IntToStr(vi-1));
end
else
begin
vND := vNodes[SL.Values[FieldByName('Node').AsString]]
TreeView1.Items.AddChild(vNd,FieldByName('Name').AsString);
end;
next;
end;
SL.Free;
end;
end;
procedure TForm1.FindLeechDom(Leechdomname: String;node: TTreeNode);
var
temp: TQuery;
node1: TTreeNode;
begin
Try
temp := TQuery.Create(Self);
temp.DatabaseName := ExtractFilePath(Application.ExeName);
With temp do
begin
Close;
SQL.Clear;
SQL.Add('select * from leechdom.db where 上级编码 = :Value');
ParamByName('value').AsString := Leechdomname;
Open;
end;
while Not Temp.Eof do
begin
node1 := TreeView1.Items.AddChild(node,temp.FieldByName('药品类别').AsString);
FindLeechDom(temp.FieldByName('药品类别').AsString,node1);
temp.Next;
end;
Finally
temp.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
temp: TTreeNode;
begin
if FileExists(ExtractFilePath(Application.ExeName)+'leechdom.db') then
begin
Query1.DatabaseName := ExtractFilePath(Application.ExeName);
With Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from leechdom.db');
Open;
end;
while not Query1.Eof do
begin
if Query1.FieldByName('上级编码').AsString = '' then
begin
temp := TreeView1.Items.AddChild(TreeView1.Items[0],Query1.FieldByName('药品类别').AsString);
FindLeechDom(Query1.FieldByName('药品类别').AsString,temp);
end;
Query1.Next;
end;
end;
end;