Dein Code ist ja soweit In Ordnung.
Wenn sich das Programm "aufhängt" also nicht mehr Reagiert, deutet das ziemlich wahrscheinlich auf eine Endlosschleife/Endlosrekursion hin.
bei dir eher ne Endlosrekursion, aber den Fehler solltest du mit dem Code von DelphiDeveloper schnell finden