Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c