Hacer que el formulario se pegue a los bordes
Artículo por Club Developers · 31 diciembre 2005
2448 vistas
Si queremos que nuestro formulario se pegue a los bordes del escritorio de Windows cuando éste se acerque a ellos, lo único que tendremos que hacer es capturar el mensaje de Windows WM_WINDOWPOSCHANGING
delphi
... private procedure PegaAlBorde(var m: TWMWINDOWPOSCHANGED); message WM_WINDOWPOSCHANGING ; ... implementation procedure TForm1.PegaAlBorde(var m : TWMWINDOWPOSCHANGED); const Sensibilidad: integer = 4; var Dato: TRect; begin try { SystemParametersInfo sólo funciona en Win9x } SystemParametersInfo(SPI_GETWORKAREA,0,@Dato,0); if m.windowpos.x <= (Dato.Left + Sensibilidad) then m.windowpos.x := Dato.Left; if m.windowpos.y <= (Dato.Top + Sensibilidad) then m.windowpos.y := Dato.Top; if (m.windowpos.x + Width) >= (Dato.Right - Sensibilidad) then m.windowpos.x := Dato.Right - Width; if (m.windowpos.y + Height) >= (Dato.Bottom - Sensibilidad) then m.windowpos.y := Dato.Bottom-Height; except { si estamos en un SO diferente a Win9x... } if m.windowpos.x <= Sensibilidad then m.windowpos.x := 0; if m.windowpos.y <= Sensibilidad then m.windowpos.y := 0; if (m.windowpos.x + Width) >= (Screen.Width - Sensibilidad) then m.windowpos.x := Screen.Width - Width; if (m.windowpos.y + Height) >= (Screen.Height - Sensibilidad) then m.windowpos.y := Screen.Height - Height; end; end;