代码如下:
TNodeObject = class(TObject)
Id :integer;
Name :string;
company :string;
deparment :string;
end;procedure TForm1.Button1Click(Sender: TObject);
var
cur_node,Root:TTreeNode;
begin
Root := TreeView1.Items.AddChild(nil,'主目录');
with adoquery1 do
begin
if active then
close;
sql.Text := 'select * from T_ITEM order by itemid';
Open;
First;
while not Eof do
begin
NodeObject := TNodeObject.Create;
NodeObject.Name := Trim(fieldbyname('ITEMNAME').AsString) ;
NodeObject.company := Trim(IntToStr(fieldbyname('ITEMID').AsInteger));
NodeObject.Id := fieldbyname('ITEMIDENTITY').AsInteger;
cur_node.Data := NodeObject;
cur_node := TreeView1.Items.AddChild(Root,NodeObject.Name);
Next;
end;
end;
end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
try
if Node<>nil then
begin
Edit1.Text := TNodeObject(node.data).Name;
Edit2.Text := TNodeObject(node.data).company;
Edit3.Text := IntToStr(TNodeObject(node.data).Id);
end;
except end;
end;
我现在的问题是在选择不同节点的时候,发现数据固定在最后一条数据,并没有根据焦点选择的节点切换数据。却不知道问题发生在那里,各位麻烦给看看致电一下
TNodeObject = class(TObject)
Id :integer;
Name :string;
company :string;
deparment :string;
end;procedure TForm1.Button1Click(Sender: TObject);
var
cur_node,Root:TTreeNode;
begin
Root := TreeView1.Items.AddChild(nil,'主目录');
with adoquery1 do
begin
if active then
close;
sql.Text := 'select * from T_ITEM order by itemid';
Open;
First;
while not Eof do
begin
NodeObject := TNodeObject.Create;
NodeObject.Name := Trim(fieldbyname('ITEMNAME').AsString) ;
NodeObject.company := Trim(IntToStr(fieldbyname('ITEMID').AsInteger));
NodeObject.Id := fieldbyname('ITEMIDENTITY').AsInteger;
cur_node.Data := NodeObject;
cur_node := TreeView1.Items.AddChild(Root,NodeObject.Name);
Next;
end;
end;
end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
try
if Node<>nil then
begin
Edit1.Text := TNodeObject(node.data).Name;
Edit2.Text := TNodeObject(node.data).company;
Edit3.Text := IntToStr(TNodeObject(node.data).Id);
end;
except end;
end;
我现在的问题是在选择不同节点的时候,发现数据固定在最后一条数据,并没有根据焦点选择的节点切换数据。却不知道问题发生在那里,各位麻烦给看看致电一下
解决方案 »
- 升五角散分,预祝大家国庆、中秋节快乐!
- 关于IHTMLDocument2的问题
- 有谁能够解释以下delphi的vcl中的窗口消息分配是如何运行的。
- 我发现delphi编的程序比较大如何压缩delphi的程序啊
- 如何根据已有的日期计算某人的年龄??
- OleContainer中WORD的一点点小问题?
- 寻求数据库设计高手来解决-----当场给分 快行动!!!!!!!!!!!!
- advstringgrid
- 我内部网里面,前任做的软件可以直接在我的电脑进入有那个软件的电脑,直接在我的电脑使用
- 各位大侠请了!问ping的功能如何用Delphi编程实现?
- 取控件名的简单问题
- 如何得之createprocess创建的进程已经运行?
Edit1.Text := ..........
........
end;
Edit1.Text := ..........
........
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
PObjectNode = ^TObjectNode;
TObjectNode = Record
Name:string;
value:string;
end;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormShow(Sender: TObject);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementationuses Math;{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
var
i:integer;
Root:TTreeNode ;
Obj:PObjectNode ;
begin
Root := Treeview1.Items.AddChild(nil,'Root'); for i := 0 to 20 do
begin
new(Obj);
obj.Name := IntToStr(i) + 'Name';
obj.value := IntToStr(i);
TreeView1.Items.AddChildObject(Root,IntTostr(i),obj);
end;
end;procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
if Node.Level = 1 then
begin
Edit1.Text := PObjectNode(Node.Data)^.Name ;
Edit2.Text := PObjectNode(Node.Data)^.value ;
end;
end;end.