Der Verständlichkeit halber würde ich den Record wohl so deklarieren:
Delphi-Quellcode:
type
TLine = record
StartPoint,
EndPoint: TPoint;
end;
Wenn Du nun die Richtung wechselst, erweiterst Du Dein Array um ein Element und setzt EndPoint des vorher letzten Elements und StartPoint des nun letzten auf die aktuelle Position relativ zur Paintbox. Nach meinem Dafürhalten sollte das eigentlich funkionieren.