С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

Ошибка: Сannot make a visible window modal

02.03.2016, 11:03. Показов 4205. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Есть основная форма Form1, из неё открываю Form2
Из Form2 открываю Form3.
Потом пытаюсь открыть из Form3 форму Form2 -
пишет ошибку cannot make a visible window modal

код на Form2
C++
1
2
3
Form2->Close();
 Form2->Hide();
 Form1->Button25->Click();
код на Form3
C++
1
2
3
Form3->Close();
 Form3->Hide();
 Form1->Button25->Click();
код на Form1
открытие Form2
C++
1
Form2->ShowModal();
Button25
C++
1
2
3
4
5
6
7
8
if (Form2->Visible==false)
    {
        Form3->ShowModal();
    }
if (Form3->Visible==false)
    {
        Form2->ShowModal();
    }
В чем трабл? Или как то проще можно? Спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.03.2016, 11:03
Ответы с готовыми решениями:

Cannot Make a visible window Modal
Помогите устранить ошибку Cannot Make a visible window Modal При открытии другой формы.

Ошибка: Cannot make a visible window modal
Здравствуйте, вылазит эта ошибка, я уже пробовал многое, но не помогло. Помогите пожалуйста, а то я уже готов сдаться и идти делать это на...

Cannot make a visible window modal
не пойму как исправить вот код: Открываю форму из главной try EditFilter_frm := TEditFilter_frm.Create(self); if...

27
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 11:38
Трабл в очередности вызова процедур. Почему вы пытаетесь скрыть закрытое окно ?
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 11:46  [ТС]
поменял местами поменял Hide и Close, а так же попробовал поменять Hide() на Visible=false
тоже самое. При при открытие из формы 3 второй формы эта ошибка
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 11:57
Ну объясните мне пожалуйста, зачем закрывать скрытые окна ? Вы таким образом пытаетесь определить какое окно активно ?

Добавлено через 5 минут
И к тому же, раз вы модально открываете окна, то они не должны перекрывать друг-друга.
Из Form2 открываю Form3 пытаюсь открыть из Form3 форму Form2
Вы же не просто скрываете, а ЗАКРЫВАЕТЕ, т.е. вам нужно не показать, а заново создать и открыть форму
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 11:57  [ТС]
хорошо.
убрал кнопку с первой формы, во второй форме
C++
1
2
Form2->Close();
        Form3->ShowModal();
в третьей форме
C++
1
2
Form3->Close();
        Form2->ShowModal();
то же самое - При при открытие из формы 3 второй формы эта ошибка
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 11:58
Цитата Сообщение от Sergey_03 Посмотреть сообщение
При при открытие из формы 3 второй формы эта ошибка
На этом этапе у вас нет формы 2, т.к. вы ее закрыли.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 11:58  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
вам нужно не показать, а заново создать и открыть форму
если не трудно, поясните пожалуйста. что нужно добавить?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 12:00
Как сделать чтобы 2 модальные формы не конфликтовали между собой?
ну и внизу в Похожих темах много материала
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 12:24  [ТС]
Цитата Сообщение от Почтальон Посмотреть сообщение
Похожих темах много материала
материала много, решение не понятно.
с первой формы вторая открывается, со второй формы третья открывается, а с третьей формы вторая не хочет
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 12:35
Потому что вы не можете в модальном режиме открыть еще одну модальную форму.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 12:44  [ТС]
Добавлено через 3 минуты
Цитата Сообщение от Почтальон Посмотреть сообщение
вы не можете в модальном режиме открыть еще одну модальную форму.
из второй формы в третью выходит же.
то есть из третьей надо выйти в первую, а потом из первой во вторую? только так?
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 12:52
Цитата Сообщение от Sergey_03 Посмотреть сообщение
из второй формы в третью выходит же.
то есть из третьей надо выйти в первую, а потом из первой во вторую? только так?
Ну что-то типа того. Просто насколько знаю - нет такого понятия как модальность в модальности. Модальность обычно возвращает какой-то результат, а не тупо перекрывает доступ к владельцу формы.
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33371 / 21497 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
02.03.2016, 12:55
Sergey_03, сделай простой тестовый проект (просто три пустых формы), который воспроизводит описываемое поведение, и скажи, в каком порядке что делать, чтобы получить что-то, что по твоему мнению идет не так. Тогда будет более предметный ответ.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 13:33  [ТС]
Спасибо.Проект прикрепил.
Хотел, что бы
1.Из Form1 открывалась Form2 по кнопке.
2.Из Form2 открывалась или Form3 или возвращалось в Form1 по кнопкам.
3.Из Form3 открывалась Form2.
Формы у меня во весь экран, поэтому я не вижу, что за открытой формой. Желательно, чтобы при открытие Form2, закрывалась Form3 и при открытие Form3, закрывалась Form2 , если они открыты все таки.

