czesc wszsytkim

jest tak: mam swoja klase po TComponent. obiekty trzymam w Panel.Components[].
pozniej wszystkie obiekty sa rysowane na tym panelu (petla).
problem w tym, ze chcialbym miec cos takiego jak BringToFront czyli de facto zmienic kolejnosc rysoania komponentow.
najpierw pomyslalem ze zwyczajnie zmieni kolejnosc obiektow w components[] ale potem pomyslalem ze jest lepsze rozwiazanie:
dodam do moich obiektow cos takiego jak ZOrder - integer'a ktory bedzie mowil jak bardzo na wierzchu sa.
proste i szybkie ale jak sprawic, by dwa obiekty lezace na tym samym panelu, nie mogly miec tego samego ZOrder?
zrobic zwyczajnie procedurke BringToFront() ktora przeleci po wszystkich obiektach i pozmienia im zOrder czy moze jest jakies inne, lepsze rozwiazanie?

dzieki z gory
pozdrawiam i Wesolych Swiat