|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Прокрутка ListView при перетаскивании элемента (LVN_BEGINDRAG). WinAPI
Здравствуйте.
Задача в следующем: Как реализовать прокрутку ListView при перетаскивание элемента (LVN_BEGINDRAG), если курсор находится в верхней или нижней части ListView. Drag'n'Drop работает, но перемещение могу делать только в видимой части списка. Как сделать, понятие не имею. Помогите пожалуйста. |
#2
|
||||
|
||||
Так попробуй:
Код:
procedure TForm9.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); Const HotArea = 10; begin if Y in[ListView1.Height - HotArea..ListView1.Height] then SendMessage(ListView1.Handle, WM_VSCROLL, SB_LINEDOWN, 0); if Y in [0..HotArea] then SendMessage(ListView1.Handle, WM_VSCROLL, SB_LINEUP, 0); Accept := True; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
||||
|
||||
Странный косяк на форуме с обработкой синтаксиса.
В исходном сообщении "if Y in [" пробел есть, а после обработки нет "if Y in[" Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
||||
|
||||
Цитата:
DragOver? Я Только через API, без VCL, делаю. Так что DragOver мне не понятно. |
#5
|
||||
|
||||
Цитата:
Попробовал, но через таймер, примерно 300 мс. Код:
procedure ABC(uTimerID, uMsg, dwUser, dw1, dw2 : Integer); stdcall; Const HotArea = 10; begin if P.Y in[LVRect.Bottom - HotArea..LVRect.Bottom] then SendMessage(LV, WM_VSCROLL, SB_LINEDOWN, 0); if P.Y in [{0..HotArea}24..50] then SendMessage(LV, WM_VSCROLL, SB_LINEUP, 0); ListView_RedrawItems(LV, indexlv - 5, IndexLV + 5); // без этого остаются следы UpdateWindow(lv); // end; IndexLV := ListView_HitTest() И во время движения содержимого ListView исчезает изображение переносимого итема, что с redraw, что без него. Как можно исправить? Последний раз редактировалось Stalker2-42, 06.03.2016 в 17:25. |
#6
|
||||
|
||||
Я так полагаю, нет желающих помочь?
|
#7
|
||||
|
||||
Рад бы, но я через API не пишу, не встретил еще той задачи где мне это могло бы позарез потребоваться.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#8
|
||||
|
||||
Цитата:
|
#9
|
||||
|
||||
Цитата:
Я этот же пример и использовал. |