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

Вниз

Работа с TTreeView   Найти похожие ветки 

 
EdSin   (2006-04-26 14:43) [0]

Здравствуйте.
Возникла у меня задача.
Есть дерево элементов TreeView
У каждого элемента есть параметры ( сколько - не известно - грузятся из базы данных ).
Нужно каким-то образом ( удобным конечно ) хранить эти параметры, чтобы в любой момент можно было выбрать элемент в дереве, отредактировать, удалить или добавить параметры.
Есть вариант - реализовать хранение этих параметров в INI-файле, но мне кажется не очень эффективный.
Может есть у кого какие соображения???
Буду рад любой идее. Спасибо


 
Eraser ©   (2006-04-26 14:49) [1]


> EdSin   (26.04.06 14:43)

если вы о способе хранения параметров в памяти, то используйте св-во Node.Data в котором можно хранить указатель либо на структуру с параметрами либо на объект.
А сохранять на диск можно с пом. xml.


 
EdSin   (2006-04-26 16:27) [2]

Работа с файлом в любом случае, мне кажется, слишком обременительно будет. Это будут постоянные обращения к файлу ( чтение, запись ).
А какую структуру можно использовать и как получить к ней доступ через указатель ( к сожалению с указателями никогда не работал ). Если не трудно - подскажите, пожалуйста


 
Eraser ©   (2006-04-26 18:35) [3]


> EdSin   (26.04.06 16:27) [2]


> А какую структуру можно использовать и как получить к ней
> доступ через указатель ( к сожалению с указателями никогда
> не работал )

очень советую сначала почитать литературу по object pascal и разобраться что же такое указатель. всё намного проще, чем кажется на первый взгляд. указатель - это всего лишь адрес определённого участка памяти, по которому и распологаются данные, в нашем случае, структуры.

ЗЫ лучше почитайте книгу.


 
Ksenom ©   (2006-04-27 15:54) [4]

Какраз твой пример с деревом и данными.
Добавляю ноды и данные.
Главное помнить что если ты просто потом очистишь дерево то даные в памяти остануться, нужно указатели dispose()!!!!!!!
procedure TDrev.PicAdd(Node:TTreeNode; ID:string);
 var Base:TADOQuery;
  TipId:^TTipId;{!!!!!!!!!!!!}
begin
 Base:=TADOQuery.Create(nil);
 Base.ConnectionString:="";
 Base.SQL.Text:="SELECT Caption, PictureID FROM pictures WHERE "+ID+" ORDER BY Caption";
 Base.Open;
 while not(Base.Eof) do
 begin
   new(TipId);{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
   TipId.Tip:="5";{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
   TipId.Id:=vartostr(base.FieldValues["PictureID"]);{!!!!!!!!!!!!!!!!!!!!!!!!!!!1}
   Drev.TreeView1.Items.AddChildObject(Node,Drev.DrevFiltr(Base.FieldValues["Captio n"]),TipId{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!11});
   Base.Next;
 end;
 Base.Close;
 Base.Free;
end;


 
EdSin   (2006-04-27 16:06) [5]

Большое спасибо. Стормозил сначала.
Вспомнил, что в универе как раз проходили ЛОСы, ЦОСы, ЛДСы, ЦДСы :)
Все это удачно применил и получил необходимый результат.
И про dispose не забыл :)


 
EdSin   (2006-04-27 17:58) [6]

Возник такой вопрос ( смотрел в хелпе - не нашел ).
Если я закрываю приложение, те динамические переменные, которые я создал - они удаляются ( освобождается память )?


 
Eraser ©   (2006-04-27 18:23) [7]


> EdSin   (27.04.06 17:58) [6]

да.


 
EdSin   (2006-04-28 11:01) [8]

Спасибо за помощь



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

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

Наверх




Память: 0.48 MB
Время: 0.029 c
15-1146207067
kaand
2006-04-28 10:51
2006.05.21
Удаление данных с диска без возможности восстановления


2-1146398357
xroot
2006-04-30 15:59
2006.05.21
ShellListView


5-1131963329
GVital
2005-11-14 13:15
2006.05.21
сохранить дерево TreeView с данными


15-1145596344
Ega23
2006-04-21 09:12
2006.05.21
С Днём рождения! 21 апреля


15-1145979821
Картинки
2006-04-25 19:43
2006.05.21
Скрин-шоты