| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как пропорционально изменять размер формы |
| Автор: ДЫМ 21.9.2005, 03:41 |
| При изменении размеров формы (тянем за края) мне надо, чтобы размеры изменялись пропорционально первоначальному соотношению сторон, т. е. если первоначально Width=5, Height=10, размеры были соответственно с соотношением 1/2? |
| Автор: DragonFire 21.9.2005, 07:36 |
| Попробуй в событии FormSize задать такую строчку: Form.height:=form.width*2; или Form.width:=form.height div 2; |
| Автор: mntek 21.9.2005, 09:32 |
| только не FormSize, а OnFormResize |
| Автор: DragonFire 21.9.2005, 14:28 |
| Извини, давно не работал с событиями формы VCL, все больше WindowsApi... |
| Автор: ДЫМ 22.9.2005, 01:08 | ||||||||
Извини, но прежде чем постить ты хотя бы для интереса попробовал протестировать код. У тебя получается, что в момент изменения размеров ты опять изменяешь размер и процедура вызывается рекурсивно. Вообще-то как я понимаю, надо использовать OnCanResize
Проблема в том, что можно вычислить или ширину относительно высоты или наоборот, но бывает так, что меняется только ширина или высота (скажем тянут только за правый или нижний края), а как узнать, что изменилась только ширина или высота непонятно. Казалось бы, что может быть проще, вставил условие
Ну так давай на WindowsApi, что мешает? |
| Автор: Yanis 22.9.2005, 15:04 | ||||
Для отлова за какой край изменяют размер формы можно использовать такой код:
|
| Автор: Bibimij 24.9.2005, 10:20 |
| Да... Пропорциональность формы - этоконечно хорошо! |
| Автор: Prof_2000 24.9.2005, 11:54 | ||
| Если edit на всю форму по ширине, то все очень легко. У всех визуальных компонентов есть свойство Anchors(якоря), отвечает за фиксацию краев компонентов относительно краев формы. Если нет то опять же по событию формы OnResize пропиши зависимости положения компонентов. По изменению положения и размера компонентов никакого события нет, так что рекурсия вызваться не будет. Теперь насчет примера: пусть Edit должен доходит всегда ровно до половины формы. Тогда
Негиперграндиозность текста этого варианта безусловно зависит от количества компонентов. Других способов, вроде, нет, за исключением некоторых компонентов со свойством Center:boolean и компонента TSplitter. |