Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как лучше осуществить обновления данных в формах? [D2005, XP]


Страницы:   1 2

девушка ©   (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]

ну один из способов общения форм это сообщения


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо