![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше осуществить обновления данных в формах? [D2005, XP]
девушка © (2008-12-24 10:29:00)Добрый день!
В приложении часто встречаются формы, котороые связаны между собой некими общими данными.
Например,
FormCustomerList- список клиентов.
FormCustomerEdit- форма для редактирования конкретного клиента.
Обе формы создаются динамически.
FormCustomerEdit вызывается из метода формы FormCustomerList.
Если форма FormCustomerEdit- модальная, то мы всегда можем отловить событие, когда данные в форме FormCustomerEditбудут сохранены, и нужно будет обновить данные в FormCustomerList.
Что делать, если FormCustomerEdit не модальная?
У меня возникает только идея передать ей указатель на форму
FormCustomerList. Но форма FormCustomerListможет быть уничтожена раньше FormCustomerEdit...
девушка (2008-12-24 12:02:00) [21]
> просто разослать сообщения во все мдичайды.
> конкретных получателей кому рефрешить настало время закодировать
> в параметрах
ок :)
Медвежонок Пятачок (2008-12-24 11:57:00) [22]SendRefreshDataQuery(ClassName:string).
зачем так сурово?
просто разослать сообщения во все мдичайды.
конкретных получателей кому рефрешить настало время закодировать в параметрах
девушка (2008-12-24 11:54:00) [23]
> вся разница будет только в замораживании интерфейса во время
> нажатия close на модальной
кстати, да.
Т.е. на данном этапе можно в базовом классе добавить еще метод
SendRefreshDataQuery(ClassName:string).
И писать там хоть через сообщения, хоть через оунера...
Медвежонок Пятачок (2008-12-24 11:20:00) [24]вся разница будет только в замораживании интерфейса во время нажатия close на модальной
девушка (2008-12-24 10:59:00) [25]
> postmessage однозначно. причем не прямо в обновляемую форму
> (чтобы ее хендл не передавать модальной), а главной форме,
> которая перенаправит мессадж обновляемой форме.
поидее можно и без мессаждей.
все формы являются наследниками одного класса, где есть метод RefreshData.
перегружаем этот метод в MDIMAin:RefreshData(ClassName:string);
ChildForm после сохранения данных :
TMDIMain(ChildForm.Owner).RefreshData(ChildForm.ClassName);
Далее проходимся по MDIChildren и в зависимости от класса - вызываем RefreshData...
?
Медвежонок Пятачок (2008-12-24 10:43:00) [26]>Ну сделай так.
это эназе бад айдиа
:)
Сергей М. (2008-12-24 10:41:00) [27]
> Это не так
Ну сделай так.
Этому что-то мешает ?
Медвежонок Пятачок (2008-12-24 10:39:00) [28]как вариант посылать мессадж по всему списку мдичайлдов
девушка (2008-12-24 10:38:00) [29]забыла написать, что все формы MDIChild, возможно стоит передавать указатель, а потом проверять - существует ли такая форма...
только не соображу как
Медвежонок Пятачок (2008-12-24 10:37:00) [30]У меня возникает только идея передать ей указатель на форму
бад айдиа. чем меньше классы форм знают друг о друге тем лучше.
postmessage однозначно. причем не прямо в обновляемую форму (чтобы ее хендл не передавать модальной), а главной форме, которая перенаправит мессадж обновляемой форме.
девушка (2008-12-24 10:36:00) [31]
> Если обе формы используют одни и те же экз-ры связок Dataset
> <- DataSource, то никаких дополнительных телодвижений предпринимать
> не нужно
Это не так.
Сергей М. (2008-12-24 10:35:00) [32]Если обе формы используют одни и те же экз-ры связок Dataset <- DataSource, то никаких дополнительных телодвижений предпринимать не нужно.
Palladin (2008-12-24 10:33:00) [33]ну один из способов общения форм это сообщения