Форум: "Начинающим";
Текущий архив: 2006.05.21;
Скачать: [xml.tar.bz2];
ВнизРабота с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c