Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как за Node: TTreeNode привязыть число


DelphiLexx ©   (2007-04-06 10:47:00) 

Я хочу за каждым Node: TTreeNode привязывать определенное число сво-ва Node.Tag к сожалению нет как мне это сделать?


_Аноним   (2007-04-14 11:58:00) [1]


> ANB ©
</I
> По всей видимости, в броланд не думали, что кто то в указателе
> будет хранить целые числа :) А смысла сохранять указатели
> в файл нету никакого.

>

Это было бы половина беды. Беда ниачинается, когда окно пересоздается (а борлаанды очень любят пересоздавать окна). Похоже, тот же механизм сохранения\восстановления используется.


VID   (2007-04-14 03:37:00) [2]

очевидно, что в последствии, при обращении к нодам, необходимо будет кастить их к созданному классу
TNodeEx(treeview.items[0]).FSomeInt := 12002;


VID   (2007-04-14 03:36:00) [3]

создаем свой класс
type
 TNodeEx = class(TTreeNode)
   FSomeInt: Integer;
 end;


затем обрабатываем событие CreateNodeClass дерева
procedure TForm1.TreeView1CreateNodeClass(Sender: TCustomTreeView;
 var NodeClass: TTreeNodeClass);
begin
 NodeClass := TNodeEx;
end;


ANB   (2007-04-09 16:31:00) [4]


> Если "указатели" на самом деле инты, то может и пригодиться
> сохранение в файл
>
> Кстати в генофонде в этом месте явный косяк

По всей видимости, в броланд не думали, что кто то в указателе будет хранить целые числа :) А смысла сохранять указатели в файл нету никакого.


_Аноним   (2007-04-08 17:15:00) [5]


> Loginov Dmitry ©

Если "указатели" на самом деле инты, то может и пригодиться сохранение в файл

Кстати в генофонде в этом месте явный косяк


Loginov Dmitry   (2007-04-08 15:44:00) [6]

> Только когда дерево в файл сохраняется, указатели на данные
> нихрена сами не сохраняются, поэтому их нужно сохранять
> вручную


А где тут шла речь про сохранение в файл? Тем более указателей. Тем более нахрена указатели сохранять в файл?


TStas   (2007-04-08 14:35:00) [7]

Только когда дерево в файл сохраняется, указатели на данные нихрена сами не сохраняются, поэтому их нужно сохранять вручную


begin...end   (2007-04-07 12:47:00) [8]

> Amoeba ©   (06.04.07 17:44) [5]

Не совсем так. Node.Data := Pointer(N).


_Аноним   (2007-04-06 17:47:00) [9]


> т.е. целое

Точнее, то есть любой тип с размером SizeOf(Pointer)  или меньше


Amoeba   (2007-04-06 17:47:00) [10]


> S@shka ©   (06.04.07 11:22) [4]

Если число целое, то незачем такой огород городить. Если вещественное длиннее 4 байтов - то, естественно, придется использовать указатели, New и Dispose.


Amoeba   (2007-04-06 17:44:00) [11]

Если это число Integer, Word и т.д., т.е. целое, то необходимо и достаточно

Integer(Node.Data) := N;


S@shka   (2007-04-06 11:22:00) [12]

Комментирую

var
 P : PInteger;
begin
  New (P);
  P^ := ... твое число
  Node.Data := P;

end;

при уничтожении не забываем про Dispose


Сергей М.   (2007-04-06 10:50:00) [13]


> Что Data?


Вместо отсутствующего Tag имеется св-во Data - его и используй.


DelphiLexx   (2007-04-06 10:48:00) [14]

Что Data? Не совсем понятно.


clickmaker   (2007-04-06 10:47:00) [15]

.Data


Наверх

Титульная страница Поиск, карта сайта Написать письмо