Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Вниз

Переназначение обработчиков событий у компонентов.   Найти похожие ветки 

 
infom ©   (2006-11-21 11:26) [0]

Уважаемые мастера, у меня возник вопрос при разработке своего компонента.

Создаю следующий класс который контролирует деятельность всей формы:

TMyController = class
...
procedure DataQueryBeforePost(DataSet: TDataSet);
...
property DataQuery: TADOQuery read GetDataQuery write SetDataQuery;
...
...
...

Так вот в методе SetDataQuery мне необходимо добавить обработчик на событие TADOQuery.BeforePost , так и делаю.

procedure TMyController.SetDataQuery( Value:TADOQuery);
begin
 FDataQuery := Value;
 FDataQuery.BeforePost := DataQueryBeforePost;
end;

Вопрос собственно в том что будет если у пользователя уже был заранее назначен обработчик BeforePost у данного датасета, и что необходимо сделать чтобы и моя процедура обработки выполнилась и пользователя ?


 
clickmaker ©   (2006-11-21 11:27) [1]


> что необходимо сделать чтобы и моя процедура обработки выполнилась
> и пользователя ?

проверить. Если есть, сохранить. Потом вызывать до или после твоего


 
ЮЮ ©   (2006-11-21 11:37) [2]

если TMyController  предполагает "обогатить" имено TADOQuery, почему не унаследоваться от TADOQuery и перекрыть то, что полагается в данном случае DoBeforePost ?


 
Юрий Зотов ©   (2006-11-21 12:05) [3]

> что будет если у пользователя уже был заранее назначен обработчик

Если УЖЕ был, то ничего страшного, потому что компонент может запомнить старый обработчик и вызвать его, когда нужно.

Правда, ничто не мешает юзеру положить на форму НЕСКОЛЬКО Ваших компонентов - и тогда могут возникнуть противоречия. Которые, впрочем, решить можно.

Но вот что Вы будете делать, если юзер назначит свой обработчик ПОСЛЕ Вашего? Приплыл ведь тогда компонент-то, не будет он работать.

И ничего Вы тут сделать не сможете. Потому что в принципе неверен сам подход. Компонент не имеет права использовать события, доступные юзеру - это непреложный закон. Именно по этой причине в компоненты обычно вводятся методы диспетчеризации событий (часто их называют DoЧтоТо).

И, честно говоря, особого смысла в таком компоненте, что Вы задумали я не вижу. Поскольку классом, "который контролирует деятельность всей формы" вполне может быть и предок этой формы.

Вот его (предок) я бы и писал. А не компонент.


 
infom ©   (2006-11-21 13:16) [4]

Юрий Зотов
можно чуть подробнее или ссылку на литературу...


 
Юрий Зотов ©   (2006-11-21 13:38) [5]

> infom ©   (21.11.06 13:16) [4]

Подробнее О ЧЕМ?

Как писать компоненты? или как писать формы? или как от этих форм наследоваться? или о чем-то еще?


 
infom ©   (2006-11-21 17:45) [6]


> Подробнее О ЧЕМ?
>
> Как писать компоненты? или как писать формы? или как от
> этих форм наследоваться? или о чем-то еще?

Ясно....не настроены помочь....
Спасибо всем, далее сам разберусь.


 
Джо ©   (2006-11-21 20:52) [7]

> [6] infom ©   (21.11.06 17:45)
> Ясно....не настроены помочь....

"Удивительное — рядом" (c). Помогли, разжевали, положили в рот, на вопрос, в чем помочь дальше — "ясно, фиг с фами"...


 
Palladin ©   (2006-11-21 21:02) [8]


> [7] Джо ©

Так, ведь, код не написали... что и означает "не настроены помочь"...



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

Форум: "Основная";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
2-1166689691
Draught
2006-12-21 11:28
2007.01.14
Два знака после запятой QReport


15-1166978969
dzmitry[li]
2006-12-24 19:49
2007.01.14
5.1


15-1166856820
Оззя
2006-12-23 09:53
2007.01.14
К тов. Подгорецкому на сайт попасть


6-1155788873
vodvorezlaya
2006-08-17 08:27
2007.01.14
Как идентифицировать своё соединение с сервером


15-1166491717
Giro
2006-12-19 04:28
2007.01.14
В 2008-2009 годах NVidia и AMD-ATI прекратят разработку драйверов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский