Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

TreeView -замучал уже   Найти похожие ветки 

 
Александр Ч.   (2003-03-26 14:44) [0]

Не могу извлечь данные из поля data при перемещению по дереву.
Пока я использовал тип integer все работало.
заменил его на

type
PTreeType = ^TTreeID;
TTreeID = record
Tree_l1: string;
end;

На событии OnChange

ID:=PTreeType(TreeviewObj.Selected.Data)^.Tree_l1;

Получается, что ID вообще не меняется и всегда равно последнему
значению. Что я не так делаю?

Само дерево заполняется в цикле по результатам запроса.
Заполняется так:



var node:TTreeNode;
org, TorgZone:integer;
LocalTree_ID:PTreeType;

begin
ShowTreeObject;
DsTree.Active:=False;
DsTree.Active:=True;
TreeViewObj.Items.BeginUpdate;
TreeViewObj.Items.Clear;
org:=0;
TorgZone:=0;
New(LocalTree_ID);
While not DsTree.Eof do begin
If org<>DsTreeID_Org.AsInteger then begin
LocalTree_ID^.Tree_l1:=FormListObj.DSTreeID_Tree.AsString;
Node:= TreeViewObj.Items.AddObject(nil, FormListObj.DSTreeSNameOrg.AsString, LocalTree_ID);
end;
IF TorgZone<>DsTreeID_TorgZone.AsInteger then begin
LocalTree_ID^.Tree_l1:=FormListObj.DSTreeID_Tree.AsString;
TreeViewObj.Items.AddChildObject(node,FormListObj.DSTreeNameTorgZone.AsString, LocalTree_ID);
end; //
org:= DsTreeID_Org.AsInteger;
TorgZone:=DsTreeID_TorgZone.AsInteger;
DsTree.Next;
end; //eof
TreeViewObj.Items.EndUpdate;
end;


 
Guerrillero ©   (2003-03-26 15:03) [1]

Надо выделять память для указателя для каждой новой ветки, а ты один раз выделил память и для всех веток адрес памяти Data один и тот же и поэтому значения одинаковы
В общем, делай New для каждой новой ветки


 
AlexT1000   (2003-03-26 15:05) [2]

может , я чего и не понимаю . но сдается мне ты всем Nodaм своего TreeView присваеваешь значение одной и тойже переменной
LocalTree_ID поэтому все DATA указывают на одну переменную
LocalTree_ID

тебе New(LocalTree_ID) нужно поставить сюда
IF TorgZone<>DsTreeID_TorgZone.AsInteger then begin
New(LocalTree_ID);
LocalTree_ID^.Tree_l1:=FormListObj.DSTreeID_Tree.AsString;
TreeViewObj.Items.AddChildObject(node,FormListObj.DSTreeNameTorgZone.AsString, LocalTree_ID);
end; //


 
Александр Ч   (2003-03-26 15:07) [3]

Guerrillero - Спасибо дружище, работает.
Кто бы мог подумать, что так просто.


 
Александр Ч   (2003-03-26 15:09) [4]

AlexT1000 - точно так и надо было.



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-19691
Navigator_3000
2003-03-26 11:26
2003.04.07
Расположение TMediaPlayer на экране?


14-19756
dimich1978
2003-03-22 15:53
2003.04.07
Соединение двух зданий на скорости не более 10Мбит на HPNA.


14-19852
Дмитрий К.К.
2003-03-20 06:18
2003.04.07
Именинники 20 марта


14-19810
iNew
2003-03-20 09:19
2003.04.07
Подскажите где взять хороший компонент для проверки CRC,


14-19776
Knight
2003-03-20 19:57
2003.04.07
Как реализовать превью для изображений в из базы данных