Nun es wäre durchaus nicht falsch, hätte jemand erwartet, dass er erst mal alle SpriteIDs definieren kann und sie erst später verwendet. Wäre denkbar, funktioniert in GLBasic aber nicht. Daher mein Hinweis, nur für den Fall, war ja schließlich aus dem Beispiel nicht ersichtlich, ob dir das klar ist...
Was den 'dirty hack' betrifft hatte ich dich falsch verstanden, obwohl es nicht da steht, hatte ich unterstellt, dass du die SpriteIDs später auch als allgemeine ControlIDs verwenden willst. Mein Fehler.
Natürlich gibt es gar keinen Grund, warum alle Constants umbenannt werden sollten, wenn du einen dazwischen einfügst, was spricht dagegen, dass zwischen Button mit Wert 2 und Button mit Wert 3, Button mit Wert 45 erscheint? Im Kommentar unter/über den CONSTANTs vermerken was die höchste ID ist, Button einfügen mit jener ID und Kommentar korrigieren. Wie gesagt, der Constant Block muss ja keine aufsteigenden Nummern habe, es ist einzig wichtig, dass keine Nummer doppelt auftritt. Alles in allem ohne allzu viel Aufwand machbar, bei entsprechender Disziplin auch nicht zu Fehleranfällig.
Insgesamt würde ich mir anstelle des simplen ENUM eine erweiterte Programmierbarkeit des Preprozessors wünschen, dass man automatisiert Codeteile ersetzen oder einfügen kann, quasi ein kleines Programm dass über den Code läuft, bevor er compiliert wird. Damit könnte dann dein aufsteigendes durchnummerieren der Konstanten erledigt werden, aber auch viel komplexere Dinge.
(Ja ich weiß, dass ich das einfach selbst schreiben und vor dem kompilieren über das Codefile laufen lassen könnte...)