这是我建的一个构树的过程,它能帮我建起树来,运行正常,代码如下:
procedure AddClass(AId: string; FatherNode: TTreeNode; treeview1: Ttreeview);
var
QryTmp: TADOQuery;
myNode: TTreeNode;
myLabel: TLabel;
begin
QryTmp := TADOQuery.Create(application);
QryTmp.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mrp';
QryTmp.SQL.Add('select a.*,b.物料名称 from 物料清单 a,物料主文件 b where a.物料编号=b.物料编号');
QryTmp.SQL.Add('and 父项编号=:AId');
qrytmp.Parameters.ParamByName('aid').value := aid;
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode := Treeview1.Items.AddChild(FatherNode, trim(QryTmp.fieldbyname('物料名称').AsString));
myLabel := TLabel.Create(application);
myLabel.Visible := false;
myLabel.Caption := QryTmp.fieldbyname('物料编号').AsString;
myNode.Data := myLabel;
AddClass(QryTmp.fieldbyname('物料编号').Asstring, myNode, treeview1); //递归用过程
QryTmp.Next;
end;
QryTmp.Free;
end;/////////////////////////
我的问题在这里:
procedure TForm3.TreeView1Click(Sender: TObject);
begin
edit1.Text :=TLabel(Treeview1.Selected.data).Caption;//显示物料编号(这个我会了)
edit2.text:=?//显示父项编号
edit3.text:=?//显示需要数量(注:物料编号、父项编号、需要数量 是同一条记录的)
end;
我现在不知道怎么把edit2、edit3成功显示出来,请帮忙,大虾们,谢谢……
procedure AddClass(AId: string; FatherNode: TTreeNode; treeview1: Ttreeview);
var
QryTmp: TADOQuery;
myNode: TTreeNode;
myLabel: TLabel;
begin
QryTmp := TADOQuery.Create(application);
QryTmp.ConnectionString:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=mrp';
QryTmp.SQL.Add('select a.*,b.物料名称 from 物料清单 a,物料主文件 b where a.物料编号=b.物料编号');
QryTmp.SQL.Add('and 父项编号=:AId');
qrytmp.Parameters.ParamByName('aid').value := aid;
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode := Treeview1.Items.AddChild(FatherNode, trim(QryTmp.fieldbyname('物料名称').AsString));
myLabel := TLabel.Create(application);
myLabel.Visible := false;
myLabel.Caption := QryTmp.fieldbyname('物料编号').AsString;
myNode.Data := myLabel;
AddClass(QryTmp.fieldbyname('物料编号').Asstring, myNode, treeview1); //递归用过程
QryTmp.Next;
end;
QryTmp.Free;
end;/////////////////////////
我的问题在这里:
procedure TForm3.TreeView1Click(Sender: TObject);
begin
edit1.Text :=TLabel(Treeview1.Selected.data).Caption;//显示物料编号(这个我会了)
edit2.text:=?//显示父项编号
edit3.text:=?//显示需要数量(注:物料编号、父项编号、需要数量 是同一条记录的)
end;
我现在不知道怎么把edit2、edit3成功显示出来,请帮忙,大虾们,谢谢……
解决方案 »
- 文本框清空问题?
- 请问怎样列出每个邮件的标题(subject),谢谢先。Delphi7 POP3
- 程序怎么判断本机是否连网 在线等
- 如何读USB硬盘的序列号?
- SetSystemPowerState函数,请问谁会用?
- 高手指点,如何动态的编写tQuery控件的OnCalcFields事件???急急急!
- 何为“MIDAS应用”?
- 我用delphi写了一个最简单的数据库程序,运行编译后的exe文件可正确运行,但在delphi中直接运行就出错了。
- 使用Label控件,如何将文字的显示方式由横的变为纵的?
- 怎样得到系统中所有注了册的可执行文件和它们的图标?
- 请问 ServerSocket 的 servertype 的stNonBlocking 和 stThreadBlocking 有什么区别??????
- 在delphi 5.0里如何使用socket建立与硬件的连接啊。。
高手们,帮帮忙啦……
你定义一个type TMyNode来存放这些信息,然后赋给data,这样就不用再查数据库了
type
TMyNode = class(TObject)
private
aId: string;
aparentId: String;
acount: integer;
public
property Id: string read aId write aId;
property parentId: String read aparentId write aparentId;
property Count: integer read acount write acount;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls, ComCtrls;type
TMyNode = record
FTYPE_ID: string;
FTYPE_NAME: String;
FTYPE_FROM_ID:String;
end;
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
TreeView1: TTreeView;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
procedure AddClass(AId: string; FatherNode: TTreeNode; treeview1: Ttreeview);implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
addclass('0',nil,treeview1)
end;procedure AddClass(AId: string; FatherNode: TTreeNode; treeview1: Ttreeview);
var
ADOQuery1:TADOQuery;
myNode: TTreeNode;
PMyNode: ^TMyNode;
begin
ADOQuery1:=TADOQuery.Create(application);
adoquery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:\Documents and Settings\Administrator\桌面\XVJIE2002_DBTreeView\新建文件夹\db1.mdb;Jet OLEDB:Database Password=""' ;
ADOQuery1.SQL.Add('select * from 编码定义 where TYPE_FROM_ID=:Aid');
ADOQuery1.Parameters.ParamByName('Aid').value := aid;
ADOQuery1.Open;
while not ADOQuery1.Eof do
begin
new(PMyNode);
myNode := Treeview1.Items.AddChild(FatherNode,trim(ADOQuery1.fieldbyname('TYPE_NAME').AsString));PMyNode^.FTYPE_ID:=ADOQuery1.fieldbyname('TYPE_ID').AsString;
PMyNode^.FTYPE_NAME:=ADOQuery1.fieldbyname('TYPE_NAME').AsString;
PMyNode^.FTYPE_FROM_ID:=ADOQuery1.fieldbyname('TYPE_FROM_ID').AsString;
myNode.Data := PMyNode;AddClass(ADOQuery1.fieldbyname('TYPE_ID').Asstring, myNode, treeview1); //递归用过程
ADOQuery1.Next;
end;
ADOQuery1.free;
end;
procedure TForm1.TreeView1Click(Sender: TObject);
begin
edit1.Text :=TMyNode(Treeview1.Selected.data^).FTYPE_ID;//显示物料编号(这个我会了)
edit2.text:=TMyNode(Treeview1.Selected.data^).FTYPE_NAME;//显示父项编号
edit3.text:=TMyNode(Treeview1.Selected.data^).FTYPE_FROM_ID;//显示需要数量(注:物料编号、父项编号、需要数量 是同一条记录的)
end;end.上班忙啊,你试试,我也不是很懂