![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
treeview + объект [D7, WinXP]
redlord © (2005-02-18 14:35:00)Всем приве
народ как в items компонента treeview повесить обект
а потом в обработчике TreeView1Click им воспользоватся
обект примерно такой
type
Tmyobj = class
n:integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
node:ttreenode;
n:integer;
begin
for n:=0 to 10 do
begin
myobj:=tmyobj.Create;
myobj.n:=n;
node:=treeview1.Items.AddChild(nil,'qqq');
treeview1.Items.AddChildObject(node,'obj',??????????????????);
end; end;
procedure TForm1.TreeView1Click(Sender: TObject);
begin
?????????????????????????
end;
Набережных С. (2005-02-18 18:32:00) [1]
> redlord
У TTreeView есть событие OnCreateNodeClass. Вместо
Tmyobj = class
можно сделать так
Tmyobj = class(TTreeNode)
А потом передавать этот класс в обработчике OnCreateNodeClass. Тогда сам итем будет содержать все необходимые свойства и методы. Иногда это бывает удобнее, чем использовать свойство Object, особенно если требуется использовать несколько разных классов.
redlord (2005-02-18 17:10:00) [2]To Eraser
спасибо
ето то что надо
Eraser (2005-02-18 17:01:00) [3]Tmyobj(TreeView1.Selected.Data).метод_или_свойство
redlord (2005-02-18 16:58:00) [4]объект с одним полем ето чтоб пример не загромождать
а убивать объекты буду вместе с Itemsами
а как обратится к объекту, на итемсе которого был произведен клик
Семен Сорокин (2005-02-18 15:55:00) [5]гы, а не проще ли так написать:
TreeView1.Items.AddChildObject(node, 'obj', TObject(n));
вместо того чтобы создавать объект с единственным integer-полем.
ЗЫ. Кстати эти объекты и убивать надо, чтобы не было утечки памяти.
begin...end (2005-02-18 14:41:00) [6]> redlord (18.02.05 14:35)
> treeview1.Items.AddChildObject(node,'obj',??????????????????);
TreeView1.Items.AddChildObject(node, 'obj', myobj);