Нетрадиционное поведение Resizer
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
Привет всем !
Не могу сказать, что в последнем релизе C10, но точно недавно - появился интересный глюк.
В MDI, все работает, потом вдруг - открываешь окно .... а его нет. Сначала думал, какой-то
сбой. Сбросил настройки интерфейса программы и все опять работает.
Через два дня опять повторилось, потом еще и еще ... Решил разобраться.
В реестре нашел вот такие интересные данные.
Откуда может быть вообще такой порядок цифр с координатами окон ?!
Не могу сказать, что в последнем релизе C10, но точно недавно - появился интересный глюк.
В MDI, все работает, потом вдруг - открываешь окно .... а его нет. Сначала думал, какой-то
сбой. Сбросил настройки интерфейса программы и все опять работает.
Через два дня опять повторилось, потом еще и еще ... Решил разобраться.
В реестре нашел вот такие интересные данные.
Откуда может быть вообще такой порядок цифр с координатами окон ?!
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Нетрадиционное поведение Resizer
Игорь, как раз сегодня мы тоже обнаружили подобное. Но, у нас не в реестре, а в INI так произошло. Но, кажется, не с последним релизом, а с пред-предыдущим, 10925 что ли. Пока разовый случай. Я минут 15 поэкспериментировал на 11975, не получилось повторить. Будем ждать повторов, тем более есть ещё кто-то с таким случаем.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
Ну этот как раз без разницы - пишется куда настроили. Я в реестр, Вы в INI ...
Здесь важно из какой места Resizer берет эти цифры. А повторы, будут. Глюк стабильный, я его отжал.

В принципе, была идея залезть в класс и поставить отсечку на координаты окон.
Но тоже не однозначно. Кто-то работает на нетбуках, кто-то на мониторах 4K ...
Make Clarion Great Again ! 
-
- ✯ Ветеран ✯
- Сообщения: 5160
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Нетрадиционное поведение Resizer
Ну и где это? Конкретная ситуация известна? А то у нас - один раз (не ...).Игорь Столяров писал(а): Глюк стабильный, я его отжал.
We are hard at work… for you. 

- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
У меня была проблема с пропадающими окнами (которые открываются где-то на орбите Марса, судя по координатам).

Что известно:
- Известно, что это глюк именно Clarion, точнее одного из последних релизов.
- Известно, что он связан с некорректной работой Resizer.
- Известно, что сам класс не менялся более года (abresize.clw от 31.07.2014 г.)
- Логично предположить, что проблема связана с RunTime, скорее всего при каких-то условиях.
- Вычисление конкретных условий возникновение проблемы в общем-то бессмысленно - исправить не сможем.
(то же самое, как с недавним глюком хоткеев на закладках)
- Можно только проверять координаты и подозрительно большие обнулять ...
Это столь очевидно, что я и писать не стал ...

Make Clarion Great Again ! 
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1411
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Нетрадиционное поведение Resizer
Помнится, когда-то давно в С55 была точно такая же проблема. Закончилось вроде как тем, что перешли на другой ресайзер
Нетрадиционное поведение Resizer
MDI-окно легко можно загнать за границы фрейма, а позиция отсчитывается именно от фрейма. Вот и проблема...
Правда, координаты великоваты что-то, но и этого можно добиться.
Можно исправить метод Fetch для Iniclass, чтобы возвращал позицию окна, явно видимую на экране.
Или перехватывать GetIni, чтобы явно поправлять неверно сохранённую позицию.
Собственно, делал оба варианта
Правда, координаты великоваты что-то, но и этого можно добиться.
Можно исправить метод Fetch для Iniclass, чтобы возвращал позицию окна, явно видимую на экране.
Или перехватывать GetIni, чтобы явно поправлять неверно сохранённую позицию.
Собственно, делал оба варианта
- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
Спасибо ! Попробовал сделать так:
Код: Выделить всё
INIClass.FetchWindowInfo PROCEDURE (STRING ProcedureName, *WindowInfo Info)
....
Info.X = _nopos
Info.Y = _nopos
Info.W = _nopos
Info.H = _nopos
SELF.Fetch (ProcedureName, 'XPos', Info.X)
SELF.Fetch (ProcedureName, 'YPos', Info.Y)
SELF.Fetch (ProcedureName, 'Width', Info.W)
SELF.Fetch (ProcedureName, 'Height', Info.H)
!!! --- Коррекция координат
If ~InRange(Info.X,1,1600) then Info.X = _nopos.
If ~InRange(Info.Y,1,1600) then Info.Y = _nopos.
!!! ---
Info.Got = TRUE
RETURN

Make Clarion Great Again ! 
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Нетрадиционное поведение Resizer
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
Ну мой экран показывает где-то в районе 800 ...
Я решил, а вдруг кто-то живет лучше меня, может быть даже в два раза ? И умножил на два.
Я решил, а вдруг кто-то живет лучше меня, может быть даже в два раза ? И умножил на два.

Make Clarion Great Again ! 
- Admin
- Администратор
- Сообщения: 4010
- Зарегистрирован: 05 Июль 2005, 15:59
- Откуда: Хабаровск
- Благодарил (а): 53 раза
- Поблагодарили: 33 раза
- Контактная информация:
Нетрадиционное поведение Resizer
Т.е. у тебя все таки за края вылезет?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
- Игорь Столяров
- Ветеран движения
- Сообщения: 8031
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 28 раз
- Поблагодарили: 96 раз
Нетрадиционное поведение Resizer
Да. Но тут скорее попытка убрать описанный глюк Resizer, чем отслеживание попадания окна в Frame.
Хотя проблему со сдвигом окна влево и вверх за пределы FRAME - этот незамысловатый код убирает.
Хотя проблему со сдвигом окна влево и вверх за пределы FRAME - этот незамысловатый код убирает.

Make Clarion Great Again ! 