Автор | Сообщение |
|
| постоянный участник
|
Пост N: 7031
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.08.21 14:08. Заголовок: Модальное окно убегает от юзера
Всем привет ! Что то стали модальные окна пропадать... Т.е. прячутся под первое модальное окно. Юзера будут в шоке. Проблема. Открываю основное окно WINDOWTYPE STANDARD, далее по кнопке открывается модальное окно. На этом модальном окне по другой кнопке ACTION { || &(cRunErr) } открывается окно с Фастрепортом. После закрытия Фастрепорта, модальное окно прячется под основное окно. Раньше не пряталось, с какой версии так стало и не могу сказать. Даже если с модального окна вызвать другое модальное окно (типа индексации базы), то 1-ое модальное окно тоже прячется. Как можно вернуться обратно на первое модальное окно ? Что добавить в кнопку ACTION { || &(cRunErr) } ? Сергей писал об этом ранее, но я упустил этот момент. Может глобально можно это поправить ?
|
|
|
Ответов - 5
[только новые]
|
|
|
| постоянный участник
|
Пост N: 3842
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.08.21 15:37. Заголовок: Andrey пишет Как мож..
Andrey пишет цитата: | Как можно вернуться обратно на первое модальное окно ? |
| Попробуй FUNC Modal1( ) LOCAL hWnd := ThisWindow.Handle LOCAL hOld := _HMG_InplaceParentHandle _HMG_InplaceParentHandle := hWnd DEFINE WINDOW ... MODAL ... ... END WINDOW CENTER WINDOW ... ACTIVATE WINDOW ... _HMG_InplaceParentHandle := hOld RETURN Nil
|
|
|
|
| постоянный участник
|
Пост N: 7032
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.08.21 17:52. Заголовок: Ура ! Помогло ! Спа..
Ура ! Помогло ! Спасибо !
|
|
|
|
| постоянный участник
|
Пост N: 3843
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.08.21 07:20. Заголовок: Andrey В событии мо..
Andrey В событии можно так ACTION { || _wPost(10, , {This.Name, cRunErr}) } ... (This.Object):Event(10, {|ow,ky,aval, crun| ky := aval[1], crun := apar[2], ..., Modal1(ow)} ) ... FUNC Modal1(oWnd) LOCAL hOld := _HMG_InplaceParentHandle _HMG_InplaceParentHandle := oWnd:Handle DEFINE WINDOW ... MODAL ... ... END WINDOW CENTER WINDOW ... ACTIVATE WINDOW ... _HMG_InplaceParentHandle := hOld RETURN Nil В своей версии при работе с mdi+modal, исп. такой вариант (в тек. версии, возможно что то надо добавить) Для информации. Скрытый текст
FUNCTION Save_Rest_HMG( uHMG ) // save\restore _HMG_... переменные перед MODAL LOCAL aHMG IF hb_IsArray(uHMG) aHMG := uHMG _HMG_BeginWindowMDIActive := aHMG[ 1] _HMG_ActiveStatusHandle := aHMG[ 2] _HMG_UserWindowHandle := aHMG[ 3] _HMG_SetFocusExecuted := aHMG[ 4] _HMG_ThisFormName := aHMG[ 5] _HMG_ThisControlName := aHMG[ 6] _HMG_ActiveFontName := aHMG[ 7] _HMG_ActiveFontSize := aHMG[ 8] _HMG_ExtendedNavigation := aHMG[ 9] _HMG_InplaceParentHandle := aHMG[10] ELSE aHMG := array(10) aHMG[ 1] := _HMG_BeginWindowMDIActive aHMG[ 2] := _HMG_ActiveStatusHandle aHMG[ 3] := _HMG_UserWindowHandle aHMG[ 4] := _HMG_SetFocusExecuted aHMG[ 5] := _HMG_ThisFormName aHMG[ 6] := _HMG_ThisControlName aHMG[ 7] := _HMG_ActiveFontName aHMG[ 8] := _HMG_ActiveFontSize aHMG[ 9] := _HMG_ExtendedNavigation aHMG[10] := _HMG_InplaceParentHandle _HMG_BeginWindowMDIActive := .F. _HMG_ExtendedNavigation := .T. If hb_IsNumeric(uHMG) _HMG_InplaceParentHandle := uHMG EndIf ENDIF RETURN aHMG
| Использую FUNC Modal1(oWnd) LOCAL aHmg := Save_Rest_HMG( oWnd:Handle ) ... ACTIVATE WINDOW ... Save_Rest_HMG(aHmg) RETURN Nil
|
|
|
|
| постоянный участник
|
Пост N: 7086
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.10.21 00:03. Заголовок: Что то с окнами непо..
Что то с окнами непонятное происходит. Есть окно WINDOWTYPE STANDARD, из него вызываю окно MODAL с добавкой: LOCAL hWnd := ThisWindow.Handle LOCAL hOld := _HMG_InplaceParentHandle ..... _HMG_InplaceParentHandle := hWnd DEFINE WINDOW Form_Repоrt ; MODAL ; ..... @ BUTTONEX Btn_Start ACTION (myStart) ... ..... END WINDOW ACTIVATE WINDOW Form_Report _HMG_InplaceParentHandle := hOld Вызываю по кнопке Btn_Start ACTION (myStart) отдельный модуль расчёта. Если в этом модуле не вызывать другие окна, то всё отлично работает. Если в этом модуле вызвать другое окно MODAL ( Form_F2F), то после него прога рушиться и говорит нет Окна. Вот код в модуле: ? ProcNL() ? " 1 Была форма=",cForm,"Сейчас форма=", ThisWindow.Name aRet := Form_Comp01(cFileReestr,"Режим сравнения: "+aModeWrite[nModeWrite],cPeriod) IF LEN(aRet) == 0 RETURN .T. ENDIF ? "aRet=", aRet, HB_ValToExp(aRet) ? ProcNL() ? " 2 Была форма=",cForm,"Сейчас форма=" ?? ThisWindow.Name // вылет, строка 147 Вот что в логе: Вызов из: COMPARE01REPRT(136) --> form_compare01.prg 1 Была форма= Form_Repоrt Сейчас форма= Form_Repоrt aRet= ARRAY[2] {2, {"поиск по графе л/счёт", "поиск по графе л/счёт (18 знаков)"}} Вызов из: COMPARE01REPRT(145) --> form_compare01.prg 2 Была форма= Form_Repоrt Сейчас форма= И вылет !!! Вот такой: Error MGERROR/0 Window: Form_F2F is not defined. Program terminated. Called from MSGMINIGUIERROR(0) Called from GETPROPERTY(0) Called from COMPARE01REPRT(147) in module: form_compare01.prg Called from (b)HB_MACROBLOCK(0) Как исправить ошибку ? Почему теряется окно ?
|
|
|
|
| постоянный участник
|
Пост N: 7087
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.10.21 09:26. Заголовок: Поставил на форму Fo..
Поставил на форму Form_Repоrt тестовую кнопку и вызываю другое окно MODAL (Form_F2F). Всё равно идёт ошибка, но другая: Error MGERROR/0 Control: Image_1 Of Form_F2F Not defined. Program terminated. Методом проб и ошибок сделал следующее. Был такой простой код: ACTION {|aR| Doevents(), aR := SelectTest() , MsgDebug(aR), This.Image_1.Setfocus } Сделал так: ACTION {|aR| Doevents(), aR := SelectTest() , MsgDebug(aR), myFocus() } ..... STATIC FUNCTION myFocus() Form_Report.Image_1.Setfocus DO EVENTS RETURN NIL И всё заработало без ошибок.
|
|
|
|