mytable.db 的字段为FatherId,Id
怎样用该控件显示该数据库呢?
怎样用该控件显示该数据库呢?
解决方案 »
- daynumber :=MonthDays(Year,Month);错在哪里?
- 如何访问一个页面上的图片?页面图片(验证码)是一个x.asp?r=随机数,的形式
- 如何使TListBox在增加Item时马上显示出来?
- ★fastreport中显示主从从关系报表、来者有分、帮我顶★
- 愤怒~!!!!!!全文检索,搜索出来的文章,几乎全部打不开的~,搜索了几十篇,没一篇打得开~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 关于数据库的一个小小问题,请各位高手指教!
- 有谁用过cxgrid?怎么在表的下方添加汇总项目?
- 急寻 中英文对照的 计算机方面的 论文,我可以给1000分
- 如何使控件的大小随窗体的大小改变而改变!
- 我想做一个较复杂的查询:
- 有Rave reports高手吗? 请问怎么在delphi中通过程序控制rave中的控件.(例如通过单击按钮来给rave中的组件赋值.).还有,怎么在rave中调出每
- BatchMove
PNodeRec = ^TNodeRec; //树结点附加信息
TNodeRec = record
CodeLevel: string; //层次编码
Coefficient:Integer; //附加信息
end;function LoadCode(treename:TTreeView;crTbl:TDBDataSet;
field1,field2,field3,field4,field5:string;
lestr:integer;jgname:string):Integer; //create tree
{treename :所建树名 crtbl :数据源 field1 :级别代码 field2 :显示内容
field3 :树中附加信息 lestr : 是否根据级别代码来分层建树 jgname :主标题
field4 : 建树时各层图标代码 field5 :当树打开时图标代码 }
var ShowTxt:String;
Level:Integer;
MyNode:array[0..6]of TTreeNode;
TpNodeData:PNodeRec;
begin
Screen.Cursor:=crHourGlass;
Level:=0;
With crTbl do
begin
try
if not Active then Open;
First;
treename.Items.Clear;
new(TpNodeData);
TpNodeData^.Codelevel :=jgname;
MyNode[Level]:=treename.Items.Addobject(treename.TopItem,jgname,TpNodeData);
MyNode[Level].ImageIndex:=4;
MyNode[Level].SelectedIndex:=4;
While Not Eof do
begin
ShowTxt:=FieldByName(field2).AsString;
if lestr=1
then Level:=GetLevel(fieldbyname(field1).AsString)
else Level:=1;
if Level>0 then
begin
new(TpNodeData);
TpNodeData^.Codelevel :=FieldByName(field3).AsString ;
MYnode[level]:=treename.Items.AddChildObject(mynode[level-1],showtxt,tpnodedata);
if field4<>''
then MyNode[Level].ImageIndex:=fieldbyname(field4).AsInteger ;
if field5<>''
then MyNode[Level].SelectedIndex:=fieldbyname(field5).AsInteger ;
end;
Next;
end;
finally
Close;
end;
end;
MyNode[0].Expand(False);//将首节点展开
Screen.Cursor:=crDefault;
Result:=LEVEL;
end;
node :TTreeNode;
begin
while not query1.Eof do
begin
Node :=TreeView1.Items.AddFirst(nil,query1.FieldByName('FatherID').AsString);
while not query2.eof do
begin
TreeView1.Items.AddChild(node,FieldByName('ID').AsString);
query2.Next;
end;
query1.Next;
end;
不知道是不是这个意思?
w_no相当于你指的Id
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
//////////数据库结构: //////////
//////////department: name:部门名称,char //////////
////////// d_no:部门号,int //////////
//////////worker: name:员工姓名,char //////////
////////// w_no:员工号,int //////////
////////// d_no:部门号,int //////////
////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ComCtrls, Db, ADODB;type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
ADOQuery1: TADOQuery; //连接department
ADOQuery2: TADOQuery; //连接worker
Edit1: TEdit; //结点信息
procedure Button1Click(Sender: TObject);//生成树
procedure TreeView1Click(Sender: TObject);//显示结点信息
procedure FormClose(Sender: TObject; var Action: TCloseAction);//释放p_data
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
p_data:pstring;
implementation{$R *.DFM}//生成树
procedure TForm1.Button1Click(Sender: TObject);
var
fn,sn:ttreenode; //fn:部门结点 sn:员工结点
begin
treeview1.Items.BeginUpdate;
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('select * from department');
adoquery1.open;
treeview1.Items.Clear;
new(p_data);
p_data^:='root';
fn:=treeview1.Items.AddObject(nil,'root',p_data);
while not adoquery1.Eof do
begin
with treeview1.Items do
begin
new(p_data);
p_data^:=adoquery1.fieldbyname('d_no').asstring;
sn:=treeview1.Items.AddChildobject(fn,adoquery1.fieldbyname('name').asstring,p_data); adoquery2.close;
adoquery2.sql.Clear;
adoquery2.sql.add('select * from worker where d_no=:d_no');
adoquery2.Parameters.ParamByName('d_no').value:=p_data^;
adoquery2.open;
while not adoquery2.Eof do
begin
new(p_data);
p_data^:=adoquery2.fieldbyname('w_no').asstring;
treeview1.Items.addchildobject(sn,adoquery2.fieldbyname('name').asstring,p_data);
adoquery2.Next;
end;
end;
adoquery1.Next;
end;
adoquery1.Close;
adoquery2.close;
treeview1.Items.EndUpdate;
end;//显示结点信息
procedure TForm1.TreeView1Click(Sender: TObject);
begin
if treeview1.Selected=nil then exit; case treeview1.Selected.Level of
1:begin
edit1.text:='部门号:'+pstring(treeview1.selected.Data)^;
end;
2:begin
edit1.text:='工号:'+pstring(treeview1.selected.Data)^;
end;
end;
end;
//释放p_data
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if p_data<> nil then Dispose(p_data);
end;end.