Перемещение в лствью

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

есть листвью нужно
организвать драго энд дроп
Если беру допустим итем с 1-ой позиции и перемещаю на 5
Ондолжен оказтья на 5 позиции а все итемы выше 5 должны подняться до 1 позиции
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

Что никто не знает?
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

с драг&дроп'ом не так все просто :) даже я не работал с этим, а что ты пытаешься бросить в листвьювер?
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

В плане что бросить
Он находится в состоянии репорт
Я сделал чтоб можно было менять местами ветки
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

Устанавливаем 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;
С уважением, Lost Angel...
Лелик_1044
Сообщения: 340
Зарегистрирован: 22 ноя 2004, 19:15
Откуда: Минск
Контактная информация:

LAngel,
Попробовал тут
1)Работает не 100%Иногда отваливается при попытке перенести снизу вверх
2)При CurrentItem.Free освобождается его Data и DragItem.Data что не есть гуд
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
Ответить