Центрирование формы

У меня была проблема с центровкой формы после того, как во время выполнения программы я изменил некоторые ее размеры. poScreenCenter работает только в момент показа формы. Но если вы изменяете размеры во время выполнения, форма автоматически не центрируется.

Вариант 1

Я использую данный код при создании формы (событие FormCreate), но, может быть, стоит попробовать поместить его в обработчик события OnPaint, который вызывается при каждом изменении размера формы?

Form1.Left := (Screen.Width div 2) - (Form.Width  div 2);
Form1.Top := (Screen.Height div 2) - (Form.Height div 2);

Вариант 2

Если вы используете SetBounds, форма не будет перерисована дважды (один раз при изменении горизонтального размера, второй - вертикального, если это происходит одновременно). Попробуйте:

procedure CenterForm(AForm:TForm);
var ALeft,ATop:Integer;
begin

ALeft := (Screen.Width - AForm.Width) div 2;
ATop := (Screen.Height - AForm.Height) div 2;
AForm.SetBounds(ALeft, ATop, AForm.Widht, AForm.Height);
end;

Вариант 3

Procedure CenterForm(aForm: TForm);
Begin

aform.left := (screen.width - aform.width) lue>1;
aform.top := (screen.height - aform.height) 1;
End;
 
« Предыдущая статья   Следующая статья »