TListViewのKeyDownイベントでスペースキーが押された際選択されているアイテムのチェックを反転する処理を

for( int i = 0; i < ListView->Items->Count; i++ ){
    if( ListView->Items->Item[ i ]->Selected ){
        ListView->Items->Item[ i ]->Checked = !ListView->Items->Item[ i ]->Checked;
    }
}

こんな感じで実装しました。
しかし、通常のTListViewの仕様によって一番最後にクリックしたアイテムだけ反転が更に反転して元に戻ってしまいます。
Builderは2009です。
スペースを使用するのを変えずに選択されたアイテムが問題なく反転する方法はないでしょうか?