Hola,
Me alegra saber que lo has solucionado. Yo he echado un vistazo a la ayuda de la función "TextWidth" y esta devuelve su resultado en píxeles. El caso es que creo que lo que he conseguido es más o menos lo que precisabas. Como ya lo hize lo copio aquí, aunque ya solucionaras el asunto, por si puede servirte de algo o puede servir de algo a alguien.
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
anchoTexto: integer;
const
posicionY = 10;
posicionX = 10;
anchoLinea = 200;
cadena = 'Una cadena cualquiera';
begin
anchoTexto := Canvas.TextWidth(cadena);
Canvas.TextOut(posicionX, posicionY, cadena);
Canvas.MoveTo(anchoTexto + posicionX, posicionY * 2);
Canvas.LineTo(anchoLinea, posicionY * 2);
end;