|
#1
|
|||
|
|||
Такая мелочь
Доброго времени суток!!! Извените за такой не серьезный вопрос но это меня уже давно тревожит. Мне нужно зделать так что ты при развертывании окна приложения в полноэкранный вид все компоненты автоматически изменяли свой размер. А при уменьшении размера формы уменьшали свой размер. Я точно знаю что это настраивается по средствам свойств компанентов но каких свойств не могу разобраться(((. Помогите пожалуйста кто чем сможет.
|
#2
|
||||
|
||||
И свойства эти называются размеры и положение...вот только задавать их надо при помощи пропорций во время исполнения программы...
В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
||||
|
||||
Там далеко не все так просто. Если речь идет скажем об Edit который при измененении размера формы должен растягиваться не изменяя размера шрифта, то это одно. Если-же речь идет о масштабировании контрола относительно формы, с изменением шрифта и т.д. то это несколько другая технология.
Что имеено вас интересует? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 18.11.2009 в 11:25. |
#4
|
|||
|
|||
Доброго времени суток!!! Меня больше интересует первый описанный Вами пример. Где сказанно про изменение Edit а текст в нем не меняется.Если можно помогите чем сможите.
|
#5
|
|||
|
|||
У большинства визуальных компонентов в инспекторе объектов есть свойство Align, которое может принимать значения:
alBottom - объект занимает всю нижнюю часть формы, или объекта, в котором он расположен, менять можно только высоту. alClient - объект занимает все оставшееся пространство. alCustom - честно говоря, не знаю. alLeft - левая часть. alNone - объект расположен так, как его расположили, без всяких премудростей. alRight - правая часть. alTop - верхняя часть. Последний раз редактировалось Kapitoshka438, 19.11.2009 в 14:22. |
#6
|
|||
|
|||
Еще там же есть свойство Anchors.
Если в нем значение: akLeft = true : расстояние от левого края формы до объекта не будет изменяться при изменении размера формы. akRight = true : то же самое для правого края формы. akTop = true akBottom = true - аналогично. Например, если и akLeft = True, и akRight = True, то расстояния до краев формы от объекта не будут изменяться, а значит объект будет изменять размер вместе с формой. Причем это будет проявляться еще до запуска программы, в режиме редактирования формы. |
#7
|
|||
|
|||
Если же у вас на форме много различных компонентов, то вам следует сначала расписать, как должен быть расположен и какого размера должен быть каждый компонет в зависимости от размеров формы. Ширина формы равна Width.
Например, у вас есть N кнопок, и они расположены друг за другом в нижней части формы на одном уровне. Расстояние между кнопками пусть равно S, как и расстояние от кнопки до края формы. Итого, по ширине формы кнопки должны занимать Width - (N + 1) * S. Следовательно, ширина каждой кнопкй должна быть (Width - (N + 1) * S) / N, вернее, целая часть (Round) от этой величины, а свойство Left этой кнопки должно быть равно Left(предыдущей кнопки) + Width + S. И все то нужно запихнуть в метод OnResize формы. Пример: Код:
procedure TForm1.FormResize(Sender: TObject); var ButtonWidth: Integer; begin ButtonWidth := Round(Width - (N + 1) * S); Button1.Left := S; Button1.Width := ButtonWidth; Button2.Left := Button1.Left + ButtonWidth + S; Button2.Width := ButtonWidth; ... ButtonN.Left := Button(N-1).Left + ButtonWidth + S; ButtonN.Width := ButtonWidth; end; Последний раз редактировалось Kapitoshka438, 19.11.2009 в 12:45. |
#8
|
||||
|
||||
В общем-то все расписал Kapitoshka438. От себя добавлю, что правильная настройка Anchor - для нескольких компонентов на форме, это иногда очень нетривиальная задача.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |