C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
MDI формы, Модальная MDI child форма
GLI
Отправлено: 11.07.2003, 07:19


Не зарегистрирован







Не подскажете можно ли MDI child форму сделать модальной или как нибуть в обработчике дождаться закрытия этой формы. В общем это каталог выбора, выбираем из него и по закрытии присваеваем значение уже в форме из которой вызвали Child
sprinter
Отправлено: 11.07.2003, 11:48


Ученик-кочегар

Группа: Участник
Сообщений: 14



В общем-то понятно, что в MDI — все равны и если кто-то равнее, то возникают такие проблемы. Думаю, что принципиально можно решить только выводом каталога на отдельной форме. Если же вся прога будет построена на неMDIишных отношениях MDI-форм — сами понимаете каково будет ими рулить.
Но пару решений можно предложить
1. Сделать очередную форму нормальной после ее создания, т.е.
Child = new TMDIChild(Application);
Child->Caption = Name;
//Условие уникальное именно для этого окна
if(ActiveMDIChild->Caption=="NONAME2")
Child->FormStyle=fsNormal; // или Child->FormStyle=fsStayOnTop;
и далее присвоить событию OnDeactivate этого окна функцию в которой выполнялось бы что-нибудь типа SetActiveWindow.
2. Не менее витееватый.
При открытии окна создать флаг (=False) разрешения закрытия этого окна.
Событию FormCloseQuery и/или OnDeactivate присвоить функцию в которой проверяется флаг и если =True то закрываем окно, либо не разрешаем переключиться. А флаг = True когда сделан выбор.

Может предложенные подходы и не блещут красотой, но пока лучше ничего не придумалось.

Вернуться в Вопросы программирования в C++Builder