Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.08.21;
Скачать: CL | DM;

Вниз

Изменение размера формы при выполнении программы   Найти похожие ветки 

 
АМБ   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.046 c
11-1094804220
Shiza
2004-09-10 12:17
2005.08.21
Dev Pascal + KOL


3-1120630001
Shopot
2005-07-06 10:06
2005.08.21
BDE. Бывают проблемы с сохранением данных в базе.


4-1119944529
Хинт
2005-06-28 11:42
2005.08.21
Аналог ShowCursor для других приложений


3-1121223089
Alex_V
2005-07-13 06:51
2005.08.21
Приложение и запрос


1-1123021095
АскЮ
2005-08-03 02:18
2005.08.21
Как правильно расчленить большой проект на классы и модули ?