![]() |
|
|
|
|
#1
|
|||
|
|||
|
Здравствуйте подскажите пожалуйста как правильно масштабировать форму под разрешение экрана .
Пытаюсь делать так Код:
procedure TForm1.FormCreate(Sender: TObject);
var
W,H : Integer ;
begin
w:=Screen.Width;
h:=Screen.Height;
BorderStyle := bsNone;
FormStyle := fsStayOnTop;
Left := 0;
Top := 0;
Height := h;
Width := w;
panel1.Left:=0;
panel1.Top:=0;
panel1.ScaleBy(w,h);
end;Подскажите пожалуйста что я не так делаю? |
|
#2
|
|||
|
|||
|
Неправильно используете функцию ScaleBy. Смотрим справку -
Цитата:
В Вашем случае подойдет использование метода SetBounds для панели - panel1.SetBounds(0, 0, w, h); Из справки: Цитата:
На заметку, для формы так же можно вызвать SetBounds. Причем в данном случае с теми же параметрами, что и для панели. Т.е. SetBounds(0, 0, w, h); Последний раз редактировалось nixel, 25.03.2012 в 23:04. |
|
#3
|
|||
|
|||
|
не выходит и так ! при изменение разрешения все компоненты в панели вылазят за границы экрана.
Пожалуйста сделайте небольшой пример чтоб в форме всё масштабироваллось под разные мониторы. А то уже месяц с этим бьюсь и не как не выходит. |
|
#4
|
|||
|
|||
|
При изменении разрешения?
Т.е. Вы вручную меняете разрешение монитора в настройках ОС? Тогда SetBounds надо использовать не при создании формы, а как-то отлавливать изменение разрешения монитора. По уму, скорее всего есть какое-то решение на WinAPI, не по уму можно проверять значение ширины и высоты экрана в таймере. З.ы. Подгонку размера через ScaleBy можно сделать сразу по двум измерениям так, чтобы панель не вылезала за экран, ТОЛЬКО при условии, что ее начальные размеры (те, с которыми она создавалась, неважно в дизайнтайм или в рантайм) прямо пропорциональны текущему разрешению экрана. В любом другом случае масштабирование произойдет с ошибкой по одному измерению (либо высоте, либо ширине, в зависимости от того, по какому измерению Вы будете высчитывать коэффициенты M и D), и после масштабирования надо будет принудительно подгонять под экран второе измерение. Зы2. В общем, направление движения, думаю, задал, а там может более сведущие в системных делах товарищи помогут =) |
| Этот пользователь сказал Спасибо nixel за это полезное сообщение: | ||
Gudzik11 (31.03.2012)
| ||