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

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

Взаимодействие форм


Страницы:   1 2 3 4

ВашеИмя ©   (2011-02-11 09:44:00) 

Расскажите, как надо:
Есть форма [1] (допустим, отображение документов), она вызывает немодальную форму [2] конкретного документа (который имеет свои табличные части). При открытии формы [2] должны быть загружены, допустим, 2 датасета (формы и табличной части Товары). При закрытии формы [2] происходит сохранение в форме [1]. При том что из одной формы [1] могут быть открыты несколько форм [2], и форма [1] должна верно обработать оба события от формы [2]. Как верно это реализовывать?

Пробовал через callback-функции. Процедуры загрузки и сохранения должны прописываться в какой из форм? Подозреваю, что в форме [1]. Тогда как передать нужные данные из формы [2]?

Короче, запутался. Не могли бы поделиться опытом? Если с примерами, так вообще замечательно.


Palladin   (2011-02-14 15:04:00) [1]

Первое правило делфимастера - необращать внимания на других делфимастеров.
Второе правило делфимастера - никому не говорить о делфимастере.


Юрий Зотов   (2011-02-14 15:00:00) [2]

> DiamondShark ©   (14.02.11 14:03) [60]

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

Ничего нового.


DiamondShark   (2011-02-14 14:06:00) [3]


> Anatoly Podgoretsky ©   (14.02.11 14:03) [61]

Спасибо, кэп!

Новичёк -- обвиняющий в хамстве. Ну, не привык ещё, что это в порядке вещей.

Ваш КО-2.


Anatoly Podgoretsky   (2011-02-14 14:03:00) [4]

> DiamondShark  (14.02.2011 13:57:59)  [59]

Д. Юра не новичек


DiamondShark   (2011-02-14 14:03:00) [5]


> Юрий Зотов ©   (14.02.11 12:55) [55]

Каждый раз, когда я читаю ваши сентенции, я начинаю жалеть, что я атеист: следовало бы уже давно поставить пудовую свечку Богу, за то, что в своей великой милости избавил меня от пользования программами вашего авторства.


DiamondShark   (2011-02-14 13:57:00) [6]


> Dennis I. Komarov ©   (14.02.11 12:58) [56]
> Под столом... Д. Юру обвинили в хамстве...

Новичок, наверное. Пооботрётся, пообвыкнет.


Anatoly Podgoretsky   (2011-02-14 13:41:00) [7]

> Dennis I. Komarov  (14.02.2011 12:58:56)  [56]

Я когда одновременно, что то жарю и смотрю ДМ, то для жарю это плохо
кончается.


Anatoly Podgoretsky   (2011-02-14 13:40:00) [8]

> Юрий Зотов  (14.02.2011 12:55:55)  [55]

Да не надо N и M, достаточно только N и настройка формы. Разумеется удобно
при табличной форме отображения, но надо вводить в парадигму понятия
Просмотр и Редактирование. Я так пробовал, пользователи не понимаю и
путаются. В итоге оставил форму Редактирования, она же Просмотра и кнопку
Сохранить и все проблемы сразу исчезли.


Dennis I. Komarov   (2011-02-14 12:58:00) [9]

Под столом... Д. Юру обвинили в хамстве...
По теме не буду, ибо масло горит.


Юрий Зотов   (2011-02-14 12:55:00) [10]

> ЗемлюКрестьянамДатасетыФормам   (14.02.11 11:13) [53]
>
> Общий датасет с двумя формами - это как один телевизор в
> семье из двух человек. Хотя бы просто потому, что может
> настать момент, когда одному из членов семьи захочется переключить
> на другой канал, другую запись, то есть. Или громкость увеличить.
>  Или видео посмотреть. Я уже не говорю о ситуации, когда
> появляется третий член семьи. А потом четвертый. Что, как
> говорит статистика, сплошь и рядом...

Извините, но это всего лишь беллетристика. Доводом служить не может, посему не принимается.

> А самые харакетрные грабли в датасете, общем для формы просмотра
> и формы редактирования - набор полей. Просто потому, что
> для просмотра записей в табличке обычно нужно всего несколько
> полей. А для редактирования записи обычно нужны все поля.
>  Редактировать неполную запись - не удовлетворяет потребностям.
> Тащить все поля при просмотре - глупо.

И что? Кто мешает иметь на форме просмотра одни поля, а на форме редактирования - другие?

> А еще если для просмотра используется сложный запрос с join-
> ами, а для редактирования открываются дополнительные наборы
> данных.

Снова - и что? Каким образом это мешает иметь N форм просмотра и M форм редактирования?

> Просто потому, что просмотр и редактирование, по сути -
> совершенно разные действия. Поэтому и выполнять их надо
> по-разному.

И на здоровье. Ничто не мешает выполнять их по-разному, хоть при общем датасете, хоть при разных.

PS
Возможно, я чего-то недопонимаю - разъяснения приветствуются. Только без беллетристики, плз.


Anatoly Podgoretsky   (2011-02-14 12:54:00) [11]

> ЗемлюКрестьянамДатасетыФормам  (14.02.2011 11:13:53)  [53]

Не бойся бить будем не руками.


ЗемлюКрестьянамДатасетыФормам   (2011-02-14 11:13:00) [12]

>>Юрий Зотов ©   (14.02.11 00:29) [51] 1. ЗарАстать. Это называется - чередование гласных в корне. На будущее.

