|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
Внесу свою лепту в уже неактивный топик Таким образом можно закрыть несколько модальных форм: ФОРМА: 1 метод: init PUBLIC il as Integer il=0 метод: activate IF il=1 thisform.release ENDIF ФОРМА: 2 метод: activate IF il=1 thisform.release ENDIF ФОРМА: 3 кнопка: событие клик: il=1 thisform.Release Таким образом можем закрыть сколько угодно модальных форм! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 17:17 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
К. АлександрВнесу свою лепту в уже неактивный топик Таким образом можно закрыть несколько модальных форм: ФОРМА: 1 метод: init PUBLIC il as Integer il=0 метод: activate IF il=1 thisform.release ENDIF ФОРМА: 2 метод: activate IF il=1 thisform.release ENDIF ФОРМА: 3 кнопка: событие клик: il=1 thisform.Release Таким образом можем закрыть сколько угодно модальных форм!Можно то можно... Но вот нужно ли так? 1. Так как уничтожение стоит в activate, то момента активизации формы она будет висеть на экране. 2. Где-то в программе присвоили il=1 для каких-то других целей и все формы посыпались при попытке их активизировать. Оно надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.05.2009, 17:32 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
проходящий., неужели фокс такой не предсказуемый, что может где то случайно присвоиться единица? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 17:26 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
К. Александрнеужели фокс такой не предсказуемый, что может где то случайно присвоиться единица? ) Причем здесь Fox? Вы хотя бы вспомните, что вы сами писали? Спотыкались буквально на ровном месте. И что предлагаете сейчас? Создать некую глобальную переменную, которая будет видна из любого места приложения. Вы вообще вспомните о ее существовании через пару недель такого кодинга? Вряд ли. Как следствие, полезут совершенно не предсказуемые ошибки, когда вы попытаетесь использовать переменную с тем же именем, но с другой целью. Глобальные переменные - это то, чего должно быть в программе как можно меньше. В идеале, вообще одна (глобальный объект с кучей свойств). Работа с такими переменными должна быть строжайше регламентирована. А это, в свою очередь, требует определенной самодисциплины от программиста. Нет программных средств контроля, как следствие, повышенный риск возникновения ошибок. Кроме того, модальные формы - это то, чего в программе также должно быть как можно меньше. Поэтому описанная иерархия модальных форм - это скорее исключение, чем правило. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.05.2009, 17:48 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
ВладимирМ, простите, а почему в приложении должно быть как можно меньше модальных форм? я - новичок в VFP. Но почему -то мне казалось, что это очень удобный инструмент - посмотрим на винды. или вы предлагаете, как и всегда в фокспро, шаманить и танцевать с бубном, чтобы организовать подобный инструмент для ввода данных из обычной (немодальной) формы. И простой вопрос - как закрыть модальную форму по клику кнопки на этой форме? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 18:18 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
Zanderкак закрыть модальную форму по клику кнопки на этой форме? Zander, тремя постами выше кнопка.click() Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 20:12 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
tanglir, к сожалению, если бы было так просто, я бы не спрашивал... в каких случаях релиз не выполняется? форму создаю Код: plaintext 1. 2. 3.
кнопка есть, с обработчиком клика, она же Cancel=.T. ------------------- на самом деле, я решил проблему - кнопка мне вообщем-то не нужна, делаю по KeyPress Visible = .F. , а после делаю релиз. но все же... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 20:25 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
ZanderВладимирМ, простите, а почему в приложении должно быть как можно меньше модальных форм? я - новичок в VFP. Но почему -то мне казалось, что это очень удобный инструмент - посмотрим на винды. или вы предлагаете, как и всегда в фокспро, шаманить и танцевать с бубном, чтобы организовать подобный инструмент для ввода данных из обычной (немодальной) формы. Windows - это многозадачная система. Вы в любой момент можете переключится с одного приложения на другое (поэтому аргументация "посмотрим на винды" - не понятна). Любое достаточно сложное приложение строится точно также внутри себя. Т.е. в любой момент можно переключится в любой модуль этого приложения. Одновременно смотреть документы на приходы товара, на расходы, карточки контрагентов и карточки товаров. Да мало ли, что с чем надо сопоставить! Приложение ведь это не только ввод и модификация, но еще и сопоставление (сравнение) данных. Не на уровне сводных (статистических) отчетов, а на уровне отдельных документов. Модальность - это запрет подобного сопоставления. Другими словами, модальность оправдана тогда, когда вам необходимо запретить подобное сопоставление. Когда это может быть оправдано? Только тогда, когда изменяемая информация оказывает существенное влияние на все приложение. Например, некоторые глобальные настройки; ввод логина/пароля; выполнение служебных (административных) мероприятий и т.п. Однако обычно модальность используют при редактировании справочников или документов. Почему? Да потому, что так проще для программиста . Точнее, программисту кажется , что так проще! Правда, никто в этом не сознается . Обычно такую стратегию аргументируют "тупостью" пользователей или некой служебной необходимостью. В лучшем случае, говорят, что в процессе внесения модификаций нет необходимости смотреть что-то вне контекста данной формы. Т.е. косвенно все-таки соглашаются, что облегчают работу прежде всего себе. На самом деле, если просто расписать (перечислить) какие проблемы возникают, если отказаться от модальности при редактировании документов, оказывается, что все эти проблемы вполне преодолимы. И даже не очень большими усилиями. А вот использование модальности, как ни странно, приводит к сильному усложнению приложения в целом. С точки зрения пользователя, работать становится сложнее. Программисту приходится выдумывать разные хитроумные трюки для обхода им же сами наложенной модальности, чтобы удовлетворить потребности приложения. Отсюда и вывод: модальные формы - это инструмент для некоторых исключительных ситуаций. Как следствие, их не должно быть много. Хотя и совсем от них отказываться не стоит. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 20:32 |
|
закрытие нескольких форм
|
|||
---|---|---|---|
#18+
Zandertanglir, к сожалению, если бы было так просто, я бы не спрашивал... в каких случаях релиз не выполняется? форму создаю Код: plaintext 1. 2. 3.
кнопка есть, с обработчиком клика, она же Cancel=.T. ------------------- на самом деле, я решил проблему - кнопка мне вообщем-то не нужна, делаю по KeyPress Visible = .F. , а после делаю релиз. но все же... Любой объект не может быть уничтожен, если: 1. Не завершился какой-либо метод этого объекта (например, где-то продублировали ThisForm.Show(1), что привело к "зависанию" того метода, где эта команда была дана) 2. Невозможно удалить ссылки на другие объекты, созданные внутри данного объекта (обычно результат "игр" с ActiveX-компонентами) Т.е. если ничто не мешает, то ThisForm.Release() нормально удаляет модальную форму. Раз этого не происходит, значит что-то мешает. Что-то у вас "висит" внутри формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.06.2009, 20:50 |
|
|
start [/forum/topic.php?fid=41&msg=36024475&tid=1586371]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 169ms |
0 / 0 |