|
#1
|
|||
|
|||
ListBox
Предположим на форме ListBox и 2 Кнопки.
В листбоксе содержаться какието строки. После выделения любой строки и нажатии на кнопку 1 к примеру, она поднимается, а на кнопку 2 - опускается. Тоесть как можно переместить строку "вниз/вверх". И еще как можно мышкой перетаскивать. заранее спасибо! |
#2
|
|||
|
|||
Перемещение:
Код:
type TLBMove = (mUp, mDown); procedure ListBoxMoveItem(AListBox : TListBox; ADirection : TLBMove); var NewIdx : Integer; begin If ADirection = mUp Then NewIdx := AListBox.ItemIndex - 1 Else NewIdx := AListBox.ItemIndex + 1; If (NewIdx >= 0) And (NewIdx < AListBox.Items.Count) Then Begin AListBox.Items.Exchange(AListBox.ItemIndex,NewIdx); AListBox.ItemIndex := NewIdx; End; end; Перемещение мышом - используй внутренний Drag'n'drop. Соотв. надо реализовать обработчики нужных событий: OnDragDrop, DragOver. В первом, по координатам вычисляется новый индекс итема, далее вызываешь Exchange. Во втором надо вернуть True, когда итем проносится над этим лист боксом. И будет тебе счастье! |
#3
|
|||
|
|||
..
Спасибо, но чет както непонятн
тут 1 процедура, а нельзя на кнопки указать? Я понимаю что вопросы нубовские, но что поделать как на кнопки поставить? |
#4
|
|||
|
|||
Вот, только вчера програмил :
Для перемещения вверх: Код:
if (ListBox2.ItemIndex>0) then ListBox2.Items.Exchange(ListBox2.ItemIndex, ListBox2.ItemIndex-1); Для перемещения вниз соответственнно: Код:
if (ListBox2.ItemIndex<(ListBox2.Items.Count-1)) and (ListBox2.ItemIndex>=0) then // если не проверять на >=0, то при ItemIndex = -1 получится фигня. :) ListBox2.Items.Exchange(ListBox2.ItemIndex, ListBox2.ItemIndex+1); Items.Count - количество строк в листбоксе. ItemIndex возвращает номер выделенной строчки в листбоксе. Номер первой строчки = 0. номер последней строчки = Items.Count-1. Если ни одна строчка не выделена, то = -1. if - здесь это проверка на крайние значения, без этого при слишком большом или слишком маленьком ItemIndex и нажатой кнопке выскочит ошибка index out of bound(). Одновременно проверяется, выделена ли вообще строчка. А вообще, чаще читай встроенный хелп Дельфей. Там нет именно этого кода, но догадаться, как это сделать, можно. Да и быстрее самому разобраться, чем ждать ответа от доброго дяди. |
#5
|
|||
|
|||
!
Спасибо тебе огромное...
всем спасибо вообще большое что помогли.. |