On-line: Andrey, PSP, гостей 3. Всего: 5 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 7031
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.21 14:08. Заголовок: Модальное окно убегает от юзера


Всем привет !
Что то стали модальные окна пропадать... Т.е. прячутся под первое модальное окно.
Юзера будут в шоке.

Проблема.
Открываю основное окно WINDOWTYPE STANDARD, далее по кнопке открывается модальное окно.
На этом модальном окне по другой кнопке ACTION { || &(cRunErr) } открывается окно с Фастрепортом.
После закрытия Фастрепорта, модальное окно прячется под основное окно.
Раньше не пряталось, с какой версии так стало и не могу сказать.
Даже если с модального окна вызвать другое модальное окно (типа индексации базы), то 1-ое модальное окно тоже прячется.

Как можно вернуться обратно на первое модальное окно ?
Что добавить в кнопку ACTION { || &(cRunErr) } ?
Сергей писал об этом ранее, но я упустил этот момент.
Может глобально можно это поправить ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 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


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7032
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.21 17:52. Заголовок: Ура ! Помогло ! Спа..


Ура ! Помогло ! Спасибо !

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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, исп. такой вариант (в тек. версии, возможно что то надо добавить)
Для информации. Скрытый текст

Использую
FUNC Modal1(oWnd)
LOCAL aHmg := Save_Rest_HMG( oWnd:Handle )
...
ACTIVATE WINDOW ...
Save_Rest_HMG(aHmg)
RETURN Nil

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост 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)


Как исправить ошибку ? Почему теряется окно ?

Спасибо: 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

И всё заработало без ошибок.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 166
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет