Форум: "Основная";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];
ВнизНеверное срабатывание якорей, когда форма в дизайне меньше экрана Найти похожие ветки
← →
Kolan © (2009-08-04 14:01) [0]Здравствуйте!
Столкнулся с такой ситуацией:
Есть резиновая (то есть форма может растягиваться и сжиматься без последствий для удобства использования) форма. Резиновось реализована с помощью якорей и обычно работает. При старте форма разворачивается на весь экран.
У программиста монитор 19", поэтому в дизайнере форма у него довольно крупная (какая разница, все равно при старте растянется или сожмется до нужного размера). Оказывается, что если размер формы в дизайнере будет больше чем экран пользователя, то якоря сработают не верно.
http://img-fotki.yandex.ru/get/3510/ksoftware.b/0_2de7b_1163e289_orig
На рисунке выше видно, что форма как бы обрезана, причем если её сжимать, то она масштабируется, сохраняя такой обрезанный вид.
Как я понял проблема в том, что якоря начинают работать не в тот момент. Видимо происходит все так:
1. Допустим форма по вертикали в дизайнере 900 пикселей, а у пользователя их всего 600.
2. При запуске форма создается такой, как в дизайнере и вылазит за экран.
3. Форма разворачивается на весь экран, но якоря еще не работают и контролы не сжимаются.
4. Начинают работать якоря, но все уже испорчено.
Лечится это сжатием формы в дизайнере, но такое решение мне кажется опасным, потому что можно забыть это сделать.
Как правильно решить проблему?
← →
Игорь Шевченко © (2009-08-04 14:11) [1]
> Как правильно решить проблему?
свойством Position ?
← →
Kolan © (2009-08-04 15:00) [2]Хм, если выставить
poDefault
(оно же имелось в виду?), то проблемы возникают и на большом разрешении.
http://img-fotki.yandex.ru/get/3609/ksoftware.b/0_2de7e_fad4fa6_orig
Размеры контролов соответствуют их размерам в дизайнере.
← →
Игорь Шевченко © (2009-08-04 15:37) [3]
> При старте форма разворачивается на весь экран.
в дизайнере windowstate = wsMaximized не пробовал ?
> если выставить poDefault (оно же имелось в виду?),
У свойства Position есть несколько значений. Извини, из твоих рисунков непонятно, в чем у тебя проблема
← →
CSS (2009-08-04 17:38) [4]Я думаю надо всё вручную масштабировать...
А то якоря эти всегда как-то криво работают... =(
← →
Palladin © (2009-08-04 17:44) [5]Я масштабировал все в ручную, при запуске приложения. Грубо говоря инициализировал его (расположение). Дальше все само работало. Вообще рекомендую инициализировать размеры и положения всегда в ручную. Ибо вся эта кухня жестко ломается не только при заведомо меньших размерах экрана, но так же и при изменении разрешения шрифта в системе.
← →
DVM © (2009-08-05 01:25) [6]
> Я масштабировал все в ручную, при запуске приложения.
Я аналогично делал.
← →
CSS (2009-08-05 01:46) [7]А я при изменении размера делал... В процентах размеры ставил... ^__^
← →
RWolf © (2009-08-05 09:56) [8]А я использую для задания авторазмеров только свойство Align, компоненты размещаю в панелях-контейнерах; таким образом избавляюсь от проблемы с показом формы при нестандартных PixelsPerInch.
← →
Kolan © (2009-08-05 13:33) [9]А, вот, комбинация wsMaximized в дизайнере + poDefault кажется работает.
Вариант с самостоятельным пересчетом слишком трудоемкий, кроме того в данном проекте форма собирается из кусочков. То есть в дизайнере она почти пустая, поэтому код ресайза пришлось бы распылять ровным слоем по всей программе, что, понятно, трудно одобрить.
Игорь, благодарю за подсказки.
← →
Хитрий Лис (2009-08-06 17:06) [10]Удалено модератором
Примечание: Offtopic
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2011.03.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.005 c