Die Einrückung irritiert.
Zudem würde ich statt
Code:
if Selecting then
if SelectedIndex >= 0 then begin ... end
eher schreiben
Code:
if Selecting and (SelectedIndex >= 0) then begin ... end
denn das macht es viel klarer.
Ich sehe es genau anders herum. Die zwei If-Anweisungen kann man viel besser debuggen.
Einfach durchsteppen ohne den Inhalt der Variablen ansehen zu müssen.