Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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.039 c
15-1164178224
homm
2006-11-22 09:50
2006.12.10
“Хвостатая” ссылка


15-1163766793
MikePetrichenko
2006-11-17 15:33
2006.12.10
gmail


15-1164037430
oldman
2006-11-20 18:43
2006.12.10
А вот зато как наши девушки бразильянок обули!!!


1-1161939857
Jolik
2006-10-27 13:04
2006.12.10
Есть работа... (сорри за оффтоп - в форуме "Прочие" ...


15-1164005896
vidiv
2006-11-20 09:58
2006.12.10
Вопрос по MSSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский