тот-же 
y:=Mouse.CursorPos.Y; //определяет общее положение курсора
попробуй проще люди тебе выше комманды написали
----------------------------------------------(непра-)
procedure TForm1.FieldClick(Sender: TObject);  
var x, y, z1, z2:integer;                                 
begin                                                         
----------------------------------------------(вильно)
ты заносишь координаты в переменную y
напрямую коммандой y:=Mouse.CursorPos.Y;//а она узнает общее положение курсора а нам надо кд.курсора у image из-за этого тебе приходится убавлять делить и т.д. 
z2 := trunc((y - Form1.Top - Field.Top) / 20);//
 
а узнавать координаты image нужно в событии mousedown, mouseup, mousemove.
Допустим, в общем var создаем  переменные X1 И Y1
var
  Form1: TForm1;
  x1,y1:integer;
 в событии mousedown у image
пишем
x1:=x;
y1:=y;
и все, при клике на image в переменных x1 и y1
появятся точные координаты.
 
(и ненадо никаких
z2 := trunc((y - Form1.Top - Field.Top) / 20)
