Форум » GUI » [?] Модальное окно » Ответить

[?] Модальное окно

Dima: Приложение родило модальное окно , каким образом свернуть все приложение в панель задач , не закрывая модального окна ?

Ответов - 16

Andrey: Если знаешь все имена открытых окон, то делай так: DoMethod( cFormName, "Minimize" ) А можешь и все свернуть, а для модального окна сделать: DoMethod( cFormName, "Restore" )

Dima: да но на модальном нет кнопочки свернуть....рядом с крестиком. предлагаешь забацать свою спец кнопку ?

Andrey: Dima пишет: предлагаешь забацать свою спец кнопку ? Да не обязательно делать свою кнопку. Можешь при создании модального окна сделать следующее: DEFINE WINDOW Form_Cnf ; MODAL ; ON INIT { || DoMethod( cFormName1, "Minimize" ), DoMethod( cFormName2, "Minimize" ), ....,; SetProperty("Form_Cnf", "Topmost", .T.), DoMethod( "Form_Cnf", "Restore" ), SetProperty("Form_Cnf", "Topmost", .F.) }


Dima: Andrey Ты вопрос не понял. В программе заполняется некий документ , вызываю справочник , который живет в модальном окне. Вопрос: как свернуть все приложение не закрывая справочник ? Ведь у модального окна нет кнопки свернуть.

PSP: Если ты имеешь ввиду "свернуть руками", то WIN-D должно помочь.

Dima: PSP пишет: Если ты имеешь ввиду "свернуть руками", то WIN-D должно помочь.

PSP: Можно также мышой щёлкнуть в области правого нижнего угла экрана, если wинда 7/8/10. На XP отдельный ярлык. Ну, ты знаешь)

Vlad04: Приложение родило модальное окно В модальном окне куча полей, я редактирую запись, для этого хотелось бы при открытом модальном окне иметь возможность вызывать справочники, т.е открывать другие окна. В МиниГуи ни как .В Делфи нельзя вернуться в родительское окна, а справочник вызвать - без проблем

Andrey: Vlad04 пишет: иметь возможность вызывать справочники, т.е открывать другие окна. В МиниГуи ни как Да я тоже с этим столкнулся. Пришлось переделывать на обычное окно ....

Haz: Vlad04 пишет: нельзя вернуться в родительское окна, а справочник вызвать - без проблем Из модельного вызывай модальное сколько угодно

Dima: Haz пишет: Из модельного вызывай модальное сколько угодно +1 Работает

Vlad04: попробую

Softlog86: Создал форму (модальное окно) - активизировал его , но есть косяки : Если ГЛАВНОЕ окно программы (main) не скрыто - то моё модальное окно видимо НА ФОНЕ главного окна программы , а (логично) должно быть на фоне последнего выведенного окна программы (или всех открытых окон программы ) .... Если main-окно скрыто ( .HIDE) , то всё происходит как и должно быть : отображаются все окна , выведенные до этого , а поверх них моё модальное .... Как побороть эту бяку ?

Петр: Softlog86 пишет: Создал форму (модальное окно) - активизировал его поздравляю но есть косяки 100%, но где и у кого? моё модальное окно видимо НА ФОНЕ главного окна программы это логично, поскольку в большинстве случаев родительским окном модального является главное окно программы (по крайней мере в MiniGUI). а (логично) должно быть на фоне последнего выведенного окна программы (или всех открытых окон программы ) а это не логично (по крайней мере для Роберто), но, думаю, возможно. Но здесь все в руках программиста, т.е. ваших, а не библиотеки. Библиотека представила вам _HMG_InplaceParentHandle (конечно, не совсем для этих целей, но все же.) _HMG_InplaceParentHandle := LastOpenedForm.Handle ModalCreateAndShow() _HMG_InplaceParentHandle := 0 Если main-окно скрыто ( .HIDE) , то всё происходит как и должно быть : отображаются все окна , выведенные до этого , а поверх них моё модальное .... А здесь в чем вопрос? DisableWindow( hMainWindow ) ModalShow() EnableWindow( hMainWindow ) Softlog86 пишет: Как побороть эту бяку ? Собственную лень ? Я для себя такого ответа еще не нашел

Петр: Петр пишет: DisableWindow( hMainWindow ) ModalShow() EnableWindow( hMainWindow ) Вернее не DisableWindow/EnableWindow, а ShowWindow/HideWindow, но и такое поведение может пригодится.

SergKis: Петр Добавлю, установив родителя окну, будут "работать" координаты относительно родителя. Пример в Tsb_addrecord_3 Func Add_Rec(...) [pre2] ... Local hWnd := GetFormHandle(cWnd) Local hInpl := _HMG_InplaceParentHandle _HMG_InplaceParentHandle := hWnd ... nRow := :nTop + GetWindowRow(hWnd) - GetBorderHeight() nCol := :nLeft + GetWindowCol(hWnd) - GetBorderWidth () + 1 ... nRow += nY nCol += nX ... DEFINE WINDOW wNewRec ; AT nRow, nCol WIDTH nWdt HEIGHT nHgt TITLE '' ; ... _HMG_InplaceParentHandle := hInpl ... [/pre2]



полная версия страницы