TListItem.DropTarget の描画


Terry  2025-01-19 03:32:44  No: 151763  IP: 192.*.*.*

いつもお世話になっています。

ヘルプでは「DropTarget プロパティを true に設定すると,リストビューのその他のすべての項目の Default プロパティが false に設定されます。」
とあるのですが、他のアイテムのターゲット状態が戻りません。

もともとは、The Drag and Drop Component Suite for Delphi 「DropFileTarget.OnDragOver」内での動作だったのですが、
最小限にするために TListView と TListBox のみでテストしています。
procedure TForm1.FormCreate(Sender: TObject);
var
  i:integer;
begin
  ListView1.ViewStyle:=vsReport;
  for i:=0 to 9 do
  begin
    ListView1.Items.Add.Caption:=IntToStr(i);
    ListBox1.items.Add(IntToStr(i));
  end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin
  ListView1.Items[ListBox1.ItemIndex].DropTarget:=True;
end;

↓が希望の描画です
var
  i:integer;
begin
  for i:=0 to ListView1.Items.Count - 1 do
    ListView1.Items[i].DropTarget:=i=ListBox1.ItemIndex;

ちなみに TTreeView の場合は全く問題なく希望通りの描画になります。
問題が、Delphi 側なのか OS のメッセージなのか確認するため、
LVIS_DROPHILITED を直接送ってみたりもしましたが変化ありませんでした。
なにか情報をお持ちでしたらお教えください。

編集 削除