![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как задать "масштаб" формы, учитывающий разрешение экрана? [D7, 95/98, XP]
abhtr © (2008-10-01 10:26:00)Создаю форму, задаю положение и размеры компонент...
Но, когда меняется разрешение экрана (что бывает у заказчика), то представление на экране формы ломается.
Подскажите, как можно задавать "масштаб" или другую величину, чтобы заданные программно размеры и положение на форме оставались неизменными не зависимо от разрешения экрана?
Пробовал так: dbgPeriodical.Height:= frmPeriodical.Height - round(screen.Height/9.4);
но коэффициент 9.4 все равно точно не отрабатывает.
{RASkov} (2008-10-01 18:15:00) [1]> [7] abhtr (01.10.08 17:41)
Запомни стартовую ширину/высоту формы, а после коэффициент расчитывай так СтартШирина/ТекШирина.... тоже самое для высоты... Расчитывать можно на ресайз формы...
Могу пример накидать...
Petr (2008-10-01 17:51:00) [2]К > Плохиш © (01.10.08 10:39) [1]
> Scaled + F1
можно лишь добавить ScaleBy, и для разрешений мониторов больших, чем компилировалось в design проблема решается.
abhtr (2008-10-01 17:41:00) [3]О проблеме по подробнее.
Вместо создания нескольких однотипных форм создаю одну, в которой, в зависимости от условий, меняется "география" компонент: расположение TLabel, TEdit, а также положение и размер DBGrid-a. Все это меняется при вызове формы, в зависимости от условий. Для отработки изменения размеров формы отрабатываю FormCanResize, в котором есть строки типа dbgPrHsInit.Top :=frmPeriodical.Height - 284;
И все работало замечательно, пока не менялась разрешение экрана.
При смене разрешение, константа (284), тоже должна меняться.
Чтобы не делать набор констант для каждого разрешения пыталься найти "универсальный" коэфициент вычисляемый от разрешения экрана.
Попробовал dbgPeriodical.Top := frmPeriodical.Height - round(screen.Height/1.205);
Не получилось.
Вот и весь вопрос. Как найти такой "коэффициент" или что-то аналогичное?
Или вообще такой подход не правильный?
MsGuns (2008-10-01 16:48:00) [4]В чем состоит "ломание" ? Если искажаются пропорции контролов и особенно шрифтов, то см.3
Если куски формы вылазят за экран, то следует при проектировании интерфейса использовать выравнивание, а для тех контролов, у которых оно отсутствует (эдит или кнопка например), делать выравнивание пересчетом их "географии" в обработчиках резайза их контейнеров. Ну и 2 конечно.
AlexDan (2008-10-01 16:27:00) [5]> oldman © (01.10.08 12:01) [4]
Да, так и есть, я тоже с этим недавно столкнулся..
oldman (2008-10-01 12:01:00) [6]
> Создаю форму, задаю положение и размеры компонент...
> Но, когда меняется разрешение экрана (что бывает у заказчика),
> то представление на экране формы ломается.
НЕ ВЕРЮ!!!
Григорьев Антон (2008-10-01 11:13:00) [7]Это не от размера экрана зависит, а от величины системного шрифта. А Delphi, если видит, что размер шрифта при разработке не совпадает с размером при запуске, начинает масштабировать форму. Отключается это свойством Scaled, так что см. [1]
oldman (2008-10-01 10:42:00) [8]Всегда работать с формой 800х600
Меньше разрешение вряд ли поставят, а больше по фигу...
Плохиш (2008-10-01 10:39:00) [9]Scaled + F1