![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как за 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