procedure TForm9.FillTreeViews(TreeView: TTreeView);
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;
begin
//ADS_Tmp := TADODataSet.Create(Self);
ADS_Tmp := TADODataSet.Create(nil);
ADS_Tmp.Connection:=ADOConnection1; with ADS_Tmp do
try
Close;
CommandText := 'Select * from Menu Where MenuID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node,FieldByName('Menuname').AsString);
CreateSubTree(mLocalName, TreeNode); // 此处循环递归
Next;
end;
finally
ADS_Tmp.Free;
end;
end;
begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil,'项目' ) do
begin
ImageIndex := 0;
SelectedIndex := 0;
end;
CreateSubTree('0', TreeView.Items[0]);
TreeView.Items.EndUpdate;
TreeView.Items[0].Selected := True;
end;
这是代码,但是我想在最上层也是使用数据库里面的应该怎么做?这里是自己设置的。 with TreeView.Items.Add(nil,'项目' ) do
procedure CreateSubTree(FNodeName: string; Node: TTreeNode = nil);
var
mLocalName: string;
TreeNode: TTreeNode;
Ads_Tmp: TADODataSet;
begin
//ADS_Tmp := TADODataSet.Create(Self);
ADS_Tmp := TADODataSet.Create(nil);
ADS_Tmp.Connection:=ADOConnection1; with ADS_Tmp do
try
Close;
CommandText := 'Select * from Menu Where MenuID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node,FieldByName('Menuname').AsString);
CreateSubTree(mLocalName, TreeNode); // 此处循环递归
Next;
end;
finally
ADS_Tmp.Free;
end;
end;
begin
TreeView.Items.BeginUpdate;
TreeView.Items.Clear;
with TreeView.Items.Add(nil,'项目' ) do
begin
ImageIndex := 0;
SelectedIndex := 0;
end;
CreateSubTree('0', TreeView.Items[0]);
TreeView.Items.EndUpdate;
TreeView.Items[0].Selected := True;
end;
这是代码,但是我想在最上层也是使用数据库里面的应该怎么做?这里是自己设置的。 with TreeView.Items.Add(nil,'项目' ) do
var
QryTmp:TADOQuery;
myNode:TTreeNode;
myLabel:TLabel;
begin
QryTmp := TADOQuery.Create(self);
QryTmp.Connection := ADOConnection1;//.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source= '+extractfilepath(application.ExeName)+ 'test.mdb;Persist Security Info=False ';
QryTmp.SQL.Add( 'select * from tb1 ');
QryTmp.SQL.Add( 'where FatherId= '+inttostr(AId));
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname( 'CName ').AsString); //创建标签,caption存放各分支的AutoId表识
myLabel:=TLabel.Create(self);
myLabel.Visible:=false;
myLabel.Caption:=QryTmp.fieldbyname( 'AutoId ').AsString;
myNode.Data:=myLabel;
myNode.ImageIndex := QryTmp.FieldByName( 'IconIndex ').AsInteger; AddClass(QryTmp.fieldbyname( 'AutoId ').AsInteger,myNode); //递归调用过程
QryTmp.Next;
end;
QryTmp.Free;
end;