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

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

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

В сложном коде я имею в виду что-то вроде этого, которое должно запускаться автоматически один раз при создании формы (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

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

  • Масштаб
  • выравнивания
  • анкеры

Заранее большое спасибо!

2
caw 19 Фев 2010 в 22:30

2 ответа

Лучший ответ

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

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

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

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

3
Jeff Wilhite 19 Фев 2010 в 23:37
Большое спасибо! Это именно то, что я сделал сейчас. Он неплохо работал с якорями, но некоторые компоненты перемещались и изменяли размер больше, чем другие. Так что я дополнительно использую OnResize.
 – 
caw
23 Фев 2010 в 19:04

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

1
David 19 Фев 2010 в 23:36
Спасибо, с правильными якорями все работает нормально. И сохранение значений высоты и ширины в OnClose - тоже хорошая идея.
 – 
caw
23 Фев 2010 в 19:01