Показать сообщение отдельно
  #2  
Старый 27.06.2009, 04:18
Аватар для Mealgay
Mealgay Mealgay вне форума
Прохожий
 
Регистрация: 27.06.2009
Сообщения: 17
Репутация: 10
По умолчанию Ответ на 1й вопрос ->

Производится перетаскивание Item'ов между 2-мя TListView.
В момент начала перетаскивания (событие StartDrag) запоминается, какой Item хотим перетащить (TListView(Sender).Selected), после переноса DragDrop производим перенос.
Проблема в том, что в качестве перетаскиваемого не всегда определяется нужный Item, может попасть, например, следующий, над которым перетаскивали (при быстром перетаскивании).
Как точно определить Item, который перетаскиваем?

Код:
  procedure TForm.LView1StartDrag(Sender: TObject;
  var DragObject: TDragObject);
  begin
    if LView1.Focused then
      gDragItem:=LView1.Selected
    else 
      gDragItem:=LView2.Selected;
  end;

Код:
  procedure TForm.LView1DragDrop(Sender, Source: TObject; X, Y: Integer);
  var lLI: TListItem;
  begin
    lLI:=TListView(Sender).Items.Add;
    lLI.Caption:=gDragItem.Caption;
    lLI.ImageIndex:=gDragItem.ImageIndex;
    gDragItem.Delete;
    TListView(Sender).SetFocus;
    lLI.Selected:=true;
  end;
Ответить с цитированием