Когда изменяешь координаты (положение) шейпа, то соответственно и изменяй координаты лейбела...
То бишь как-то так:
Код:
label1.Left := shape1.Left - shape1.Width div 2 - label1.Width;
// или так: label1.Left := shape1.Left - shape1.Width div 2; // если надо не отступать от шейпа...
label1.Top := shape1.Top;