У меня есть TListBox с multiselect и ExtendedSelect, оба установлены в true. Мне нужно перетащить несколько элементов в поле списка, чтобы переустановить их. Моя проблема заключается в том, что происходит, когда пользователь нажимает на элемент, который уже выбран, не удерживая клавишу CTRL или SHIFT.Проблемы с перетаскиванием TListBox с включенным MultiSelect
Корпус 1: DragMode установлен в dmManual Выбор очищается до мыши. Это не позволит перетаскивать несколько элементов.
Случай 2: DragMode установлен в dmAutomatic Событие MouseDown никогда не срабатывает. Выбор не очищается, поэтому перетаскивание в порядке, но пользователь не может удалить выделение, нажав на один из выбранных элементов. Это действительно вызывает проблему, если все элементы выбраны или следующий элемент, который пользователь хочет выбрать, является частью текущего выбора.
Обратите внимание, что эта проблема возникает только в том случае, если вы назначили что-то для объекта DragObject в процедуре OnStartDrag. Я думаю, что проблема исчезнет, если OnStartDrag начнется только после того, как пользователь переместит мышь. У меня есть Mouse.DragImmediate: = false set, но я все равно запускаю StartDrag, как только я нажимаю на элемент в списке.
Я использую Delphi 7 для этого проекта, но я вижу такое же поведение в Delphi 2007.