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

Вниз

Как повесить обработчик на открытие/закрытие DataSet a у компонен   Найти похожие ветки 

 
Aleksandr.   (2005-01-18 12:55) [0]

Моему компоненту требуется при открытии заданного ему датасета заполнить некоторые данные с него, а при закрытии эти данные сбросить. Я сначала пошел по простому пути - при присваивании свойства DataSet его обработчики AfterOpen, AfterClose сохраняются, а ему назначаются свои внутренние, в теле которых выполняются и его обработчики. Но потом убедился, что последствия этого самые неприятные - в DT на форму кладу экземпляр TDataSet, назначаешь ему обработчики, кладу свой компонент, назначаю его DataSet вышеуказанный - и у того пропадают обработчики. Как можно по-умному сделать это отслеживание активности DataSet"a?


 
Юрий Зотов ©   (2005-01-18 13:02) [1]

> Aleksandr.   (18.01.05 12:55)

> Но потом убедился, что последствия этого самые неприятные

Очевидно. Есть железное правило - компонент не имеет права использовать события, доступные юзеру. Причину и последствия Вы уже видели.

> Как можно по-умному сделать это отслеживание активности
> DataSet"a?

Через внутренний объект TDataLink. Посмотрите, как это сделано, например, у TDBEdit.


 
Aleksandr.   (2005-01-18 13:22) [2]

Понял. Даже не знал этого правила...
Млин, есть в Инете статьи по использованию TDataLink? Что-то я сути в DBEdit не улавливаю...


 
Юрий Зотов ©   (2005-01-18 13:35) [3]

constructor TDBEdit.Create(AOwner: TComponent);
begin
 ...
 FDataLink := TFieldDataLink.Create;
 FDataLink.Control := Self;
 FDataLink.OnDataChange := DataChange;       // 1
 FDataLink.OnEditingChange := EditingChange; // 2
 FDataLink.OnUpdateData := UpdateData;       // 3
 FDataLink.OnActiveChange := ActiveChange;   // 4
end;


1..4 - вот это и есть те самые обработчики, которых Вам не хватало. Подробности см. в коде TDBEdit.


 
Aleksandr.   (2005-01-18 13:36) [4]

Такие сложности ради того, чтобы поиметь RecNo и RecordCount с TDataSet...



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

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

Наверх




Память: 0.47 MB
Время: 0.03 c
1-1128376693
Германн
2005-10-04 01:58
2005.10.30
Не могу "запустить" программу под дебаггером из IDE.


5-1107159560
Smileman
2005-01-31 11:19
2005.10.30
Эффект ненужного растяжения


14-1129097189
Priest
2005-10-12 10:06
2005.10.30
Flash Mp3 плеер


3-1127212198
mrAld
2005-09-20 14:29
2005.10.30
Модификация полей в наборе данных ADO


3-1127035068
Alpine
2005-09-18 13:17
2005.10.30
Как изменять динамические поля созданные в TQuery ?