Ver Mensaje Individual
  #56  
Antiguo 08-04-2013
Avatar de cesarsoftware
cesarsoftware cesarsoftware is offline
Miembro
 
Registrado: nov 2006
Posts: 241
Reputación: 20
cesarsoftware Va por buen camino
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 [-]
  // Controlar los limites
  // Izquierda
  if nLeft < (FormularioPadre.Left + PxBorde) then
    nLeft := FormularioPadre.Left + PxBorde;
  // Derecha
  if (nLeft + Forma.Width) > (FormularioPadre.Left + FormularioPadre.Width - PxBorde) then
    nLeft := (FormularioPadre.Left + FormularioPadre.Width) - Forma.Width - PxBorde;
  // Arriba
  if nTop < (FormularioPadre.Top + PxArriba) then
    nTop := FormularioPadre.Top + PxArriba;
  // Abajo
  if (nTop + Forma.Height) > (FormularioPadre.Top + FormularioPadre.Height - PxAbajo) then
    nTop := (FormularioPadre.Top + FormularioPadre.Height) - Forma.Height - PxAbajo;
  // reposicionar objecto
  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
__________________
Disfruta de la vida ahora, vas a estar muerto mucho tiempo.
Responder Con Cita