Y
yyanghhong
Unregistered / Unconfirmed
GUEST, unregistred user!
Hi all
it is a database application, i use do
A and ttreeview to built a tree structure,
it is simple, but it is useful, The table name of oracle is tree_tab, the fields are
p_key(number),c_key(number),val(varchar).
the record in the table is like below.
p_key, c_key, val
1 3 a3
2 4 a4
1 2 a2
...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Oracle;
type
TForm1 = class(TForm)
OracleSession1: TOracleSession;
OracleQuery1: TOracleQuery;
TreeView1: TTreeView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
TreeNode_list:array of ttreenode;
last_level:integer;
begin
with oraclequery1,treeview1.items do
begin
sql.Clear;
Clear;
sql.add('select level,c_key,val ');
sql.add(' from tree_tab ');
sql.add(' start with p_key= 1 ');
sql.add(' CONNECT BY PRIOR c_key=p_key ');
execute;
last_level:=0;
setlength(TreeNode_list,1);
TreeNode_list[0] := AddObject(nil, 'Root', pointer(1));
while not eof do
begin
if fieldasinteger('level')>last_level then
begin
setlength(TreeNode_list,length(TreeNode_list)+1);
TreeNode_list[fieldasinteger('level')]:=AddChildObject(TreeNode_list[last_level],fieldasstring('val'),pointer(fieldasinteger('c_key')));
end
else
begin
TreeNode_list[fieldasinteger('level')]:=AddChildObject(TreeNode_list[fieldasinteger('level')-1],fieldasstring('val'),pointer(fieldasinteger('c_key')));
end;
last_level:=fieldasinteger('level');
next;
end;
end;
treeview1.FullExpand;
end;
it is a database application, i use do
A and ttreeview to built a tree structure,
it is simple, but it is useful, The table name of oracle is tree_tab, the fields are
p_key(number),c_key(number),val(varchar).
the record in the table is like below.
p_key, c_key, val
1 3 a3
2 4 a4
1 2 a2
...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, Oracle;
type
TForm1 = class(TForm)
OracleSession1: TOracleSession;
OracleQuery1: TOracleQuery;
TreeView1: TTreeView;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
TreeNode_list:array of ttreenode;
last_level:integer;
begin
with oraclequery1,treeview1.items do
begin
sql.Clear;
Clear;
sql.add('select level,c_key,val ');
sql.add(' from tree_tab ');
sql.add(' start with p_key= 1 ');
sql.add(' CONNECT BY PRIOR c_key=p_key ');
execute;
last_level:=0;
setlength(TreeNode_list,1);
TreeNode_list[0] := AddObject(nil, 'Root', pointer(1));
while not eof do
begin
if fieldasinteger('level')>last_level then
begin
setlength(TreeNode_list,length(TreeNode_list)+1);
TreeNode_list[fieldasinteger('level')]:=AddChildObject(TreeNode_list[last_level],fieldasstring('val'),pointer(fieldasinteger('c_key')));
end
else
begin
TreeNode_list[fieldasinteger('level')]:=AddChildObject(TreeNode_list[fieldasinteger('level')-1],fieldasstring('val'),pointer(fieldasinteger('c_key')));
end;
last_level:=fieldasinteger('level');
next;
end;
end;
treeview1.FullExpand;
end;