Delphi 7: масштабирование приложений - PullRequest
2 голосов
/ 19 февраля 2010

На моем ноутбуке с разрешением экрана 1280x800 я разработал приложение.Теперь я хочу использовать его на настольном компьютере с разрешением 1600x1200.

Конечно, он слишком мал на настольном компьютере.Я установил размеры, чтобы я мог видеть всю форму на своем ноутбуке.Но на настольном компьютере все должно быть изменено.

Но на большом экране вещи не должны просматриваться больше, что означает, что может отображаться одинаковое количество информации.Вещи должны получить большее значение высоты и ширины, чтобы можно было отображать больше информации.

В сложном коде я имею в виду нечто подобное, которое должно запускаться автоматически один раз при создании формы (OnCreate):

devResolutionX := 1280;
devResolutionY := 800;
useResolutionX := 1600; // how to get / read out this property?
useResolutionY := 1200; // how to get / read out this property?
Form1.Height := Form1.Height+devResolutionY-useResolutionY;
Form1.Height := Form1.Width+devResolutionX-useResolutionX;
// do that with all components which makes this approach complicated

С чем мне нужно работать, чтобы достичь этой цели?

  • ScaleBy
  • выравнивания
  • якоря

Спасибо большоемного заранее!

Ответы [ 2 ]

3 голосов
/ 19 февраля 2010

Похоже, вам просто нужно установить свойство BorderStyle вашей формы в bsSizeable.Это позволит пользователю изменять размер формы (или максимизировать ее) по своему усмотрению.

Вы также можете использовать здесь якоря.Если вы установите привязки akLeft, akTop, akRight и akBottom для всех компонентов в вашей форме, они изменят размер с формой.

Как только вы сделаете это, вы, вероятно, быстро поймете, чтона самом деле то, что вы хотели сделать в конце концов.Эти растущие компоненты, вероятно, будут пересекаться друг с другом.Итак, вам нужно будет подумать о том, какие ребра каких компонентов привязаны, а какие нет.

Иногда вам потребуется выполнить более сложный процесс перемещения и определения размеров компонентов, чем это может быть сделано с помощью якорейв одиночестве.В этих случаях вы захотите обработать событие OnResize формы.Это событие будет вызываться всякий раз, когда пользователь изменяет размеры формы, и это даст вам возможность сделать некоторые математические расчеты, чтобы пересчитать размеры и позиции определенных компонентов.

1 голос
/ 19 февраля 2010

Просто установите ваши якоря правильно, и появится дополнительная информация. Я бы не рекомендовал программно форсировать произвольную высоту и ширину. Лучше всего использовать событие OnClose формы, чтобы сохранить высоту и ширину формы, а затем установить высоту и ширину с помощью OnCreate.

...