Советы по Delphi

         

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


У меня была проблема с центровкой формы после того, как во время выполнения программы я изменил некоторые ее размеры. 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) shr 1; aform.top := (screen.height - aform.height) shr 1; End;

[000105]



Содержание раздела