On-line: гостей 1. Всего: 1 [подробнее..]
АвторСообщение



Пост N: 4
Зарегистрирован: 17.12.14
ссылка на сообщение  Отправлено: 24.12.14 11:34. Заголовок: Проблема с модальным окном MiniGUI2.4


Помогите пожалуйста.
Из главного окна приложения ухожу в модальное окно. Если переключиться на другое окно (другое приложение), а потом попытаться вернуться в мое приложение, щелкнув на значке окна, то фокус получает не модальное окно (которое до того было активным), а главное окно приложения. Модальное окно становится активным только если свернуть все остальные окна.
Ошибка? Как исправить?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 17 [только новые]


постоянный участник




Пост N: 3874
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.12.14 14:26. Заголовок: alexandr11 пишет: О..


alexandr11 пишет:

 цитата:
Ошибка? Как исправить?


Давай отдельный пример.
И под какой системой работаешь ?
У меня на Win8.1 тоже есть непонятка: с главного окна вызываю CHILD окно, а потом с CHILD окна вызываю MODAL окно.
переключаюсь на другое окно, потом обратно на задачу, только под модальным окном находиться MAIN окно.
После выхода из MODAL окна, появляется CHILD окно.
Может и правильно делается, я не знаю.....

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 5
Зарегистрирован: 17.12.14
ссылка на сообщение  Отправлено: 24.12.14 16:04. Заголовок: работаю в WindowsXP ..


работаю в WindowsXP
моя проблема очень похожа на Вашу.
когда активно модальное окно, внизу в панели отображается имя его родительского окна.
если уйти в другое приложение, а затем щелкнуть на нем, то на экране появится не модальное окно, а родительское. притом оно не активно.
в MiniGUI1.0 работало.
вот очень похожий пример. поочередно активируются 3 окна. если третье - модальное, то после его закрытия фокус почему-то получает первое, при этом второе окно деактивируется. если второе окно сделать child, то оно останется на экране, но фокус все равно получит первое окно

если третье окно - не модальное, то фокус ожидаемо получает второе окно

#include "minigui.ch"
**************************
Function Main
DEFINE WINDOW SAST_1;
AT 0,0 ;
WIDTH 500;
HEIGHT 500;
TITLE "SAST_1";
MAIN

DEFINE BUTTON B1
ROW 100
COL 100
WIDTH 90
HEIGHT 30
CAPTION "GOSAST_2"
ACTION GOSAST_2()
END BUTTON

END WINDOW

CENTER WINDOW SAST_1
activate window SAST_1
Return Nil
*******************
FUNCTION GOSAST_2

DEFINE WINDOW SAST_2 ;
AT 0,0 ;
WIDTH 400 HEIGHT 400 ;
TITLE "SAST_2"

DEFINE BUTTON B1
ROW 100
COL 100
WIDTH 90
HEIGHT 30
CAPTION "GOSAST_3"
ACTION GOSAST_3()
END BUTTON

END WINDOW

CENTER WINDOW SAST_2
ACTIVATE WINDOW SAST_2

RETURN(.T.)
*******************
FUNCTION GOSAST_3

DEFINE WINDOW SAST_3 ;
AT 0,0 ;
WIDTH 300 HEIGHT 300 ;
TITLE "SAST_3";
MODAL

END WINDOW

CENTER WINDOW SAST_3
ACTIVATE WINDOW SAST_3

RETURN(.T.)

Спасибо: 0 
ПрофильЦитата Ответить
moderator




Пост N: 702
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.12.14 16:26. Заголовок: alexandr11 пишет: в..


alexandr11 пишет:

 цитата:
вот очень похожий пример


Благодарю за пример.
Для решения проблемы определите второе окно как дочернее (CHILD).

Исправленный пример см. ниже
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 17.12.14
ссылка на сообщение  Отправлено: 24.12.14 16:35. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Для решения проблемы определите второе окно как дочернее (CHILD).


я об этом писал. при закрытии третьего окна второе окно остается, но фокус получает первое окно
а вот при переходе в другое приложение и обратно - полностью помогло
(видимо по причине того, что первое окно я прячу HIDE)
спасибо!

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




Пост N: 3885
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.15 02:32. Заголовок: Непонятка у меня с м..


Непонятка у меня с моим модальным окном.

Добавил в свой проект новую форму из другого проекта. Теперь при попытке его открыть - выходит ошибка:
Error MGERROR/0 Non Modal Window Form_Spr can't be activated when a Modal window is active. Program terminated.
Called from MSGMINIGUIERROR(91)
Called from _ACTIVATEWINDOW(1356)
Called from DOMETHOD(4677)
Called from FORM_SPRAVKI(428)

В предыдущем проекте эта форма работала, а после добавления в большой проект не работает....
...........
ON MAXIMIZE { || ResizeSprBrowse() } ;
CHILD ;
NOMINIMIZE NOSYSMENU


Может быть из-за того что вызываю из меню с окном МODAL ?

Как перевести и исправить эту ошибку ?


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