Да мне, как бы это потактичнее сказать... все равно. С чередованием или без. Можно вообще вне очереди. Русский - не мой родной язык. Я и пользуюсь-то им практически только тут, на delphimaster.ru. Познания мои в русском зарАстают травой так же, как и сайт этот. Это про будущее. Впрочем, спасибо.

>>Юрий Зотов ©   (14.02.11 00:29) [51] 2. Ваша категоричность мне тоже нравится<...>

Я вообще весь такой белый и пушистый... э-э, только руками не трогать!

>>Юрий Зотов ©   (14.02.11 00:29) [51] 2. <...> Особенно потому, что хоть каким-нибудь ее обоснованием Вы даже не удосужились озаботиться.

Общий датасет с двумя формами - это как один телевизор в семье из двух человек. Хотя бы просто потому, что может настать момент, когда одному из членов семьи захочется переключить на другой канал, другую запись, то есть. Или громкость увеличить. Или видео посмотреть. Я уже не говорю о ситуации, когда появляется третий член семьи. А потом четвертый. Что, как говорит статистика, сплошь и рядом...

А самые харакетрные грабли в датасете, общем для формы просмотра и формы редактирования - набор полей. Просто потому, что для просмотра записей в табличке обычно нужно всего несколько полей. А для редактирования записи обычно нужны все поля. Редактировать неполную запись - не удовлетворяет потребностям.  Тащить все поля при просмотре - глупо.

А еще если для просмотра используется сложный запрос с join-ами, а для редактирования открываются дополнительные наборы данных.

И т.д., и т.п...

Просто потому, что просмотр и редактирование, по сути - совершенно разные действия. Поэтому и выполнять их надо по-разному. Что, за исключеним разве что самых простых проектов, не позволяет использовать общий датасет.

Сиречь, котлеты и мухи - по-отдельности.

>>Юрий Зотов ©   (14.02.11 00:29) [51] 3. Впрочем, это дело Ваше.

Хм. Было бы так, [51] не существовало бы вообще. Поэтому 51.3 смотрится неудачно. Из разряда "наступлю-ка я ему на ногу, а потом, так и быть, извинюсь". Такое себе невинное хамство, завуалированное ханжеством.

http://www.youtube.com/watch?v=d-diB65scQU


Плохиш   (2011-02-14 10:09:00) [13]


> Юрий Зотов ©   (13.02.11 14:57) [46]
> > ВашеИмя   (13.02.11 13:16) [44]
>
> Если датасет сделать ОБЩИМ для обеих форм, то все проблемы
> исчезают автоматически.

Так ветка началась с желания открывать из одной таблицы много форм одновременно для редактирования разных записей :-)


Юрий Зотов   (2011-02-14 00:29:00) [14]

> ЗемлюКрестьянамДатасетыФормам   (13.02.11 21:06) [48]

1. ЗарАстать. Это называется - чередование гласных в корне. На будущее.

2. Ваша категоричность мне тоже нравится. Особенно потому, что хоть каким-нибудь ее обоснованием Вы даже не удосужились озаботиться.

3. Впрочем, это дело Ваше.


KilkennyCat   (2011-02-13 21:38:00) [15]


>   http://www.youtube.com/watch?v=TGd4xJ0BVV4
>

путин какой-то...


ЗемлюКрестьянамДатасетыФормам   (2011-02-13 21:20:00) [16]

>> ВашеИмя   (13.02.11 13:34) [45] Слишком ли некошерно будет передавать в качестве параметра указать на диалоговое окно?

Обычно достаточно передавать IDизмененной записи. Ибо, в общем случае, "диалоговое окно" в процессе эволюции программы может мутировать, плодиться, менять класс, в общем, мало ли чего. Может, в конце концов, изменения будут производиться вообще без использования визуальных компонентов. А ID для отдельно взятой записи и проекта - бессмертен, то есть вечен, потому что бессердечен... или, может быть, наоборот. http://www.youtube.com/watch?v=TGd4xJ0BVV4

>> ВашеИмя   (13.02.11 13:16) [44] (ведь DataSet, Grid - это по сути и есть части MVC. Конкретно M и V)

А DataSource - Controller.
Delphi - Отец, Delphi - Сын, Delphi - Дух святой.
Аминь.


ЗемлюКрестьянамДатасетыФормам   (2011-02-13 21:06:00) [17]

>>Юрий Зотов ©   (13.02.11 14:57) [46] Если датасет сделать ОБЩИМ для обеих форм, то все проблемы исчезают автоматически.

Исчезает одна проблема. Появляется с десяток новых. И весь этот огород наичнает понемногу заростать. Граблями.


Leonid Troyanovsky   (2011-02-13 19:20:00) [18]


> ВашеИмя   (13.02.11 13:34) [45]

> в качестве параметра указать на диалоговое окно?

Send будет валидным, а уж Post - извини.

>  не слишком ли извратно?

Видали и жестче.

--
Regards, LVT.


Юрий Зотов   (2011-02-13 14:57:00) [19]

> ВашеИмя   (13.02.11 13:16) [44]

Если датасет сделать ОБЩИМ для обеих форм, то все проблемы исчезают автоматически.


ВашеИмя   (2011-02-13 13:34:00) [20]


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

Спасибо за пример. Слишком ли некошерно будет передавать в качестве параметра указать на диалоговое окно? Проверил - работает отлично, наверное как раз как мне надо. Вопрос: не слишком ли извратно?


Страницы:   1 2 3 4

Наверх

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