![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с 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.