C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Размеры окна больше чем видно, Помогите!
nawok78
Отправлено: 24.01.2007, 10:31


Станционный диспетчер

Группа: Участник
Сообщений: 115



Есть форма. на ней куча всего.
Во время проектирования максимизую и нориализую размер
все компоненты адекватно реагируют.
во время работы — как будто они думают что окно больше и вылазят за размеры окна.... что за хрень?


Присоединить изображение

Присоединить изображение

nawok78
Отправлено: 24.01.2007, 10:36


Станционный диспетчер

Группа: Участник
Сообщений: 115



вот так формы виглядат — сверху при разработке
снизу при работе

Присоединить изображение

Присоединить изображение

AVC
Отправлено: 24.01.2007, 10:51


Ветеран

Группа: Модератор
Сообщений: 1583



На нижней картинке у вас правая граница "Клиент — заказчик" уехала вправо. Естественно центр и сместился. Проверьте почему это происходит или используйте всякие автовыравнивания.
nawok78
Отправлено: 24.01.2007, 11:25


Станционный диспетчер

Группа: Участник
Сообщений: 115



Я же говорю — компоненты "думают" что окно шире wink.gif
поэтому правая граница у них вылазит за пределы окна smile.gif
но почему они так думают? автовыравниваениЕ?
да забыл -
Форма типа MDIChild при запуске видно что она в родительском окне
когда проектировал — смотрел чтоб она помещалась в родительское и масштабировалась нормально

Решил попробовать сначала
сделал fsMDIForm — форму
сделал fsMDIChild — форму на нее кинул TPanel в TPanel TEdit растянул его почти на всю длину TPanel — оставил чуть-чуть
Установил TEdit.Anchors: Left=true, Rigth=true, Top=true, Bottom = false

та же фигня

поменял fsMDIChild на fsNormal — smile.gif опять фигня только наоборот wink.gif)))
теперь TEdit думает что окно меньше чем есть и оставляет справа много места.
- да при проектировании формы стоит Width 694 — как билдер создал форму — так я ее больше и не трогал
- а при открытии ее Width явно больше (где-то на 75 пикселей )
специально (для чистоты эксперимента) никакого кода кроме открытия окна не писал
CODE

if (!List_AVR)
List_AVR = new TList_AVR(Application);
List_AVR->Show();


Однако если задавать размеры TEdit в обработчике OnResize — все ОК!

Отредактировано nawok78 — 24.01.2007, 14:47
Doga
Отправлено: 24.01.2007, 15:14


Мастер участка

Группа: Участник
Сообщений: 575



Разберитесь со свойством компонентов Align. Грамотное использование этого свойства позволт программе автоматически расставлять компоненты при изменении размеров формы как надо, без вашего участия (по крайней мере те из них, которые это свойство имеют).

Уход границ компонентов возможен ещё в одном случае. А именно когда изменён размер шрифта в системе, например на "Огромный". Если свойство формы Scaled = true, компоненты автоматически будут изменять свой размер подстраиваясь под размер системного шрифта. Тут можно либо выключить это свойство, либо менять размеры с помощью дополнительного кода. Но судя по картинкам, это пока ещё не Ваш случай cool.gif
nawok78
Отправлено: 24.01.2007, 15:42


Станционный диспетчер

Группа: Участник
Сообщений: 115



wink.gif Ура! Свершилось чудо! Друг спас жизнь друга! wink.gif

CODE

Scaled = false


Помогло!!!!!!!!

А со свойствами Алайн, Анчерс все почти слава богу — когда в дизайнере распахивал окно — все было пучком wink.gif

Хрен-там! Не совсем помогло.
Только после того как RadioGroup1 поменял на GroupBox1 с кучей радиобуттонов .............. ВОТ ЧЕМ ПОМЕШАЛА RadioGroup1 ????????????

Отредактировано nawok78 — 25.01.2007, 09:39
Sand
Отправлено: 25.01.2007, 13:10


Не зарегистрирован







У меня была такая проблема, когда и Scaled не помог. Пришлось масштабировать окно и взаимное расположение компонентов через TScreen. Зато теперь уверена в стабильной работе приложения)))
nawok78
Отправлено: 25.01.2007, 14:59


Станционный диспетчер

Группа: Участник
Сообщений: 115



А как это сделать через ТСкрин? тем более что мне советуют вернуть Скалед в ТРУ кто-нибудь знает?

Отредактировано nawok78 — 29.01.2007, 08:32

Вернуться в Вопросы программирования в C++Builder