С Новым годом! Форум программистов, компьютерный форум, киберфорум
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. Показов 4202. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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 считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru