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

Вниз

указатель на позицию курсора DataSet   Найти похожие ветки 

 
Ega23 ©   (2005-05-24 12:56) [0]

Делаю компонент TDBTreeView.
При добавлении узлов в дерево необходимо связать каждый узел с соответствующим ему рекордом из набора данных.
Самое простое решение - заводить p:PInteger, прописывать в него значение ключевого поля (p^:=FieldByName(KeyField).AsInteger) и присваивать этот указатель узлу (Node.Data:=p), а потом через Locate бегать по набору данных.
А можно ли каким-то образом получить указатель на позицию курсора в DataSet и уже его прописать в Node.Data?


 
Digitman ©   (2005-05-24 12:59) [1]

а закладки-то на что ?
как раз на то самое они и существуют


 
Ega23 ©   (2005-05-24 13:00) [2]

Да, вот ещё один вариант: создавать на каждую запись BookMark и уже её хранить в Node.Data.
Но набор данных внишний, с ним может ещё кто-то работать и также создавать свои букмарки...

В общем, посоветуйте вариант: что лучше?


 
begin...end ©   (2005-05-24 13:00) [3]

> Ega23 ©   (24.05.05 12:56)

> p^:=FieldByName(KeyField).AsInteger

А память под p ты сам выделять будешь?


 
Ega23 ©   (2005-05-24 13:01) [4]

А память под p ты сам выделять будешь?

Естесственно. Сам выделять, сам удалять.


 
begin...end ©   (2005-05-24 13:03) [5]

> Ega23 ©   (24.05.05 13:01) [4]

Node.Data := Pointer(FieldByName(KeyField).AsInteger)

И не надо ничего ни выделять, ни удалять.


 
Ega23 ©   (2005-05-24 13:05) [6]

Node.Data := Pointer(FieldByName(KeyField).AsInteger)

А остальные поля? Мне же надо и к остальным полям доступ получить. Т.е. принудительно курсор на конкретную запись сдвинуть.


 
Digitman ©   (2005-05-24 13:13) [7]


> набор данных внишний, с ним может ещё кто-то работать и
> также создавать свои букмарки


что значит "внешний" ? в смысле - где-то в текущем процессе созданный и в дан.момент, будучи уже где-то созданным, используемый ?

доступ к НД, единожды открытому в конкретном трэде, допускает только последовательные обращения к нему

ВремЗакладка = НД.GetBookmark;
try
.. НД.GotoBookmark(НужнаяЗакладка);
finally
 НД.GotoBookmark(ВремЗакладка);
 НД.FreeBookmark(ВремЗакладка);
end;


 
Ega23 ©   (2005-05-24 13:26) [8]

что значит "внешний" ? в смысле - где-то в текущем процессе созданный и в дан.момент, будучи уже где-то созданным, используемый ?

Стоп. А закладка создаётся в контексте DataSet"а, или в контексте класса, использующего этот DataSet?


 
Digitman ©   (2005-05-24 13:30) [9]

закладка создается объектом класса-наследника TDataSet.

ты ведь всегда именно к конкретному объекту, создающему НД, обращаешься с методами, работающими с закладками !



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

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

Наверх




Память: 0.49 MB
Время: 0.024 c
1-1116524779
Gear
2005-05-19 21:46
2005.06.06
Шифрование.


3-1115107611
jiny
2005-05-03 12:06
2005.06.06
Как запретить двигать колонки в DBgridEh


3-1115107253
salexn
2005-05-03 12:00
2005.06.06
ClientDataSet и проблема фильтрации для WideString полей


14-1116321471
SNHD
2005-05-17 13:17
2005.06.06
Ищу Базы данных на Delphi 6


1-1116498890
MegaVolt
2005-05-19 14:34
2005.06.06
Перетаскивание с моей проги в чужое приложение.