![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Неверное срабатывание якорей, когда форма в дизайне меньше экрана
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 ?