Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Неверное срабатывание якорей, когда форма в дизайне меньше экрана


Kolan ©   (2009-08-04 14:01:00) 

Здравствуйте!

Столкнулся с такой ситуацией:

Есть резиновая (то есть форма может растягиваться и сжиматься без последствий для удобства использования)форма. Резиновось реализована с помощью якорей и обычно работает. При старте форма разворачивается на весь экран.

У программиста монитор 19", поэтому в дизайнере форма у него довольно крупная (какая разница, все равно при старте растянется или сожмется до нужного размера). Оказывается, что если размер формы в дизайнере будет больше чем экран пользователя, то якоря сработают не верно.

http://img-fotki.yandex.ru/get/3510/ksoftware.b/0_2de7b_1163e289_orig

На рисунке выше видно, что форма как бы обрезана, причем если её сжимать, то она масштабируется, сохраняя такой обрезанный вид.

Как я понял проблема в том, что якоря начинают работать не в тот момент. Видимо происходит все так:

1. Допустим форма по вертикали в дизайнере 900 пикселей, а у пользователя их всего 600.
2. При запуске форма создается такой, как в дизайнере и вылазит за экран.
3. Форма разворачивается на весь экран, но якоря еще не работают и контролы не сжимаются.
4. Начинают работать якоря, но все уже испорчено.

Лечится это сжатием формы в дизайнере, но такое решение мне кажется опасным, потому что можно забыть это сделать.

Как правильно решить проблему?


Хитрий Лис   (2009-08-06 17:06:00) [1]

Удалено модератором
Примечание: Offtopic


Kolan   (2009-08-05 13:33:00) [2]

А, вот, комбинация wsMaximized в дизайнере+ poDefaultкажется работает.

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

Игорь, благодарю за подсказки.


RWolf   (2009-08-05 09:56:00) [3]

А я использую для задания авторазмеров только свойство Align, компоненты размещаю в панелях-контейнерах; таким образом избавляюсь от проблемы с показом формы при нестандартных PixelsPerInch.


CSS   (2009-08-05 01:46:00) [4]

А я при изменении размера делал... В процентах размеры ставил... ^__^


DVM   (2009-08-05 01:25:00) [5]


> Я масштабировал все в ручную, при запуске приложения.

Я аналогично делал.


Palladin   (2009-08-04 17:44:00) [6]

Я масштабировал все в ручную, при запуске приложения. Грубо говоря инициализировал его (расположение). Дальше все само работало. Вообще рекомендую инициализировать размеры и положения всегда в ручную. Ибо вся эта кухня жестко ломается не только при заведомо меньших размерах экрана, но так же и при изменении разрешения шрифта в системе.


CSS   (2009-08-04 17:38:00) [7]

Я думаю надо всё вручную масштабировать...

А то якоря эти всегда как-то криво работают... =(


Игорь Шевченко   (2009-08-04 15:37:00) [8]


> При старте форма разворачивается на весь экран.


в дизайнере windowstate = wsMaximized не пробовал ?


> если выставить poDefault (оно же имелось в виду?),


У свойства Position есть несколько значений. Извини, из твоих рисунков непонятно, в чем у тебя проблема


Kolan   (2009-08-04 15:00:00) [9]

Хм, если выставить poDefault(оно же имелось в виду?), то проблемы возникают и на большом разрешении.

http://img-fotki.yandex.ru/get/3609/ksoftware.b/0_2de7e_fad4fa6_orig

Размеры контролов соответствуют их размерам в дизайнере.


Игорь Шевченко   (2009-08-04 14:11:00) [10]


> Как правильно решить проблему?


свойством Position ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо