Страница 1 из 1
Перемещение в лствью
Добавлено: 27 окт 2006, 18:31
Лелик_1044
есть листвью нужно
организвать драго энд дроп
Если беру допустим итем с 1-ой позиции и перемещаю на 5
Ондолжен оказтья на 5 позиции а все итемы выше 5 должны подняться до 1 позиции
Добавлено: 30 окт 2006, 18:52
Лелик_1044
Что никто не знает?
Добавлено: 30 окт 2006, 19:07
Dr_Grizzly
с драг&дроп'ом не так все просто

даже я не работал с этим, а что ты пытаешься бросить в листвьювер?
Добавлено: 30 окт 2006, 21:35
Лелик_1044
В плане что бросить
Он находится в состоянии репорт
Я сделал чтоб можно было менять местами ветки
Добавлено: 31 окт 2006, 08:54
LAngel
Устанавливаем DragMode в dmAutomatic
и DragKind в dkDrag
Код: Выделить всё
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := Source = Sender;
end;
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
DragItem, DropItem, CurrentItem: TListItem;
begin
if Sender = Source then
with TListView(Sender) do
begin
DropItem := GetItemAt(X, Y);
CurrentItem := Selected;
if DropItem = nil
then DragItem := Items.Add
else if DropItem.Index > CurrentItem.Index
then DragItem := Items.Insert(DropItem.Index+1)
else DragItem := Items.Insert(DropItem.Index);
DragItem.Assign(CurrentItem);
CurrentItem.Free;
end;
end;
Добавлено: 01 ноя 2006, 18:38
Лелик_1044
LAngel,
Попробовал тут
1)Работает не 100%Иногда отваливается при попытке перенести снизу вверх
2)При CurrentItem.Free освобождается его Data и DragItem.Data что не есть гуд