Despues de varios dias trabajando, he notado que todavia quedaba "algo pendiente" a la hora de controlar los limites de las formas "hijas" lo pongo entre comillas para indicar que no son mdichild.
Resulta que al mover la forma se podian producir efectos no deseados como que se fuera la forma a 0,0, o a valores inferiores a los limites para luego volver a su sitio y esto era poque movia la forma dinamicamente y luego controlaba si se habia pasado, para solucionarlo nada mas facil (pero ahi que decirlo) que hacer todos los calculos y despues, solo despues de ajustar los limites, presentarla.
Por tanto el evento onmousemove queda asi y parece que mas sencillo y definitivo (por si alguien seguia este codigo, mas que nada, jejeje

)
PD: he cambiado el nombre de PxDcha por PxBorde que es mas adecuado, y vale tanto para los 4 bordes de la forma.
Código Delphi
[-]
procedure TcapturadorDCx.LedOnMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
nX, nY, nLeft, nTop: integer;
begin
if ssLeft in Shift = False then
Exit;
if X < oldLeft then
begin
nX := oldLeft - X;
nLeft := Forma.Left - nX;
end
else
begin
nX := X - oldLeft;
nLeft := Forma.Left + nX;
end;
if Y < oldTop then
begin
nY := oldTop - Y;
nTop := Forma.Top - nY;
end
else
begin
nY := Y - oldTop;
nTop := Forma.Top + nY;
end;
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;
end;
¿No tendre nada mejor que hacer un domingo a la tarde

?
Saludos.