![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по Модулю Данных: [D5]
kserg@ukr.net © (2002-03-11 10:28:00)На один из DataSet-ов в модуле данных ссылаются несколько DBGrid-oв из разных форм(формы-модальные,т.е.в конкретный момент только один DBGrid подключен к DataSet-у).
Вопрос: как в событии OnDataChange мне выяснить какой из DBGrid-ов сейчас подключен к DataSet-у?
Yuvich (2002-03-12 15:01:00) [1]> Johnmen
Правильно, могут. Чтобы не "городить огород" с flgFormXX и Tag, и делается: один DBGrid - один DataSource.
Johnmen (2002-03-12 14:14:00) [2]>Yuvich © :
>Т.о., сколько DBGrid - столько и DataSource
А все DBGrid могут иметь один DataSource !!!
>kserg@ukr.net : Можно проверять, какая форма сейчас активна...
Yuvich (2002-03-12 13:48:00) [3]Вообще-то, DBGrid соединяется с DataSet через DataSource.
Т.о., сколько DBGrid - столько и DataSource. Событие OnDataChange обычно вешается на DataSource. Т.е., Каждый обработчик этого события "знает" с каким DataSource он работает, а каждый DataSource связан со своим DBGrid. Т.о., "размазывая" один обработчик по нескольким DataSource, можно добиться, что бы для каждого DBGrid выполнялись свои специфические действия.
USAtyj (2002-03-11 13:35:00) [4]При вызове модальной формы у датасета изменяй свойство Tag на нужное число, например: если Форм1, то Tag=1, Форм2 - Tag=2, Форм3 - Tag=3.
А потом в событии OnDataChange проверяешь Tag и обнуляешь его после обработки.
Jony (2002-03-11 13:30:00) [5]Я это делаю следующим образом:
В МД прописываю булевую переменную, которую "приписываю" к конкретной форме (например, flgForm01) и инициализирую ее в False. В FormShow устанавливаю True (соответственно, в FormDestroy - в False). А в OnDataChange анализирую:
if flgForm01 then begin
(* обработчик для Form01 *)
end;
if flgForm02 then begin
(* обработчик для Form02 *)
end;
и т.д.
Работает нормально. Если приемлемо - используй.
kserg@ukr.net (2002-03-11 13:10:00) [6]Народ, так всё таки как лучше сделать???