![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Здравствуйте! Столкнулся с такой проблемой, перемещение нескольких элементов в ListBox именно пкм, так как выделение у меня происходит левой, а перемещение хотелось бы правой, причем на лету - т.е. не только после того как я отпустил клавишу мышки, перемещать, а именно при зажатии. В интернете полно примеров, но они не подходят по вышеперечисленному, листбокс - это у меня плэйлист в плеере. Заранее спасибо!
|
#2
|
||||
|
||||
![]() в событии OnMouseDown:
Код:
begin if Button=mbRight then begin // do it end; end; Пишу программы за еду. __________________ |
#3
|
||||
|
||||
![]() Хаха, юморист вы)) Повторяюсь: я не знаю как реализовать Drag&Drop нескольких элементов.
|
#4
|
||||
|
||||
![]() Цитата:
Код:
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if Button=mbRight then ListBox1.BeginDrag(True); end; procedure TForm1.ListBox2DragDrop(Sender, Source: TObject; X, Y: Integer); begin if Source=ListBox1 then ShowMessage(IntToStr(TListBox(Source).SelCount)); end; procedure TForm1.ListBox2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept:=True; end; Пишу программы за еду. __________________ |
#5
|
||||
|
||||
![]() Элементы не перемещаются
![]() |
#6
|
||||
|
||||
![]() http://zalil.ru/33934484
левой мышкой выделяй, правой перетаскивай. с Apple Magic Mouse не проверял... Пишу программы за еду. __________________ |
#7
|
||||
|
||||
![]() Спасибо, но первое: тут даже нету исходника. Второе: вы не правильно поняли слово "на лету" - я хотел сказать, что перемещать не с одного listbox'а в другой, а просто перемещать элементы не только когда отпустил клавишу мышки, а сразу.
|
#8
|
||||
|
||||
![]() Цитата:
|
#9
|
||||
|
||||
![]() Плеер Billy, прикрепил.
|
#10
|
||||
|
||||
![]() 1. "исходник (основная часть, необходимая и достаточная)" есть в 4-ом сообщении
2. ну значит действительно не понял что требуется. сделай gif или avi как должно выглядеть Пишу программы за еду. __________________ |
#11
|
||||
|
||||
![]() Я кинул пример, поклацайте в нем плэйлист.
|
#12
|
||||
|
||||
![]() Можно сделать примерно так:
Код:
var OldIndex: Integer; procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); var NewIndex, i1, i2, DiffIdx, Direct: Integer; begin case State of dsDragEnter: OldIndex := ListBox1.ItemAtPos(Point(X, Y), True); dsDragMove: begin NewIndex := ListBox1.ItemAtPos(Point(X, Y), True); DiffIdx := NewIndex - OldIndex; if DiffIdx < 0 then begin i1 := 0; Direct := +1; end else begin i1 := ListBox1.Items.Count - 1; Direct := -1; end; ListBox1.Items.BeginUpdate; try while (i1 >= 0) and (i1 < ListBox1.Items.Count) do begin if ListBox1.Selected[i1] then begin i2 := i1 + DiffIdx; if (i2 < 0) or (i2 >= ListBox1.Items.Count) then Break; ListBox1.Items.Move(i1, i2); ListBox1.Selected[i2] := True; end; i1 := i1 + Direct; end; finally ListBox1.Items.EndUpdate; end; OldIndex := NewIndex; end; end; end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
sariman (14.11.2012)
|
#13
|
||||
|
||||
![]() Спасибо, но перемещение не происходит, может быть нужно что-то прописать в DragDrop?
|
#14
|
||||
|
||||
![]() Цитата:
|
#15
|
||||
|
||||
![]() Стоит ведь, странно, можете скинуть пример (исходник)? если не трудно..
|