|
|
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
В рамках одного приложения (процесса) открыта Form1 в отдельном окне, а также открыта Form2 тоже в отдельном окне, т.е. SDI Из Form1 открывается Form11 в модальном режиме, т.е. делается вызов Form11.ShowModal; Теперь нет возможности получить доступ не только к Form1, но и к Form2 Как сделать так чтобы модальность Form11 распространялась только на Form1? Чтобы Form2 была доступна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2020, 20:06 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
Меня всегда интересовало, какая религия запрещает посмотреть в исходники ShowModal - как он работает. Если очень коротко, модальность реализуется через свойство Enabled. Каким формам успешно сделано Enabled := false - такие и недоступны. Например: Код: pascal 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2020, 20:35 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
verterКак сделать так чтобы модальность Form11 распространялась только на Form1? Код: sql 1. 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2020, 21:57 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
softwarer Меня всегда интересовало, какая религия запрещает посмотреть в исходники ShowModal - как он работает. Если очень коротко, модальность реализуется через свойство Enabled. Каким формам успешно сделано Enabled := false - такие и недоступны. Например: Код: pascal 1. 2. 3. 4. 5. 6. Я неправильно сделал описание задачи. Form1 создаётся динамически скажем из Form0, т.е. нет на самом деле Form2, есть несколько созданных и показанных Form1 из Form0 И мне нужно, чтобы из каждого экземпляра Form1 также динамически создавалась Form11 и показывалась в модальном режиме, но только для этого экземпляра Form1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2020, 23:50 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov verterКак сделать так чтобы модальность Form11 распространялась только на Form1? Код: sql 1. 2. сделал в Form1 показ Form11: Form11.Parent := Self; Form11.Show; Вылезает ошибка: Не могу передать фокус ввода отключённому или невидимому окну. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2020, 23:55 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
Значит наоборот. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 00:24 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
verter В рамках одного приложения (процесса) открыта Form1 в отдельном окне, а также открыта Form2 тоже в отдельном окне, т.е. SDI Из Form1 открывается Form11 в модальном режиме, т.е. делается вызов Form11.ShowModal; Теперь нет возможности получить доступ не только к Form1, но и к Form2 Как сделать так чтобы модальность Form11 распространялась только на Form1? Чтобы Form2 была доступна. Модальные диалоги в Винде как минимум thread-modal, т.к. в UI message pump цикле идет проверка на наличие одного модального окна. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Чтобы два окна могли независимо показывать модальные диалоги, нужно свой UI thread на каждое окно. Аппликации с несколькими UI thread - это полный атас в отладке. Аутлук, например, этого не делает, поэтому если в любом из окон вскочил модальный диалог - все встало пока его не закрыли. Дельфи это все равно не поддерживает - у VCL одна message pump, и одна UI thread. Если это архиважно, и верхние окна равноправны и не говорят друг с другом, их можно запускать в своем процессе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 00:48 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
verter Я неправильно сделал описание задачи. Прочувствуйте разницу между "Я рассказал, как сделать" и "Я сделал вместо Вас". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 00:55 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
НеофитSQL Дельфи это все равно не поддерживает И не нужно. В Дельфи потребность топикстартера отлично реализуется способом, который я привёл (да, лет десять назад у меня было приложение с таким интерфейсом, да, сделал, да, отлично работало и до сих пор работает). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 00:58 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Значит наоборот. Да, получилось. Спасибо. Только есть такая проблема. Открыта одна Form1, открыта другая Form1 - соответственно на панели задач я вижу 2-е иконки окон. В 1-й Form1 открываю вашим способом Form11, перехожу во 2-ю Form1, а потом пытаюсь в панели задач выбрать опять 1-ю Form1, т.е. переключиться на неё(а в ней в этот момент открыта Form11), но не получается - ничего не происходит, остаюсь во 2-й Form1 и никак не переключиться обратно, только если уменьшить размеры окна 2-й Form1 чтобы увидеть кусок 1-й Form1 или её Form11 и тогда щёлкнув по ней мышкой удаётся перейти. Но если обе Form1 максимизированы и в обоих открыты свои Form11, то никак не переключиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 01:08 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
softwarer НеофитSQL Дельфи это все равно не поддерживает И не нужно. В Дельфи потребность топикстартера отлично реализуется способом, который я привёл (да, лет десять назад у меня было приложение с таким интерфейсом, да, сделал, да, отлично работало и до сих пор работает). и потом ищи в какой последовательности их закрывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 11:22 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan) одно запустил, второе запустил ... и потом ищи в какой последовательности их закрывать Это равно верно для любого интерфейса с модальными окнами в принципе. Впрочем, в любом случае вопрос дизайна не ко мне, там было требование "повторить фичу вот отсюда, пользователи настаивают, что им так зверски удобно". Там ещё вдобавок было псевдо-mdi, то есть окна (в том числе модальные) ползали по клиентской области главного, поэтому я добавил визуализацию доступности окна цветом caption/а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 12:14 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
где-то на опен-системс (или другом ресурсе) когда-то была статья об экскрементах экспериментах самой M$ с многопоточным UI. резюме было таковым, как говорит НеофитSQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 12:40 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
verterОткрыта одна Form1, открыта другая Form1 - соответственно на панели задач я вижу 2-е иконки окон. Обычно этого не происходит. Если нужны две кнопки на панели задач - запускаются два разных процесса. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 12:48 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
verter, давненько делал пример PseudoModal.zip В целом работает, у самого на этой штуке достаточно большой проект построен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 13:13 |
|
||
|
Модальность только для вызывающей формы
|
|||
|---|---|---|---|
|
#18+
aleksandr-pro verter, давненько делал пример PseudoModal.zip В целом работает, у самого на этой штуке достаточно большой проект построен. Принципиально то оно вроде как можно сделать "похожее поведение", но это уже будет не блокирующий ShowModal. А это значит, что нужно подстраивать всю логику приложения и смотреть все библиотечные вызовы (например диалоги открытия файлов), что явно не комильфо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2020, 15:15 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=35&tid=2037957]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
23ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 378ms |

| 0 / 0 |
