Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Добрый день. Компилирую программу на Delphi XE8. Программа совершенно простейшая, никаких ухищрений. Три формы Form1, Form2, Form3. При запуске программы открывается Form1, по нажатию Button на Form1 через ShowModal открывается Form2, при нажатии Button на Form2 открывается Form3. Таким образом, открыты три формы, активна Form3, Form1 и Form2 неактивны, так как при открытии было использовано ShowModal. Это всё нормально. Далее нажимаем кнопку "Свернуть" (_) в заголовке Form3, сворачиваются все три формы. При клике на панели задач разворачиваются все три формы. Всё в порядке. Но так происходит только если запускать программу двойным кликом в Проводнике, либо запускать с помощью F9 из среды Delphi. Если же запустить программу с помощью ярлыка - формы точно также открываются модально как полагается - но при нажатии "Свернуть" (_) в заголовке Form3 сворачивается только она одна, Form1 и Form2 продолжают висеть на экране. Таким образом, кнопка "Свернуть" полностью теряет свой смысл, так как Form1 и Form2 продолжают висеть на экране неактивные (мешая пользоваться другими приложениями), сворачивается только Form3. Что я делаю не так? Чем отличается запуск программы с помощью ярлыка и запуск двойным кликом из Проводника? Или это глюк Delphi XE8? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 01:20 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Впрочем, нет. Даже при запуске из Проводника такое же неправильно поведение. Сворачивается только Form3 - просто Form1 и Form2 были спрятаны за окном Проводника и это я не заметил - но если закрыть окно Проводника, откуда запуск и перейти на рабочий стол, формы также висят. Суть проблемы в картинка (первое окно - открыты последовательно три формы), второе - нажал "Свернуть" в Form3, только она и свернулась (а надо чтобы сворачивались все как в нормальной программе - смысла сворачивать одну никакого нет). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 01:30 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 01:30 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Оно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 01:42 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
GunSmoker Оно ? Увы, но нет. Что только не пробовал и ваши статьи читал про окна. Всё равно - при нажатии кнопки "Свернуть" в модальном окне сворачивается только оно, остальные окна остаются неизменными и не сворачиваются (странно, зачем они нужны - и почему не сворачиваются - всё равно с ними пользователь ничего не может сделать). Опцию Application.MainFormOnTaskbar := True; тоже пробовал - не помогает - что при включении что при отключении такое же поведение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 13:17 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Неужели в довольно-таки современной среде Delphi XE8 такие простые вещи не работают из коробки как нужно? И придется городить огороды (для каждой формы) вроде того, что ниже? С Delphi 7 уходил в том числе ради того, чтобы избежать велосипедов и огородов ... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 13:49 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
DmitrySergeev79, Из формы 1 открыли форму 2. Сворачиваем форму 2. Что должна делать форма 1? Сворачиваться? А может тот, кто свернул форму 2 просто захотел посмотреть на форму 1, а она взяла и свернулась? Однозначно виновата XE8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 15:38 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
IMHO & AFAIK Читать про SDI и MDI интерфейс для Windows приложений Читать про стили окон в Windows Читать, как это нормально делается в Delphi Не специалист по Depli, но в гугле полно информации, первая же попавшаяся ссылка: https://delphisources.ru/pages/faq/base/mdi_app_development.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 15:47 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
ТС нужно понять, что при сворачивании, разворачивании или закрытии текущего окна приложения, не зависимо от того модальное оно или нет, другие открытые окна этого приложения НЕ обязаны автоматически сворачиваться, разворачиваться или закрываться. И в этом поведении окон приложения не нужно винить используемый инструмент, а тем более менять его. На все "хочу" просто не хватит инструментов. Если действительно требуется другое поведение окон приложения, то для этого нужно приложить усилия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 17:14 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
DmitrySergeev79, авторС Delphi 7 уходил в том числе ради того уходить надо было не с делфи 7, а с винды. на такую операционку, в которой поведение окон такое как хочется. ну и да. конечно же совсем не обязательно 'городить огороды' для каждой формы. существует, я думаю, как минимум 3-4 способа сделать огород один раз и юзать везде, где нужно. начиная с простейшего наследования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 19:12 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Wlr-l ТС нужно понять, что при сворачивании, разворачивании или закрытии текущего окна приложения, не зависимо от того модальное оно или нет, другие открытые окна этого приложения НЕ обязаны автоматически сворачиваться, разворачиваться или закрываться. И в этом поведении окон приложения не нужно винить используемый инструмент, а тем более менять его. На все "хочу" просто не хватит инструментов. Если действительно требуется другое поведение окон приложения, то для этого нужно приложить усилия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 19:15 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
makhaon, "с винды. на такую операционку, в которой поведение окон такое как хочется" Захотелось вот так, операционка тут же изменила поведение своих окон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 19:34 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Wlr-l DmitrySergeev79, Из формы 1 открыли форму 2. Сворачиваем форму 2. Что должна делать форма 1? Сворачиваться? А может тот, кто свернул форму 2 просто захотел посмотреть на форму 1, а она взяла и свернулась? Однозначно виновата XE8. Да, сворачиваться. По-моему, это наиболее логичное поведение. Зачем сворачивать форму, чтобы посмотреть предыдущую, если её можно просто отодвинуть? К тому же всё равно не будет возможности посмотреть таким образом пред-предыдущую форму, тк кнопка "Свернуть" в предыдущей форме неактивна. Кроме того, при нажатии "Свернуть" - пользователь в большинстве случаев ожидает, что именно всё приложение свернётся - он нажимает "Свернуть" - чтобы иметь возможность, например, перейти на рабочий стол или работать с другим приложением. По крайней мере, пользователь должен - имя в заголовке формы -возможность свернуть всё приложение, а не только одну форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 21:18 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev IMHO & AFAIK Читать про SDI и MDI интерфейс для Windows приложений Читать про стили окон в Windows Читать, как это нормально делается в Delphi Не специалист по Depli, но в гугле полно информации, первая же попавшаяся ссылка: https://delphisources.ru/pages/faq/base/mdi_app_development.html ОК, почитаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 21:18 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Wlr-l ТС нужно понять, что при сворачивании, разворачивании или закрытии текущего окна приложения, не зависимо от того модальное оно или нет, другие открытые окна этого приложения НЕ обязаны автоматически сворачиваться, разворачиваться или закрываться. И в этом поведении окон приложения не нужно винить используемый инструмент, а тем более менять его. На все "хочу" просто не хватит инструментов. Если действительно требуется другое поведение окон приложения, то для этого нужно приложить усилия. Да я собственно нашёл уже способ - как минимизировать все формы при нажатии "Свернуть" (пример выше). Просто я думал - неужели такое поведение, как по умолчанию в Delphi XE8 (когда сворачивается только одна форма, а остальные недоступны, тк форма открыта модально) - нормально. И надо ли городить подобные костыли, когда всё может (как я думал) решаться стандартными средствами (велосипеды я городить умею - просто решил уточнить - действительно ли такие велосипеды необходимы). Всё грешил на Delphi 7 - что окна косячно работают начиная с Windows Vista/7 - а оказывается, на XE8 такая же ерунда ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 21:22 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
makhaon DmitrySergeev79, авторС Delphi 7 уходил в том числе ради того уходить надо было не с делфи 7, а с винды. на такую операционку, в которой поведение окон такое как хочется. ну и да. конечно же совсем не обязательно 'городить огороды' для каждой формы. существует, я думаю, как минимум 3-4 способа сделать огород один раз и юзать везде, где нужно. начиная с простейшего наследования. Нет, вопрос ухода с винды не стоит. Приложение 400 тысяч строк кода под Винду. Да и у самого у меня опыт в Винде более 20 лет, в другом (типа линукс или мак) шарю на уровне чайника, а не программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 21:23 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
makhaon DmitrySergeev79, авторС Delphi 7 уходил в том числе ради того уходить надо было не с делфи 7, а с винды. на такую операционку, в которой поведение окон такое как хочется. ну и да. конечно же совсем не обязательно 'городить огороды' для каждой формы. существует, я думаю, как минимум 3-4 способа сделать огород один раз и юзать везде, где нужно. начиная с простейшего наследования. Насколько я понимаю, с Delphi 7 в любом случае надо уходить в 2021 году. Так как велосипедов приходится изобретать всё больше, чтобы приложение более-менее нормально работало на последних версиях Windows. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2021, 21:43 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev IMHO & AFAIK Читать про SDI и MDI интерфейс для Windows приложений Читать про стили окон в Windows Читать, как это нормально делается в Delphi Не специалист по Depli, но в гугле полно информации, первая же попавшаяся ссылка: https://delphisources.ru/pages/faq/base/mdi_app_development.html Я всё прогуглил несколько раз прежде, чем писать. Как я понял - такое поведение Delphi нормальное. Придется таки писать костыли как и в Delphi 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2021, 00:38 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
DmitrySergeev79 Leonid Kudryavtsev IMHO & AFAIK Читать про SDI и MDI интерфейс для Windows приложений Читать про стили окон в Windows Читать, как это нормально делается в Delphi Не специалист по Depli, но в гугле полно информации, первая же попавшаяся ссылка: https://delphisources.ru/pages/faq/base/mdi_app_development.html Я всё прогуглил несколько раз прежде, чем писать. Как я понял - такое поведение Delphi нормальное. Придется таки писать костыли как и в Delphi 7. Еще раз. При чем тут Делфи? Делфи - только инструмент. Окнами (впрочем и не только ими) заправляет операционка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2021, 12:25 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
makhaon Еще раз. При чем тут Делфи? Делфи - только инструмент. Окнами (впрочем и не только ими) заправляет операционка. Как я понимаю, конкретно за это поведение (запрет немодальных окон) отвечает VCL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2021, 13:02 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
makhaon, Ну если такое поведение Delphi нормальное и чтобы решить задачу, которую я сформулировал, надо писать костыли, нет проблем, буду писать костыли. Благо с наследованием классов за 15 лет работы в Delphi 7 знаком, код который нужен известен и подключить его ко всем формам нет проблем. Просто я думал - может, это как-то решается стандартными средствами, а я как всегда изобретатель велосипедов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2021, 23:19 |
|
||
|
Проблема со сворачиванием окон на Delphi XE8 - сворачивается одно окно вместо всех
|
|||
|---|---|---|---|
|
#18+
DmitrySergeev79 Благо с наследованием классов за 15 лет работы в Delphi 7 знаком, код который нужен известен и подключить его ко всем формам нет проблем. Вам придется сделать общего предка для модальных форм, но модальные формы сторонних компонентов не будут его наследниками, IMHO, лучше заменять WindowProc модальных форм в обработчике Screen.OnActiveFormChange - тогда каждая модальная форма будет обрабатывать WM_SYSCOMMAND, EnableWindow(Application.Handle,true) и пр. в новой WindowProc ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2021, 03:47 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40069336&tid=2037342]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 539ms |

| 0 / 0 |
