19 个解决方案
#1
你想做什么?
#2
可以使用Object属性。
#3
定义一个记录类型来保存各种属性,然后用节点的Data属性来保存指向该记录的指针。
#4
楼上的!!!!!
我打开贴子之前想的话
你居然说得和我想的一字不差.
我爱死你了.
我打开贴子之前想的话
你居然说得和我想的一字不差.
我爱死你了.
#5
能否写出源码
#6
Data指针可以榜定。呵呵,来晚了
#7
可以自定义 TTreeNode 类:
TMyTreeNode = class(TTreeNode)
private
FTag: Integer;
……
public
property Tag: Integer read FTag write FTag;
……
end;
procedure TfrmTables.tvTablesCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
TMyTreeNode = class(TTreeNode)
private
FTag: Integer;
……
public
property Tag: Integer read FTag write FTag;
……
end;
procedure TfrmTables.tvTablesCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
#8
使用的时候 把 TTreeNode 转换为 TMyTreeNode 即可!
#9
首先定义一个指针类型
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;
绑定指针
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;
使用指针
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;
绑定指针
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;
使用指针
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
#10
budded(System is bussy!)
的方法也行.
的方法也行.
#11
to ahuige(灰不遛秋(前半身学医后半身学统计))
呵呵,英雄所见略同嘛。^_^
用mastersky(浪)的方法是比较好的,但是要记得删除节点前先Dispose相关联的指针。
呵呵,英雄所见略同嘛。^_^
用mastersky(浪)的方法是比较好的,但是要记得删除节点前先Dispose相关联的指针。
#12
如果我要实现一个的话过程是这样
1:定义需要绑定的属性的record,把所有需要绑定的属性都放到这个record里面
type BindData=record
PA:integer;
PB:rea;
PC:string;
end;
2:Treeview中所有的节点对象都是一个TTreeNode对象,这一个对象有一个Data属性,可以指向一个对象。通过这一个属性可以为每一个Node绑定一个delphi“对象”,在这里我们绑定为BindData类型的对象,通过这个就可以了。
3:在需要属性的时候,通过Data获得所需要的数据就OK了。
这其中最需要注意的就是:对象的construct&dispose操作了,一定要注意,否则会有不少的麻烦。
1:定义需要绑定的属性的record,把所有需要绑定的属性都放到这个record里面
type BindData=record
PA:integer;
PB:rea;
PC:string;
end;
2:Treeview中所有的节点对象都是一个TTreeNode对象,这一个对象有一个Data属性,可以指向一个对象。通过这一个属性可以为每一个Node绑定一个delphi“对象”,在这里我们绑定为BindData类型的对象,通过这个就可以了。
3:在需要属性的时候,通过Data获得所需要的数据就OK了。
这其中最需要注意的就是:对象的construct&dispose操作了,一定要注意,否则会有不少的麻烦。
#13
PMyRec((Tree as TTreeView).Selected.Data)^.FName取的不是当前节点的值,而是最后面一个节点的值是怎么回事呀?
#14
删除节点前先Dispose相关联的指针?是怎么做呀?能给出源码吗?
#15
在Delete之前,先Dispose(ListView.Items[Index].Data)
#16
type
Pnode=^Tnode;
Tnode=record
dm,mc:string;
end;
var
bb:Pnode;
new(bb);
bb.dm:='';
bb.mc:='';
self.treeview1.items.addchildObject(nil,'ddd',bb);
就这样就可以了
你再发挥发挥。
Pnode=^Tnode;
Tnode=record
dm,mc:string;
end;
var
bb:Pnode;
new(bb);
bb.dm:='';
bb.mc:='';
self.treeview1.items.addchildObject(nil,'ddd',bb);
就这样就可以了
你再发挥发挥。
#17
up
#18
比较好的做法,用TList保存Treeview的Data属性指向的指针,form的destory事件中再全部释放;
#19
我看是 budded(System is bussy!) 的做法最好
省去许多释放问题
省去许多释放问题
#20
#1
你想做什么?
#2
可以使用Object属性。
#3
定义一个记录类型来保存各种属性,然后用节点的Data属性来保存指向该记录的指针。
#4
楼上的!!!!!
我打开贴子之前想的话
你居然说得和我想的一字不差.
我爱死你了.
我打开贴子之前想的话
你居然说得和我想的一字不差.
我爱死你了.
#5
能否写出源码
#6
Data指针可以榜定。呵呵,来晚了
#7
可以自定义 TTreeNode 类:
TMyTreeNode = class(TTreeNode)
private
FTag: Integer;
……
public
property Tag: Integer read FTag write FTag;
……
end;
procedure TfrmTables.tvTablesCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
TMyTreeNode = class(TTreeNode)
private
FTag: Integer;
……
public
property Tag: Integer read FTag write FTag;
……
end;
procedure TfrmTables.tvTablesCreateNodeClass(Sender: TCustomTreeView;
var NodeClass: TTreeNodeClass);
begin
NodeClass := TMyTreeNode;
end;
#8
使用的时候 把 TTreeNode 转换为 TMyTreeNode 即可!
#9
首先定义一个指针类型
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;
绑定指针
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;
使用指针
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
type
PMyRec = ^TMyRec;
TMyRec = record
FName: string;
LName: string;
end;
绑定指针
procedure TForm1.Button1Click(Sender: TObject);
var
MyRecPtr: PMyRec;
TreeViewIndex: LongInt;
begin
New(MyRecPtr);
MyRecPtr^.FName := Edit1.Text;
MyRecPtr^.LName := Edit2.Text;
TreeViewIndex := StrToInt(Edit3.Text);
with TreeView1 do
begin
if Items.Count = 0 then
Items.AddObject(nil, 'Item' + IntToStr(TreeViewIndex), MyRecPtr)
else if (TreeViewIndex < Items.Count) and (TreeViewIndex >= 0) then
Items.AddObject(Items[TreeViewIndex], 'Item' + IntToStr(TreeViewIndex), MyRecPtr);
end;
end;
使用指针
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := PMyRec(TreeView1.Selected.Data)^.FName + ' ' +
PMyRec(TreeView1.Selected.Data)^.LName;
end;
#10
budded(System is bussy!)
的方法也行.
的方法也行.
#11
to ahuige(灰不遛秋(前半身学医后半身学统计))
呵呵,英雄所见略同嘛。^_^
用mastersky(浪)的方法是比较好的,但是要记得删除节点前先Dispose相关联的指针。
呵呵,英雄所见略同嘛。^_^
用mastersky(浪)的方法是比较好的,但是要记得删除节点前先Dispose相关联的指针。
#12
如果我要实现一个的话过程是这样
1:定义需要绑定的属性的record,把所有需要绑定的属性都放到这个record里面
type BindData=record
PA:integer;
PB:rea;
PC:string;
end;
2:Treeview中所有的节点对象都是一个TTreeNode对象,这一个对象有一个Data属性,可以指向一个对象。通过这一个属性可以为每一个Node绑定一个delphi“对象”,在这里我们绑定为BindData类型的对象,通过这个就可以了。
3:在需要属性的时候,通过Data获得所需要的数据就OK了。
这其中最需要注意的就是:对象的construct&dispose操作了,一定要注意,否则会有不少的麻烦。
1:定义需要绑定的属性的record,把所有需要绑定的属性都放到这个record里面
type BindData=record
PA:integer;
PB:rea;
PC:string;
end;
2:Treeview中所有的节点对象都是一个TTreeNode对象,这一个对象有一个Data属性,可以指向一个对象。通过这一个属性可以为每一个Node绑定一个delphi“对象”,在这里我们绑定为BindData类型的对象,通过这个就可以了。
3:在需要属性的时候,通过Data获得所需要的数据就OK了。
这其中最需要注意的就是:对象的construct&dispose操作了,一定要注意,否则会有不少的麻烦。
#13
PMyRec((Tree as TTreeView).Selected.Data)^.FName取的不是当前节点的值,而是最后面一个节点的值是怎么回事呀?
#14
删除节点前先Dispose相关联的指针?是怎么做呀?能给出源码吗?
#15
在Delete之前,先Dispose(ListView.Items[Index].Data)
#16
type
Pnode=^Tnode;
Tnode=record
dm,mc:string;
end;
var
bb:Pnode;
new(bb);
bb.dm:='';
bb.mc:='';
self.treeview1.items.addchildObject(nil,'ddd',bb);
就这样就可以了
你再发挥发挥。
Pnode=^Tnode;
Tnode=record
dm,mc:string;
end;
var
bb:Pnode;
new(bb);
bb.dm:='';
bb.mc:='';
self.treeview1.items.addchildObject(nil,'ddd',bb);
就这样就可以了
你再发挥发挥。
#17
up
#18
比较好的做法,用TList保存Treeview的Data属性指向的指针,form的destory事件中再全部释放;
#19
我看是 budded(System is bussy!) 的做法最好
省去许多释放问题
省去许多释放问题