Si, antes de comprobar onmousemove ya se han incluido las variables
Código Delphi
[-]
PxArriba := GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYMENU) + GetSystemMetrics(SM_CYFRAME) - 1;
PxAbajo := StatusBar.Height + GetSystemMetrics(SM_CYFRAME);
PxBorde := GetSystemMetrics(SM_CXFRAME);
y al crear la forma se posiciona segun esos margenes
Código Delphi
[-]
Forma.Left := FormularioPadre.Left + PxBorde + Left;
Forma.Top := FormularioPadre.Top + PxArriba + Top;
y al controlar los limites en onmousemove
Código Delphi
[-]
if nLeft < (FormularioPadre.Left + PxBorde) then
nLeft := FormularioPadre.Left + PxBorde;
if (nLeft + Forma.Width) > (FormularioPadre.Left + FormularioPadre.Width - PxBorde) then
nLeft := (FormularioPadre.Left + FormularioPadre.Width) - Forma.Width - PxBorde;
if nTop < (FormularioPadre.Top + PxArriba) then
nTop := FormularioPadre.Top + PxArriba;
if (nTop + Forma.Height) > (FormularioPadre.Top + FormularioPadre.Height - PxAbajo) then
nTop := (FormularioPadre.Top + FormularioPadre.Height) - Forma.Height - PxAbajo;
Forma.Left := nLeft;
Forma.Top := nTop;
En este video se ve como no se pasa de limites con estas funciones
http://www.youtube.com/watch?v=yHiEy...ature=youtu.be
Saludos