Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: Ekz 
Форум » Все о Delphi » Компоненты » Drag and Drop
Drag and Drop
XakerДата: Среда, 28.04.2010, 16:29 | Сообщение # 1
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Всем Привет...в общем у меня проблема..есть код:

Code
procedure TForm3.MusicListDragDrop(Sender, Source: TObject; X, Y: Integer);
var
   DragItem, DropItem, CurrentItem, NextItem: TListItem;
begin
   if Sender = Source then
     with TListView(Sender) do
     begin
       DropItem    := GetItemAt(X, Y);  
       CurrentItem := Selected;
       while CurrentItem <> nil do
       begin
         NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]);
         if DropItem = nil then DragItem := Items.Add
         else
         DragItem := Items.Insert(DropItem.Index);
         DragItem.Assign(CurrentItem);
         CurrentItem.Free;
         CurrentItem := NextItem;
       end;
     end;
end;

Есть переменная Current: Integer; и она равна определенному Item в списке MusicList(ListView), так вот...когда перетаскиваешь итемы или этот итем(Current) то все перемешивается и Current уже не равна тому итему что была раньше...я уже много раз пробовал но полной гармонии достичь не удаётся...может что подскажете...?

 
AdminДата: Четверг, 29.04.2010, 17:02 | Сообщение # 2
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Нуу, может быть попробовать при перетаскивании, смотреть: то что перетащили, оно оказалось (после перетаскивания) ниже Current или выше? Если выше, то ничего не менять, если ниже, то Current = Current - 1. Это случай когда изначально перетаскиваемый элемент был выше Current.

Надеюсь идея понятна...


Не оказываю помощь через личные сообщения и ICQ
 
XakerДата: Воскресенье, 02.05.2010, 19:51 | Сообщение # 3
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Admin, вроде разобрался...но появилась другая проблема...как юзать мой код с компонентом Dropper..? wacko Нужно как то определить он ли это или может просто Drag and Drop в ListView...осталось узнать как)
 
AdminДата: Воскресенье, 02.05.2010, 20:50 | Сообщение # 4
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Незнаю такого компонента. Да и вопрос не совсем ясен

Не оказываю помощь через личные сообщения и ICQ
 
XakerДата: Понедельник, 03.05.2010, 12:04 | Сообщение # 5
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Поясню, есть компонент клик и есть мой первый код...всё дело происходит в ListView мне нужно чтобы я мог Items и между собой переставлять и в другую программу кидать.. wink
 
AdminДата: Понедельник, 03.05.2010, 14:14 | Сообщение # 6
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
А ты когда ставишь свойство Enabled в true? Может нужно выбрать другой момент для этого?
Я просто никогда не работал с этим компонентом, поэтому сложно чтото сказать


Не оказываю помощь через личные сообщения и ICQ
 
XakerДата: Понедельник, 03.05.2010, 16:40 | Сообщение # 7
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
я предпологаю что нужно определить если курсор на ListView то делать первый код...а если ушёл за него то уже использовать компонент...ставлю на SrartDrag и тогда ничего хорошего не выходит((
 
AdminДата: Понедельник, 03.05.2010, 20:27 | Сообщение # 8
Ранг 10
Группа: Пользователи
Сообщений: 1268
Награды: 16
Репутация: 2
Статус: Offline
Ну самый простой способ это:
1. ты знаешь координаты формы
2. Знаешь координаты ListView
3. Складывай 1 и 2 получаешь координаты ListView отностительно угла монитора.
4. Прибавляй к 3 результату width и Height компонента ListView и получай координаты его правого и нижнего края относительно угла монитора
5. Получай координаты мыши и сравнивай через 4 and


Не оказываю помощь через личные сообщения и ICQ
 
XakerДата: Вторник, 04.05.2010, 08:52 | Сообщение # 9
Ранг 4
Группа: Проверенные
Сообщений: 83
Награды: 1
Репутация: 0
Статус: Offline
Admin, да это всё понятно...я пробовал это делать на событии OnDragOver и опять же не выходит((
 
Форум » Все о Delphi » Компоненты » Drag and Drop
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2018
Хостинг от uCoz