1 и 2 пункт у меня работает, третий ни в какую не хочет. И так и эдак пробовал - одно и тоже -
пишет ошибку cannot make a visible window modal
Вложения
Тип файла: rar ModalW.rar (7.57 Мб, 3 просмотров)
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
02.03.2016, 14:03
Sergey_03, у меня иначе как по таймеру не получается...
C++
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
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
      Tag=2 ;
      Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
    Timer1->Enabled = false;
    switch(Tag) {
      case 2: Form2->ShowModal(); break;
      case 3: Form3->ShowModal(); break; 
    }
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    Form1->Tag = 3;
    Form2->Close();
    Form1->Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
void __fastcall TForm3::Button1Click(TObject *Sender)
{
    Form1->Tag = 2;
    Form3->Close();
    Form1->Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.03.2016, 14:12
Все это, потому что метод ShowModal() останавливает исполнение кода там, где он вызван. Фактически получается, что вторая форма остается открытой модально вместе с третьей. Обходить это как-либо - уже костыль. Гораздо лучше в данном случае избавиться от ситуации, когда две формы одновременно отображаются модально.
2
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 14:16  [ТС]
Добавлено через 29 секунд
Цитата Сообщение от nick42 Посмотреть сообщение
у меня иначе как по таймеру не получается.
спасибо. если по другому никак - так попробую сделать.

Добавлено через 2 минуты
Цитата Сообщение от BRcr Посмотреть сообщение
две формы одновременно отображаются модально.
так мне и не надо, чтобы они одновременно отображались. поэтому и делаю Close
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
02.03.2016, 14:19
Вот еще костылек забавный - когда-то делал нечто вроде пультика ДУ к основной программе для отладки.
Отображение формы(или фрейма) в компании с другой модальной формой.

Добавлено через 49 секунд
Цитата Сообщение от Sergey_03 Посмотреть сообщение
так мне и не надо, чтобы они одновременно отображались.
Дык, тогда отображай немодально - и все проблемы испарятся, как по волшебству)
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
02.03.2016, 14:24  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
отображай немодально
никак. надо управлять из этих форм много чем
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
02.03.2016, 14:33
А с чего вы решили что модальность - выход из положения?
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.03.2016, 14:33
Помогаю со студенческими работами здесь

Не получается форму, ошибка "Cannot make a visible window modal"
Значит так, есть два sRadioButton procedure TForm1.sRadioButton2Click(Sender: TObject); begin Form3.ShowModal; ...

Ошибка: "cannot make a visible window modal"
procedure TForm7.Button1Click(Sender: TObject); begin form7.Caption:='Добавление Абонента'; form7.Edit1.Text:=''; ...

Сannot make MDE file
по каким причинам аксесс не может создать *.MDE? спасибо

Ошибка "cannot focus disabled or visible window"
Здравствуйте. После запуска программы при нажатии на image2 выходит ошибка "проект вызвал класс исключения "envailed operation" с...

вывод php кода в modal window
Здравствуйте, не получается вывести php код в модальное окно, все делал по гайдам в интернете. <!-- Блок модального окна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru