Главная страница
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.018 c
1-19651
Andrey Terekhov
2003-03-25 20:49
2003.04.07
Обновление работающей программы


1-19589
Кот Джин
2003-03-28 15:18
2003.04.07
Пара вопросиков по RichEdit


1-19622
lightix
2003-03-25 13:15
2003.04.07
Как узнать код ошибки и вместо стандартного окна выдать свое?


1-19586
Tornado
2003-03-28 15:14
2003.04.07
работа с директориями


7-19877
MixerPro
2003-02-12 16:06
2003.04.07
Как определить высоту в пикселях Caption формы?