Нетрадиционное поведение Resizer

Clarion, Clarion 7

Модератор: Дед Пахом

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

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

Привет всем !

Не могу сказать, что в последнем релизе C10, но точно недавно - появился интересный глюк.
В MDI, все работает, потом вдруг - открываешь окно .... а его нет. Сначала думал, какой-то
сбой. Сбросил настройки интерфейса программы и все опять работает.

Через два дня опять повторилось, потом еще и еще ... Решил разобраться.

В реестре нашел вот такие интересные данные.
Resize.jpg
Откуда может быть вообще такой порядок цифр с координатами окон ?!
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Нетрадиционное поведение Resizer

Сообщение kreator »

Игорь, как раз сегодня мы тоже обнаружили подобное. Но, у нас не в реестре, а в INI так произошло. Но, кажется, не с последним релизом, а с пред-предыдущим, 10925 что ли. Пока разовый случай. Я минут 15 поэкспериментировал на 11975, не получилось повторить. Будем ждать повторов, тем более есть ещё кто-то с таким случаем.
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

kreator писал(а): Но, у нас не в реестре, а в INI так произошло
Ну этот как раз без разницы - пишется куда настроили. Я в реестр, Вы в INI ...
Здесь важно из какой места Resizer берет эти цифры. А повторы, будут. Глюк стабильный, я его отжал. ;)

В принципе, была идея залезть в класс и поставить отсечку на координаты окон.
Но тоже не однозначно. Кто-то работает на нетбуках, кто-то на мониторах 4K ...
Make Clarion Great Again ! 😎
kreator
✯ Ветеран ✯
Сообщения: 5160
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 11 раз
Поблагодарили: 26 раз

Нетрадиционное поведение Resizer

Сообщение kreator »

Игорь Столяров писал(а): Глюк стабильный, я его отжал.
Ну и где это? Конкретная ситуация известна? А то у нас - один раз (не ...).
We are hard at work… for you. :)
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

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

Это столь очевидно, что я и писать не стал ... :)
Make Clarion Great Again ! 😎
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1411
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 12 раз
Поблагодарили: 2 раза
Контактная информация:

Нетрадиционное поведение Resizer

Сообщение RaFaeL »

Помнится, когда-то давно в С55 была точно такая же проблема. Закончилось вроде как тем, что перешли на другой ресайзер
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Нетрадиционное поведение Resizer

Сообщение Yufil »

MDI-окно легко можно загнать за границы фрейма, а позиция отсчитывается именно от фрейма. Вот и проблема...
Правда, координаты великоваты что-то, но и этого можно добиться.

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

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

Yufil писал(а): Можно исправить метод Fetch для Iniclass
Спасибо ! Попробовал сделать так:

Код: Выделить всё

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

Сообщение Admin »

Игорь Столяров писал(а):1600
Под свой экран заточил! :idied:
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 8031
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 28 раз
Поблагодарили: 96 раз

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

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

Нетрадиционное поведение Resizer

Сообщение Admin »

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

Нетрадиционное поведение Resizer

Сообщение Игорь Столяров »

Да. Но тут скорее попытка убрать описанный глюк Resizer, чем отслеживание попадания окна в Frame.
Хотя проблему со сдвигом окна влево и вверх за пределы FRAME - этот незамысловатый код убирает. ;)
Make Clarion Great Again ! 😎
Ответить