Страница 1 из 1
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 18:29
RaFaeL
Например через стандартное меню "Окна"
Особенно если окна развернуты
Кто виноват и что делать? Как отловить?
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 21:29
Игорь Столяров
Проверил переключение через ОКНА - GainFocus() прекрасно проходит ...
По крайне мере, в стандартных шаблонах ABC. Если используете их, то
поставьте контрольную точку после ReturnValue = PARENT.TakeWindowEvent() и
посмотрите, какие номера событий Event() у Вас получает окно при этом действии ....
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 21:41
RaFaeL
Я ставил на все внутренние события, проходит maximized и всё
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 21:46
Игорь Столяров
Это вряд ли.
А возьми какое-нибудь приложение из штатных EXAMPLES и проверь на нем ...
Не хотелось бы бодаться с "улучшенными" и "доработанными" кем-то шаблонами.
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 23:08
RaFaeL
Хм, в тестовом работает
А в том что надо - нет...
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 23:12
Игорь Столяров
Значит дело не в бобине ...

Какие шаблоны используются в боевом приложении ? Те же штатные ABC ?
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 23:54
RaFaeL
Совсем в тупик зашел - в одно и том же запущенном приложении может пройти, может нет, закономерности не выявлено
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 05 Апрель 2016, 23:56
Игорь Столяров
RaFaeL писал(а): Совсем в тупик зашел
Нет полезной информации. Я могу помочь разобраться - но мне нужна информация ... (см. ниже)
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 13:54
kreator
Есть проблема, что GainFocus'а нет, если переключение идёт из другой программы (надо специально это отрабатывать). Может у Вас что-то подобное может быть?
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 15:54
Yufil
А если на окно таймер повесить - мож, появится, даже если нифига не делать...
Были такие глупости - если есть неактивное окно без таймера, у него вообще циклы Accept могли не работать. А таймер проталкивает этот цикл, даже если окно неактивно.
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 17:40
Shur
Мне вот тоже кажется, что TIMER(100) окошку не помешает.
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 22:02
RaFaeL
Этих окон в программе 100500 штук
Я специально поднял старые релизы. Скорее всего, глюк этот был всегда, просто его никто не замечал, так как пользователи в силу неудобства между окнами не переключались а просто запускали новые окна и закрывали старые пока не появилась панель
http://forum.clarionlife.net/phpbb/view ... f=1&t=3522 , а в случае закрытия-открытия окон все работает. Кмк, должно и с панелью ведь работать (там используется апишная функция BringWindowToTop)? Дело тут не в панели, я ее отключил, глюк не исчез, но он плавающий - то сработает, то нет. Есть предположение, что из-за тяжести форм, они достаточно объемные. Причем такое ощущение, что если быстро тестировать, то все работает, а если минутку подождать и переключиться, то болт (ну это возможно просто кажется). В тестовом приложении фрейма из двух пустых форм глюк у меня не проявляется. В панель я встроил "заплатку", которая по выбору нужной кнопки принудительно посылает в нужный тред event:gainfocus, но вопрос с "окнами" остался. Всю программу перелопачивать нереально. Пока остался с мыслью, что при наличии панели никто не будет пользоваться меню "Окна"
С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 22:07
Игорь Столяров
RaFaeL писал(а): Пока остался с мыслью, что при наличии панели никто не будет пользоваться меню "Окна"
Нет "пользовательского меню Окна" - нет и проблемы ...

С63. На переключение между окнами внутри программы не проходит GainFocus
Добавлено: 06 Апрель 2016, 22:29
Yufil
Таймер развесить несложно, поправив windowmanager (abwindow.clw)
После открытия окна в методе windowmanager.init сказать что-то типа
IF 0{Prop:Mdi} And 0{Prop:Timer} = 0 Then 0{Prop:Timer}=100.