问题:数据库:id , name ,sex
我想用一个树结构把所有的name都显示出来,并且当选某条数据的时候,在下面的
edit框中得到这条数据的所有信息!但是当有相同的name 时显示的总是数据库中的第一条,
所以我想将查询的时候将所有的id ,然后通过在节点上显示id 所对应的name.
就这一句话,我该怎么写啊!!!
原代码:
xx[w]:=Treeview1.Items.AddChild(ww[k],AdoQuery1.Fieldbyname(' name').AsString );for i:=0 to w-1 do
begin
if treeview1.Selected=xx[i] then
begin
ADOQuery1.First ;
for j:=0 to ADOQuery1.RecordCount-1 do
begin
if ADOQuery1.FieldByName('username').AsString =xx[i].Text then
//if ADOQuery1.FieldByName('Truename').AsString =xx[i].Text then
我想用一个树结构把所有的name都显示出来,并且当选某条数据的时候,在下面的
edit框中得到这条数据的所有信息!但是当有相同的name 时显示的总是数据库中的第一条,
所以我想将查询的时候将所有的id ,然后通过在节点上显示id 所对应的name.
就这一句话,我该怎么写啊!!!
原代码:
xx[w]:=Treeview1.Items.AddChild(ww[k],AdoQuery1.Fieldbyname(' name').AsString );for i:=0 to w-1 do
begin
if treeview1.Selected=xx[i] then
begin
ADOQuery1.First ;
for j:=0 to ADOQuery1.RecordCount-1 do
begin
if ADOQuery1.FieldByName('username').AsString =xx[i].Text then
//if ADOQuery1.FieldByName('Truename').AsString =xx[i].Text then
TTreenode.data:=(自定义一个指针类型,)
回复人: l_xiaofeng(≈流水≈不腐≈) ( ) 信誉:100 2003-06-05 09:09:00 得分:0
先把ID加到树里面,然后按ID检索就行!
您能够具体一点马!!能够提供一点代码马???谢谢了!!!!
Treeview1.Items.AddChildObject(ww[k],AdoQuery1.Fieldbyname('name').AsString,ADO,ADOQuery1.getbook );
然后在treeview1.ONclick事件中加一句
ADOQuery1.gotobook(Node.data);(Node为当前接点)
就行了
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ComCtrls, Grids, DBGrids;type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
Button1: TButton;
ADOQuery1: TADOQuery;
Button2: TButton;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TreeView1: TTreeView;
TabSheet2: TTabSheet;
DataSource1: TDataSource;
ADOQuery1ID: TAutoIncField;
ADOQuery1ParentID: TIntegerField;
ADOQuery1Name: TWideStringField;
DBGrid1: TDBGrid;
Memo1: TMemo;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure FillTreeView(TreeView: TTreeView);
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;procedure TForm1.FillTreeView(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.Connection := ADOConnection1;
with ADS_Tmp do
try
Close;
CommandText := 'Select * from Type Where ParentID =' + FNodeName;
Open;
First;
while not Eof do
begin
mLocalName := FieldbyName('ID').Asstring;
TreeNode := TreeView.Items.AddChild(Node, FieldByName('Name').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 := 1;
SelectedIndex := 1;
end;
CreateSubTree('0', TreeView.Items[0]);
TreeView.Items.EndUpdate;
TreeView.Items[1].Selected := True;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
FillTreeView(TreeView1);
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ADOQuery1.Close;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.Open;
end;end.