Thanks for the reply macmike but as yet I have no idea HOW to determine the current drag point!
Although I tend to post a question as soon as I come across a problem, I continue to investigate elsewhere and in this case quickly found a forum post from February 2015 which gave me a piece of code :-
if ssLeft in Shift then
SetBounds(Left + (X - M_Pos.X), Top + (Y - M_Pos.Y), Width, Height);
I've incorporated this in the body of a MouseMove Procedure (having also created a Var M_Pos : TPoint; ) and it has done exactly what I need.
The problem I now have is that whilst copying existing code does the job, my knowledge has not advanced in any way because I don't know WHY it does the job!
WHY 'ssLeft'
WHY in 'Shift'
WHY 'SetBounds'
I haven't declared X or Y so why does the code even compile!
EDIT !!!! DUH - I've just seen that the procedure declaration declares X, Y and Shift 
I'm pleased that it works but would still appreciate explanations
