пятница, 3 июня 2016 г.

Как изменились размеры окон в Берлине


Решил я наконец-то попробовать Берлинскую версию. И вот странность - перекомпиленное приложение запускается в маленьком окошке и никак не желает расширяться мышкой. Я был обескуражен.

Оказалось, что окно теперь создаётся не с теми размерами, что были заданы в дизайнере, а с какими-то 320х240. А почему мышкой их нельзя изменить? А потому, что у окна когда-то было выставлено
  Resize := ( NewWidth >= 560 ) and ( NewHeight >= 400 );
в FormCanResize. И всё (- телемаркет)! Раньше я читал большие размеры из INI и форма после сздания становилась большой и красивой. Теперь же при попытке задать свойство Height параметр NewWidth, равный текущему слишком маленькому Width=320, блокирует изменение в FormCanResize. Так же точно маленький NewHeight=240 не даёт установить большой Width, считанный из INI

Виноватым я назначил форменное свойство Position. Оно стало задавать эти удивительные  размеры 320х240 создаваемой форме при значениях poDefaultPosOnlypoDesigned(даже!) и всех poХХХCenter, т.е. вообще всех значениях кроме poDefault и poDefaultSizeOnly. Не странно ли?

Кто виноват - ясно. Что делать? Я изменил FormCanResize на

  Resize := ((NewWidth = Width) or ( NewWidth >= 560 )) and
            ((NewHeight = Height) or ( NewHeight >= 400 ));

Уже не так просто, как раньше. Но за то - надёжнее. Возможно, решением проблемы было бы и применение SetBounds для одновременного изменения размеров окна. Но я сделал как сделал.

Теперь можно задать нужные размеры окна путём хаккерской записи нужных цифр в INI перед стартом приложения или получить допустимые цифры путём "привязывания" окна к границе экрана перед закрытием его и сохранением размеров для следующего сеанса. И всё снова стало хорошо.

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

А что интересного случилось у вас в Берлине?