Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с TTreeView


EdSin ©   (2006-04-26 14:43:00) 

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


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

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


Eraser   (2006-04-27 18:23:00) [2]


> EdSin   (27.04.06 17:58) [6]

да.


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

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


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

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


Ksenom   (2006-04-27 15:54:00) [5]

Какраз твой пример с деревом и данными.
Добавляю ноды и данные.
Главное помнить что если ты просто потом очистишь дерево то даные в памяти остануться, нужно указатели 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;


Eraser   (2006-04-26 18:35:00) [6]


> EdSin   (26.04.06 16:27) [2]


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

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

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


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

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


Eraser   (2006-04-26 14:49:00) [8]


> EdSin   (26.04.06 14:43)

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо