Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2011, 10:39   #1
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию авторазмер формы

вот столкнулся с проблемкой. на форме есть несколько компонентов типа меток и панелек. все эти компоненты со свойствами Align=alTop, в форме установлено AutoSize=True; Align=alNone;
при показе формы когда метки и панельки со свойствами visible=false; показывается пустая форма (после показа закрыл крестиком). но потом когда у одного из компонентов выставить visible=true; форма не выравнивается по ширине автоматически под отображаемый компонент;
вопрос, как сделать это автоматически или только руками можно в событии onShow считать длину?
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 18.10.2011, 10:49   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

В OnShow формы можно, если только в процессе создания формы учитывается видимость объектов. Если же пользователь управляет видимостью объектов, то OnShow не поможет, только в момент изменения видимости. И все ручками. alTop заставляет объект вписываться в ширину формы, а не наоборот
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2011, 13:52   #3
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

Странно, по высоте форма выравнивается в зависимости от того сколько объектов видно, а вот по ширине это не срабатывает. но судя по посту выше это уже какое-то чудо что выравнивается по высоте. в общем понятно придётся считать длину компонентов и делать расчёт длинны формы при показе. буду искать в чём причина дальше. если что завтра буду делать ручной расчёт длинны.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.

Последний раз редактировалось mihali4; 18.10.2011 в 15:03.
IliaIT вне форума Ответить с цитированием
Старый 18.10.2011, 13:57   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По высоте нормально срабатывает, форма подстраивается по общую высоту поскольку AutoSize=True. А вот по ширине из-за alTop панели подстраиваются под ширину формы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.10.2011, 14:58   #5
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

ага понял, то есть ширину мне надо будет подсчитать, а вот высоту оно само высчитает. то есть в onShow надо добавить
Код:
  form2.AutoSize:=false;
  form2.Width:=227;//высчитанная ширина
  form2.AutoSize:=true;
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из DBGrid одной формы отразить в ListBox на другой формы VenZell БД в Delphi 2 28.05.2010 07:27
Заголовок Child формы имеет цвет неактивной формы, хотя форма активна? PrimaryPro Общие вопросы Delphi 0 12.03.2010 11:12
как привязать размеры содержимого формы к размерам самой формы acid_bmstu Общие вопросы Delphi 4 05.02.2010 05:02
Авторазмер для RichEdit Jantar Общие вопросы Delphi 4 14.09.2009 08:39
Авторазмер формы b00s Microsoft Office Access 1 28.04.2008 10:29