Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
ВнизИзменение размера формы при выполнении программы Найти похожие ветки
← →
АМБ (2005-08-02 10:26) [0]Программа имеет на форме компоненты: DBGrid, Memo, Edit и кнопочки. Сделал так, что при выполнении программы, если изменить размер формы, то меняются соответственно и размеры компонент и координаты кнопок. Отрабатывается событие: FormCanResize, где написано
...
edtFilter.Width := frmMain.Width - 71;
edtFilter.Top := frmMain.Height - 68;
btnOnFilter.Left := frmMain.Width - 65;
btnOnFilter.Top := frmMain.Height - 68;
...
И все работает как надо, но... только на моем рабочем компьютере (Win 2000), на котором подбирались вычитаемые величины. При запуске экзешника на домашнем(Win NT4), настройки сбиваются и появляются скроллинги основной формы. Изменение разрешения на рабочем компьтере не приводит к "искажению" (т.е. к скроллингу).
Как надо делать такие эффекты (изменение формы программы с пропорциональным изменением координат и размера компонент) ПРАВИЛЬНО, чтобы при переносе на различные компьютеры, с различными ОС, различными мониторами и т.д. не возникали искажение насроек, и, как следствие, не возинкали скроллингиа???
← →
sniknik © (2005-08-02 10:30) [1]Как надо ... ПРАВИЛЬНО
Anchors
← →
msguns © (2005-08-02 10:33) [2]Использовать св-ва Align, Alignment, Anchors, а также сплиттеры
Строить интерфейс на базе панелей, которые автовыравниваются, а на них класть визуальные контролы со свойсвом Align := alClient
← →
tesseract © (2005-08-02 11:23) [3]Примерно так
внизу ставим панель Align=alBootom;
на неё ставми панель поменьше Align=alRight; на неё кладутся кнопки которые долджны быть справа.
Вверху две панели (Допустим у тебя Memo под grid)
Верхней панели AlTop нижней AlClient.
Можешь задать в Constraits максимальные/минимальный размеры панелей чтобы при свяртывании ничего не наезжало.
← →
ЮЮ © (2005-08-02 11:29) [4]заменить константы габаритами компонент:
edtFilter.Width := frmMain.ClientWidth - edtFilter.Left;
edtFilter.Top := frmMain.ClientHeight - edtFilter.Height;
← →
АМБ (2005-08-04 12:04) [5]Извинте, за долгое молчание. Текучка...:о(
Попробовал варианты с Align, Alignment, Anchors. Как-то до конца еще "не проник". По - новому надо весь интерфейс строить. Но буду проповать и дальше. Так-что, спасибо за информацию.
А вот идея ЮЮ понравилась сразу. Почти сразу реализовал. Только дома проверял долго. Со временем трудно. Но все-таки проверил, все пока работает как надо. Работает даже с константами, т.е.
...
edtFilter.Width := frmMain.ClientWidth - 71;
...
Главное оказывается это ClientWidth.
Так что ЮЮ - БОЛЬШОЕ СПАСИБО...
← →
АМБ (2005-08-04 12:04) [6]Извинте, за долгое молчание. Текучка...:о(
Попробовал варианты с Align, Alignment, Anchors. Как-то до конца еще "не проник". По - новому надо весь интерфейс строить. Но буду проповать и дальше. Так-что, спасибо за информацию.
А вот идея ЮЮ понравилась сразу. Почти сразу реализовал. Только дома проверял долго. Со временем трудно. Но все-таки проверил, все пока работает как надо. Работает даже с константами, т.е.
...
edtFilter.Width := frmMain.ClientWidth - 71;
...
Главное оказывается это ClientWidth.
Так что ЮЮ - БОЛЬШОЕ СПАСИБО...
← →
ЮЮ © (2005-08-04 12:17) [7]>Работает даже с константами
Ширина-то и в Африке останется такой же (если это не TLabel с AutoSize), а вот при использовании "крупного шрифта", высота TEdit-а изменится и будет не равна той константе, что прописана в коде.
← →
АМБ (2005-08-04 13:39) [8]
> ЮЮ
Да. Согласен. Я и сам не люблю использовать в коде константы. Поэтому, перед этим пробовал такой вариант:
dbgDBF.Height := frmMain.ClientHeight - round(dbgDBF.Left*4.5);
Тоже работает. Но, мне показалось, код тяжеловат. Хотя может и более "правильный" (не могу подобрать слово вместо "правильный")
А без коэффициента трудно подогнать "под размер".
Возможно этого можно будет избежать если с самого начало интерфейс разрабатывать с тем, чтобы не использовать коэффициенты.
Но, это в будущем. Хотя, надеюсь, не далеком.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.08.21;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.042 c