Zu deinem Stil sollte ich besser nichts sagen...
Trotzdem kann ich mir grundsätzliche Hinweise nicht verkneifen.
Funktionen haben Parameter und Rückgabewerte, alles darüber hinaus geht eine Funktion nichts an.
Zugriffe auf globale Variablen in anderen Units sind unschön, Zugriffe auf Steuerelemente in fremden Formularen sind extrem ...
Ich habe deshalb mal ein bischen drin rumgeändert, aber nicht gleich alle Units, die solltest du selbst überarbeiten.
Ach ja, Matrix funktioniert jetzt natürlich.