Mantener una form centrada en tu pantalla  

Enviado Por: Q3 Team
Web : http://www.q3.nu
Email: dlib@q3.nu
Fecha: 21/12/99

Truco accedido 95 veces

 


Con esta función:



 	   function Alinea(S: String; N: Integer): String;
 	   begin
 	     While Length(S) < N do
 	       Insert(' ',S,Length(S)+1);
 	     Result:=S
 	   end;




Ejemplo de llamada:


 	Label1.Caption:=Alinea('hola',10);



La función lo que hace es crear un string de 'N' caracteres, con la cadena de enntrada 'S' justificada



Actualizacion del 03/09/99


Alinear a la izquierda




 function AlineaIzda(S: String; N: Integer): String;
 begin
   Result:=StringOfChar(' ',N-Length(S))+S;
 end;




Alinear a la derecha




 function AlineaIzda(S: String; N: Integer): String;
 begin
   Result:=S+StringOfChar(' ',N-Length(S));
 end;






apturando el mensaje WM_WINDOWPOSCHANGING:

  • Pon esta linea en la parte private de la declaración de tu form:


     	type
     	  TForm1 = class(TForm)
     	    Button1: TButton;
     	    Label1: TLabel;
     	    procedure Button1Click(Sender: TObject);
     	  private
     	    { Private declarations }
     	    {Esta linea/This line}
     	     procedure Centrala(var m: TWMWINDOWPOSCHANGED); message  		
     			WM_WINDOWPOSCHANGING ;
    
    



  • Y luego, en la implementation pon esta procedure:


     	 procedure TForm1.Centrala(var m : TWMWINDOWPOSCHANGED);
     	 begin
     	       m.windowpos.x := (Screen.Width - Width) div 2;   {Left/Posicion X}
     	       m.windowpos.y := (Screen.Height - Height) div 2; {Left/Posicion X}
     	 end;
    



    Y tendrás tu form en el centro de la pantalla permanentemente y sin parpadeos.