Form - Posicionar em relacao ao Desktop

Top  Previous  Next

Como posicionar Form's em relação ao Desktop do Windows?

 

{ Quando usamos a propridade Position de um Form para

  centralizá-lo estamos sujeitos a um inconveniente:

  dependendo da posição/tamanho da barra de tarefas do

  Windows, o nosso Form poderá ficar parcialmente coberto

  por ela. Uma forma eficaz de resolver este problema é

  posicionar o form considerando apenas a área livre do

  Desktop. Vejamos este exemplo:

 

  - Crie um novo projeto;

  - Na seção implementation digite a procedure abaixo:

}

 

procedure FormPos(Form: TForm; const Horz, Vert: byte);

{ Horz: 1=esquerda, 2=centro, 3=direita

  Vert: 1=topo, 2=centro, 3=em baixo }

var

  R: TRect;

begin

  if not SystemParametersInfo(SPI_GETWORKAREA, 0, @R, 0) then

    R := Rect(0, 0, Screen.Width, Screen.Height);

  with Form do

    case Horz of

      1: Form.Left := 0;

      2: Form.Left := (R.Right - R.Left - Width) div 2;

      3: Form.Left := R.Right - Width;

    end;

  with Form do

    case Vert of

      1: Form.Top := 0;

      2: Form.Top := (R.Bottom - R.Top - Height) div 2;

      3: Form.Top := R.Bottom - Height;

    end;  

end;

 

{ - Coloque dois TEdit's: Edit1 e Edit2;

  - Coloque um TButton e altere o evento OnClick deste 

    conforme abaixo:

}

 

procedure TForm1.Button1Click(Sender: TObject);

begin

  FormPos(Form1, StrToInt(Edit1.Text), StrToInt(Edit2.Text));

end;

 

Observações:

 

Para testar, execute este exemplo e experimente digitar números 

de 1 a 3 em ambos os Edit's e clique no Button para ver o 

resultado. O Edit1 indica a posição horizontal (esquerda, 

centro e direita) e o Edit2 indica a posição vertical (topo, 

centro e em baixo).