Главная страница
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.055 c
15-1145872467
xayam
2006-04-24 13:54
2006.05.21
Почему программисты не хотят структурировать код?


15-1145648705
dyd
2006-04-21 23:45
2006.05.21
опять PHP :)


9-1129046372
Kerk
2005-10-11 19:59
2006.05.21
[GDI] Полупрозрачная надпись


15-1145565199
Tirael
2006-04-21 00:33
2006.05.21
триллиан, вставка из буфера


15-1145965134
mctarik
2006-04-25 15:38
2006.05.21
Опрос!!! Кодинг или Копирование чюжих исходников