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

Вниз

События TDataLink   Найти похожие ветки 

 
Ega23 ©   (2006-04-14 17:44) [0]

Вот, блин, так и знал, что компонент рано выкладывать.
В общем, писал TDBTreeView. Вроде всё хорошо, всё работает. Но столкнулся со следующей проблемой: если набору данных, на который смотрит DB-контрол сделать DisableControls, то любые события от НД не достигают списка TDataSource (и это нормально, так вся DB-идеология в Delphi построена). А после того, как набору данных указываем EnableControls, по всему списку TDataSource"ев, зарегистрированных в НД, рассылается событие RecordChanged.
Всё бы ничего, но между DataSet.DisableControls и DataSet.EnableControls я мог с набором данных делать что угодно. Мог добавить запись, мог какую-то удалить, какую-то проапдейтить.
Получается, что по событию TDataLink.RecordChanged мне нужно перестраивать видимое представление какого-то куска данных (а в самом поганом случае - всей выборки).
В случае какого-нибудь DBGrid - это ничего, т.к. он отображает только тот кусок набора данных (по записям), которые в данный момент видны на экране.
В случае же дерева мне придётся перестраивать вообще весь кэш данных. Дле небольших выборок это не критично, а вот если выборка на 1000 записей - это уже ощутимые тормоза.

В связи с этим у меня есть вопрос: можно ли по событию TDataLink.RecordChanged как-то определить - менялся ли набор данных, или изменилась лишь позиция курсора.

З.Ы. Получилось несколько сумбурно, заранее прошу прощения.
З.З.Ы. Теперь я начинаю понимать, почему в базовой поставке компонентов Delphi нет компонента TDBTreeView.


 
georgius ©   (2006-05-23 07:28) [1]

Та же самая фигня. В итоге, по DataSetChanged ловлю изменение текущей записи и нахожу ее в уже построенном дереве. А обновление самого древа выполняю вручную, ибо, как я посчитал - при обновлении таблицы (Requery), DataEvent приходит более 10 раз. И не понятно, зачем столько раз вызывается CheckBrowseMode. Посмотрел исходники нескольких деревьев - везде на DataSetChanged автор просто забивает. Так что... увы.


 
atruhin ©   (2006-05-23 13:08) [2]


> Вот, блин, так и знал, что компонент рано выкладывать.

А куда выкладывал? Интересно посмотреть.


 
Ega23 ©   (2006-05-23 13:10) [3]


> А куда выкладывал? Интересно посмотреть.


Никуда. Потому и не выкладывал. Не люблю сырой код вываливать.



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
15-1151575109
Новичоккк
2006-06-29 13:58
2006.07.30
Перехватить SEND в конкретном приложении и заXORить пакет


3-1148397351
rar
2006-05-23 19:15
2006.07.30
Трехзвенка


15-1151646510
Иксик
2006-06-30 09:48
2006.07.30
Красиво


15-1152066202
ghost_rustam
2006-07-05 06:23
2006.07.30
paskal or delphi


15-1151503380
easy
2006-06-28 18:03
2006.07.30
Compact Flash GPS в Питере