1.物料文件表:编号,名称,
2.物料清单表:父项编号,编号,数量
我的问题如下:
pnode1:=treeview1.Items.Item[i-1];
if pnode1.text =pname then
begin
//创建子节点
pnode:=treeview1.Items.AddChild(pnode1,name);
这样的话,如果有同样名称的而编号不同的物料显示出来就可能会出现错误的显示。
问题如下:如果我改为
pnode1:=treeview1.Items.Item[i-1];
if pnode1.Data =pcode then
begin
//创建子节点
pnode:=treeview1.Items.AddChild(pnode1,name);
这样的话,它就提示出现错误,请问如何改用data的方法是不会出错呀?谢谢……
2.物料清单表:父项编号,编号,数量
我的问题如下:
pnode1:=treeview1.Items.Item[i-1];
if pnode1.text =pname then
begin
//创建子节点
pnode:=treeview1.Items.AddChild(pnode1,name);
这样的话,如果有同样名称的而编号不同的物料显示出来就可能会出现错误的显示。
问题如下:如果我改为
pnode1:=treeview1.Items.Item[i-1];
if pnode1.Data =pcode then
begin
//创建子节点
pnode:=treeview1.Items.AddChild(pnode1,name);
这样的话,它就提示出现错误,请问如何改用data的方法是不会出错呀?谢谢……
var
i:integer;
p:^string;
begin
for i := 0 to 2 do
begin
new(p);
p^:=inttostr(i);
treeview1.Items.AddObject(nil,'我爱你',p);
end;
end;procedure TForm1.TreeView1DblClick(Sender: TObject);//双击的时候显示编号
var
p:^string;
begin
p:=TreeView1.Selected.Data;
showmessage(p^);
end;记得在关闭窗体、清空树或重新生成树的时候将节点的指针记录类型的内存给释放掉。
procedure TForm1.cleartree(tree: TTreeview);
var
i:integer;
begin
for i:=0 to tree.Items.Count-1 do
begin
if tree.Items[i].Data<>nil then
Dispose(tree.Items[i].Data);
end;
tree.Items.Clear;
end;
PSort = ^TPSort;
TPSort = record
id: integer;
Sort:String;
end;//循环(我没有用,是测试)
procedure TForm1.Button1Click(Sender: TObject);
var
Sort : PSort;
node : TTreeNode;
begin
new(Sort);
Sort.id :=1;
Sort.Sort :='文件';
with treeView1.Items do
begin
node := addchild(nil,sort.Sort);
node.Data := sort;
end;
new(sort);
Sort.id :=2;
Sort.Sort :='资料';
with treeView1.Items do
begin
node := addchild(nil,sort.Sort);
node.Data := sort;
end;
end;//显示物料名
procedure TForm1.treeview1DblClick(Sender: TObject);
var
sort:pSort;
begin
New(sort);
sort := TreeView1.Selected.Data;
showmessage(sort.Sort);
end;增加子项时,根据父的sort.id来进行判断就可以了。
你可以试一下。
PSort = ^TPSort; //写在这里总是出错:unexpected token: PSort
TPSort = record
id: integer;
Sort:String;
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
PSort = ^TPSort;
TPSort = record
id: integer;
Sort:String;
end;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
ListBox1: TListBox;
procedure TreeView1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.TreeView1Click(Sender: TObject);
var
sort:pSort;
begin
New(sort);
sort := TreeView1.Selected.Data;
showmessage(sort.Sort+' '+inttostr(sort.id));
end;procedure TForm1.FormCreate(Sender: TObject);
var
Sort : PSort;
node : TTreeNode;
begin
new(Sort);
Sort.id :=1;
Sort.Sort :='文件';
with treeView1.Items do
begin
node := addchild(nil,sort.Sort);
node.Data := sort;
end;
new(sort);
Sort.id :=2;
Sort.Sort :='资料';
with treeView1.Items do
begin
node := addchild(nil,sort.Sort);
node.Data := sort;
end;
end;end.
var
sort:pSort;
begin
New(sort);
sort := TreeView1.Selected.Data;
showmessage(sort.Sort+' '+inttostr(sort.id)); //为什么我这里显示出来都是树形同一层的最后一个结点的值????
end;
为什么?