10.3だけどListViewのGroupsってクリアしちゃまずいの?
クリアしてもIDの値がリセットされずに増え続けて
このあやしいIDをListViewItemのGroupIDに割り当てると項目が表示されなくなる

ListView1.Groups.Clear;
var gi := ListView1.Groups.Add;
// gi.ID => 0
ListView1.Groups.Clear;
gi := ListView1.Groups.Add;
// gi.ID => 1
ListView1.Groups.Clear;
gi := ListView1.Groups.Add;
// gi.ID => 2

この現象のせいで外部ファイルを読み込んでGroupsを(再)構成するというやり方が破綻する
Clearする前なら設計時のGroupsを使ったり動的にAddしていっても正常に動作している

今はClearせずにGroupsを検索してすでにあったらその項目を使い回すというコードでしのいでいるけど実質的なメモリリーク状態になっている