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