Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизTTreeView: как правильно использовать метод AddObject? Найти похожие ветки
← →
Gavrila © (2006-11-20 11:31) [0]Есть тип
type
PMyRec = ^TMyRec;
TMyRec = Record
Param : String;
End;
Добавляю таким образом:procedure TForm1.Button1Click(Sender: TObject);
Var
MyRec1: PMyRec;
begin
New(MyRec1);
MyRec1.Param:= Trim(Edit1.Text);
TreeView1.Items.AddObject(Nil, Trim(Edit1.Text), MyRec1);
Dispose(MyRec1);
end;
Пытаюсь его прочитать таким образом:procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
Var
MyRec1: PMyRec;
begin
If Node = Nil then
Exit;
New(MyRec1);
MyRec1:= PMyRec(TreeView1.Selected.Data^);
Edit1.Text:= MyRec1.Param;
Dispose(MyRec1);
end;
возвращает всякий "мусор"...
подскажите, плз, что я не так делаю?
← →
SPeller_work (2006-11-20 11:35) [1]procedure TForm1.Button1Click(Sender: TObject);
Var
MyRec1: PMyRec;
begin
New(MyRec1);
MyRec1.Param:= Trim(Edit1.Text);
TreeView1.Items.AddObject(Nil, Trim(Edit1.Text), MyRec1);
// Dispose(MyRec1);
end;
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
Var
MyRec1: PMyRec;
begin
If Node = Nil then
Exit;
// New(MyRec1);
MyRec1:= PMyRec(TreeView1.Selected.Data^);
Edit1.Text:= MyRec1.Param;
// Dispose(MyRec1);
end;
Dispose надо делать при удалении итема из списка
← →
clickmaker © (2006-11-20 11:36) [2]
> MyRec1:= PMyRec(TreeView1.Selected.Data^);
MyRec1:= PMyRec(TreeView1.Selected.Data);
далее к полям можно обращаться обычным образом.
Разыменование нужно, только если MyRec1 объявлена как TMyRec
← →
SPeller_work (2006-11-20 11:37) [3]Методом TreeView1.Items.AddObject ты запоминаешь указатель на свои данные. А в твоем варианте кода ты сразу же освобождаешь память, на которую запомнил указатель. Потому и мусор был. Память надо освобождать при удалении итема, чтобы утечек небыло, если treeview этим сам не занимается (не вкурсе этого момента).
← →
Gavrila © (2006-11-20 11:39) [4]сенкс, понял
← →
clickmaker © (2006-11-20 11:51) [5]
> treeview этим сам не занимается
не занимается
← →
Vlad433 © (2006-11-20 12:01) [6]В приведенном коде строка edit1.text 2 раза запоминается, в тексте узла и обьекте. Зачем ?
← →
Gavrila © (2006-11-20 12:11) [7]это простой пример, на самом деле название узла будет содержать название объекта, а в объекте будут храниться некие данные, описывающие его
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.063 c