Автор Тема: ListView Перемещение строк Drag-and-drop  (Прочитано 464 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pvnn [?]

  • Осваивающий
  • **
  • Сообщений: 264
  • Репутация: 22
    • Награды
  • Версия AutoIt: 3.3.12.0
Всем доброго времени суток.
Сделал Drag-and-drop так:
1. Начало Drag&Drop отслеживаю в сообщении WM_NOTIFY, LVN_BEGINDRAG
2. Там же (LVN_BEGINDRAG) отслеживаю отжатие левой кнопки мыши
3. Определяю выделенную строку и делаю перемещение
Работает - перемещает строку выше указанной мышкой строки
Но это как-то "топорно" выглядит
Хотелось бы при зажатой кнопки мыши и перемещению по ListView видеть полоску разделителя и вставлять строку именно туда.
Как это можно реализовать?

(нажмите для показа/скрытия)




Русское сообщество AutoIt

ListView Перемещение строк Drag-and-drop
« Отправлен: Июнь 09, 2018, 07:37:34 »

Онлайн joiner [?]

  • Расмус-бродяга
  • AutoIt Гуру
  • *****
  • Сообщений: 2785
  • Репутация: 470
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: ListView Перемещение строк Drag-and-drop
« Ответ #1, Отправлен: Июнь 09, 2018, 12:43:08 »
(нажмите для показа/скрытия)

« Последнее редактирование: Июнь 09, 2018, 13:03:48 от joiner »
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 404
  • Репутация: 93
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ListView Перемещение строк Drag-and-drop
« Ответ #2, Отправлен: Июнь 09, 2018, 12:52:08 »

Оффлайн pvnn [?]

  • Осваивающий
  • **
  • Сообщений: 264

  • Автор темы
  • Репутация: 22
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: ListView Перемещение строк Drag-and-drop
« Ответ #3, Отправлен: Июнь 14, 2018, 14:04:41 »
Tempo, а как данную UDF подружить с WM_NOTIFY:
Например, помимо drag and drop, я захочу отследить другие события, например нажатие пр.клавиши мыши итд...
Как только я делаю:
Код: AutoIt [Выделить]
GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

drag and drop перестает работать


(нажмите для показа/скрытия)

Русское сообщество AutoIt

Re: ListView Перемещение строк Drag-and-drop
« Ответ #3 Отправлен: Июнь 14, 2018, 14:04:41 »

Оффлайн Tempo [?]

  • Продвинутый
  • ***
  • Сообщений: 404
  • Репутация: 93
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: ListView Перемещение строк Drag-and-drop
« Ответ #4, Отправлен: Июнь 14, 2018, 14:18:57 »
pvnn, этот UDF и есть обработчик сообщений так что вам нужно редактировать именно его. Какие именно сообщения он обрабатывает вы можете посмотреть в самой функции _GUIListViewEx_MsgRegister()


Добавлено: Июнь 14, 2018, 14:27:18
Но так как конкретных целей вы не озвучили может быть будет достаточно функций что идут в наборе. Например установить клавишу редактирования можно с помощью _GUIListViewEx_SetEditKey
« Последнее редактирование: Июнь 14, 2018, 14:27:18 от Tempo, Причина: Объединение сообщений »

Оффлайн pvnn [?]

  • Осваивающий
  • **
  • Сообщений: 264

  • Автор темы
  • Репутация: 22
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: ListView Перемещение строк Drag-and-drop
« Ответ #5, Отправлен: Июнь 18, 2018, 08:03:37 »
Tempo
Цитировать
Но так как конкретных целей вы не озвучили
Как раз озвучил, как мне отследить нажатие правой клавиши мыши на ListView?
В дальнейшем я хотел повесить контекстное меню через UDF ModernMenuRaw

Получается, что drag and drop работает, но события  других элементов на форме я не смогу отследить без правки самой UDF _GUIListViewEx_MsgRegister()?

Хотя вот здесь автор UDF https://www.autoitscript.com/forum/topic/182492-guilistviewex-new-version-22-feb-18/?page=6 говорит:
Цитировать
do not register $WM_NOTIFY using the UDF function (set the relevant parameter of _GUIListViewEx_MsgRegister to False) and then call the UDF handler function (_GUIListViewEx_WM_NOTIFY_Handler) from within your own handler
не регистрируйте $WM_NOTIFY с помощью функции UDF (установите соответствующий параметр _GUIListViewEx_MsgRegister на False), а затем вызовите функцию обработчика UDF (_GUIListViewEx_WM_NOTIFY_Handler) изнутри вашего собственного обработчика.



Добавлено: Июнь 18, 2018, 10:35:29
Все разобрался
Вот рабочий пример:
(нажмите для показа/скрытия)

Всем спасибо за помощь
« Последнее редактирование: Июнь 18, 2018, 10:35:29 от pvnn, Причина: Объединение сообщений »

Русское сообщество AutoIt

Re: ListView Перемещение строк Drag-and-drop
« Ответ #5 Отправлен: Июнь 18, 2018, 08:03:37 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
4115 Просмотров
Последний ответ Апрель 20, 2010, 20:22:22
от CreatoR
18 Ответов
9412 Просмотров
Последний ответ Август 11, 2013, 15:53:16
от WSWR
3 Ответов
3348 Просмотров
Последний ответ Декабрь 13, 2010, 19:43:52
от CreatoR
2 Ответов
2763 Просмотров
Последний ответ Декабрь 16, 2013, 02:30:55
от Astel064
3 Ответов
1548 Просмотров
Последний ответ Март 01, 2016, 12:33:31
от pvnn
4 Ответов
1567 Просмотров
Последний ответ Апрель 01, 2016, 06:37:04
от pvnn
2 Ответов
1130 Просмотров
Последний ответ Январь 20, 2017, 23:11:27
от reset86
3 Ответов
825 Просмотров
Последний ответ Март 20, 2017, 17:44:17
от maxd2007
4 Ответов
727 Просмотров
Последний ответ Август 08, 2017, 06:55:38
от musicstashall
4 Ответов
275 Просмотров
Последний ответ Июнь 26, 2018, 15:04:00
от pvnn