С63. На переключение между окнами внутри программы не проходит GainFocus
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
С63. На переключение между окнами внутри программы не проходит GainFocus
Например через стандартное меню "Окна"
Особенно если окна развернуты
Кто виноват и что делать? Как отловить?
Особенно если окна развернуты
Кто виноват и что делать? Как отловить?
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Проверил переключение через ОКНА - GainFocus() прекрасно проходит ...
По крайне мере, в стандартных шаблонах ABC. Если используете их, то
поставьте контрольную точку после ReturnValue = PARENT.TakeWindowEvent() и
посмотрите, какие номера событий Event() у Вас получает окно при этом действии ....
По крайне мере, в стандартных шаблонах ABC. Если используете их, то
поставьте контрольную точку после ReturnValue = PARENT.TakeWindowEvent() и
посмотрите, какие номера событий Event() у Вас получает окно при этом действии ....
Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
С63. На переключение между окнами внутри программы не проходит GainFocus
Я ставил на все внутренние события, проходит maximized и всё
Последний раз редактировалось RaFaeL 05 Апрель 2016, 22:04, всего редактировалось 1 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Это вряд ли.
А возьми какое-нибудь приложение из штатных EXAMPLES и проверь на нем ...
Не хотелось бы бодаться с "улучшенными" и "доработанными" кем-то шаблонами.
А возьми какое-нибудь приложение из штатных EXAMPLES и проверь на нем ...
Не хотелось бы бодаться с "улучшенными" и "доработанными" кем-то шаблонами.
Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
С63. На переключение между окнами внутри программы не проходит GainFocus
Хм, в тестовом работает
А в том что надо - нет...
А в том что надо - нет...
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Значит дело не в бобине ... 
Какие шаблоны используются в боевом приложении ? Те же штатные ABC ?

Какие шаблоны используются в боевом приложении ? Те же штатные ABC ?
Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
С63. На переключение между окнами внутри программы не проходит GainFocus
Совсем в тупик зашел - в одно и том же запущенном приложении может пройти, может нет, закономерности не выявлено
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Нет полезной информации. Я могу помочь разобраться - но мне нужна информация ... (см. ниже)
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5190
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Есть проблема, что GainFocus'а нет, если переключение идёт из другой программы (надо специально это отрабатывать). Может у Вас что-то подобное может быть?
We are hard at work… for you. 

С63. На переключение между окнами внутри программы не проходит GainFocus
А если на окно таймер повесить - мож, появится, даже если нифига не делать...
Были такие глупости - если есть неактивное окно без таймера, у него вообще циклы Accept могли не работать. А таймер проталкивает этот цикл, даже если окно неактивно.
Были такие глупости - если есть неактивное окно без таймера, у него вообще циклы Accept могли не работать. А таймер проталкивает этот цикл, даже если окно неактивно.
С63. На переключение между окнами внутри программы не проходит GainFocus
Мне вот тоже кажется, что TIMER(100) окошку не помешает.
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
С63. На переключение между окнами внутри программы не проходит GainFocus
Этих окон в программе 100500 штук
Я специально поднял старые релизы. Скорее всего, глюк этот был всегда, просто его никто не замечал, так как пользователи в силу неудобства между окнами не переключались а просто запускали новые окна и закрывали старые пока не появилась панель http://forum.clarionlife.net/phpbb/view ... f=1&t=3522 , а в случае закрытия-открытия окон все работает. Кмк, должно и с панелью ведь работать (там используется апишная функция BringWindowToTop)? Дело тут не в панели, я ее отключил, глюк не исчез, но он плавающий - то сработает, то нет. Есть предположение, что из-за тяжести форм, они достаточно объемные. Причем такое ощущение, что если быстро тестировать, то все работает, а если минутку подождать и переключиться, то болт (ну это возможно просто кажется). В тестовом приложении фрейма из двух пустых форм глюк у меня не проявляется. В панель я встроил "заплатку", которая по выбору нужной кнопки принудительно посылает в нужный тред event:gainfocus, но вопрос с "окнами" остался. Всю программу перелопачивать нереально. Пока остался с мыслью, что при наличии панели никто не будет пользоваться меню "Окна"
Я специально поднял старые релизы. Скорее всего, глюк этот был всегда, просто его никто не замечал, так как пользователи в силу неудобства между окнами не переключались а просто запускали новые окна и закрывали старые пока не появилась панель http://forum.clarionlife.net/phpbb/view ... f=1&t=3522 , а в случае закрытия-открытия окон все работает. Кмк, должно и с панелью ведь работать (там используется апишная функция BringWindowToTop)? Дело тут не в панели, я ее отключил, глюк не исчез, но он плавающий - то сработает, то нет. Есть предположение, что из-за тяжести форм, они достаточно объемные. Причем такое ощущение, что если быстро тестировать, то все работает, а если минутку подождать и переключиться, то болт (ну это возможно просто кажется). В тестовом приложении фрейма из двух пустых форм глюк у меня не проявляется. В панель я встроил "заплатку", которая по выбору нужной кнопки принудительно посылает в нужный тред event:gainfocus, но вопрос с "окнами" остался. Всю программу перелопачивать нереально. Пока остался с мыслью, что при наличии панели никто не будет пользоваться меню "Окна"
Последний раз редактировалось RaFaeL 06 Апрель 2016, 22:31, всего редактировалось 1 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
С63. На переключение между окнами внутри программы не проходит GainFocus
Нет "пользовательского меню Окна" - нет и проблемы ...

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