Пост N: 1020
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 09.01.15 09:47. Заголовок: Andrey пишет: Как п..


Andrey пишет:

 цитата:
Как перевести


"Немодальное окно Form_Spr не может быть активировано, когда (пока) активно модальное окно"

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




Пост N: 3886
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.15 15:05. Заголовок: PSP пишет: "Нем..


PSP пишет:

 цитата:
"Немодальное окно Form_Spr не может быть активировано, когда (пока) активно модальное окно"


Т.е. нельзя после MODAL-окна вызывать другие окна ?
А как тогда можно делать ?


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 17.12.14
ссылка на сообщение  Отправлено: 10.01.15 17:51. Заголовок: если не ошибаюсь, об..


если не ошибаюсь, обходил такую проблему в MiniGUI 1.0

попробуйте спрятать модальное окно (hide), затем активировать второе, а после его закрытия вернуться в первое (restore)

также в MiniGUI 1.0 использовал следующее:
есть переменная _HMG_IsModalActive. перед активацией второго модального окна присваиваем ей значение .F.
а после его закрытия - .T.
возможно, в каком-то случае возникнут ошибки, но у меня все работает

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




Пост N: 3889
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.01.15 12:13. Заголовок: alexandr11 пишет: п..


alexandr11 пишет:

 цитата:
перед активацией второго модального окна присваиваем ей значение .F.
а после его закрытия - .T.


Спасибо БОЛЬШОЕ ! То что нужно !

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




Пост N: 4009
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.15 23:14. Заголовок: Andrey пишет: У мен..


Andrey пишет:

 цитата:
У меня на Win8.1 тоже есть непонятка: с главного окна вызываю CHILD окно, а потом с CHILD окна вызываю MODAL окно.
переключаюсь на другое окно, потом обратно на задачу, только под модальным окном находиться MAIN окно.
После выхода из MODAL окна, появляется CHILD окно.
Может и правильно делается, я не знаю.....



Вот с этим я так и не разобрался до сих пор.
Как это исправить ?
1) с главного окна вызываю доп.окно (без указания CHILD) ( а какое это окно тогда по умолчанию ? )
Скрытый текст

2) c этого окна вызываю CHILD окно.
Под ним появляется MAIN окно... Почему ?

При закрытии CHILD окна появляется доп.окно !

Непорядок....



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




Пост N: 488
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.03.15 14:45. Заголовок: Andrey используй ст..


Andrey
используй стек для окон (как делали в clipper). в init window добавляешь окно в стек а в release window удаляешь последний элемент (свое окно) и ставь фокус принудительно на получившийся последний. (в стеке можно с контролом хранить на который устанавливаться фокусом)

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




Пост N: 4016
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.03.15 15:04. Заголовок: Я понял эту идею. Ме..


Я понял эту идею.
Меня не устраивает то что при переходе в CHILD окно под ним устанавливается MAIN . Почему ?
Т.е. тогда мне самому нужно переключать окно в ON INIT (окна CHILD) на доп.окно ?

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




Пост N: 489
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.03.15 15:32. Заголовок: Andrey пишет:Т.е. то..


Andrey пишет:
 цитата:
Т.е. тогда мне самому нужно переключать


окнами придется управлять тебе самому, нравится это тебе или нет. окна надо скрывать, разрушать и создавать снова, оставляя видимыми, например 1-2 последних child + modal, а остальные hide или release

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




Пост N: 4020
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.03.15 17:24. Заголовок: SergKis пишет: окна..


SergKis пишет:

 цитата:
окнами придется управлять тебе самому


Понял. Спасибо !

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




Пост N: 4021
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.03.15 17:48. Заголовок: Переделал (поставил ..


Переделал (поставил CHILD в создании окна/до этого не было), помогло...

Всё замечательно теперь. Только если окно уже открыто и под другими программами, то не переключаются вообще...

В проге поставил, что Григорий давал:
IF !IsWindowActive( Form_Spr )
.....
ACTIVATE WINDOW Form_Spr // показываем форму

ELSE // !IsWindowActive( Form_Spr )

SwitchToWin( "Form_Spr" ) // переключить на форму

ENDIF // !IsWindowActive( Form_Spr )

*-----------------------------------
Function SwitchToWin( cForm )
*-----------------------------------

If _IsWindowDefined( cForm )
If IsIconic( GetFormHandle(cForm) )
_Restore( GetFormHandle(cForm) )
Else
DoMethod( cForm, "SetFocus" )
EndIf
EndIf

Return Nil


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




Пост N: 490
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.03.15 23:21. Заголовок: Andrey пишет:то не п..


Andrey пишет:
 цитата:
то не переключаются вообще.


попробуй SetProperty(cForm,"Topmost", .T.)

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




Пост N: 4025
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.15 00:28. Заголовок: SergKis пишет: попр..


SergKis пишет:

 цитата:
попробуй SetProperty(cForm,"Topmost", .T.)



Заработало ! Ура ! Спасибо !!!

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

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