![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Здравствуйте!
Такой вопрос. Есть код для перемещения элементов в ListBox. Я хочу перемещать элементы клавишами вверз и вниз, а также кнопками speedbutton1 и speedbutton2 (вверх и вниз соответственно). Также мне нужно, чтобы когда элемент доходит ко конца, то выдавалось сообщение, типа, Хотите переместить на первую или на последнюю строку. Но мой код немного глюкавит. Помогите, пожалуйста разобраться. Вот сам код: private procedure DoMoveListItem(AKind: Boolean); ------------------------------------------------- procedure TMainForm.DoMoveListItem(AKind: Boolean); var lIndex, NewIndex: Integer; begin lIndex := personslist.ItemIndex; try if (lIndex >= 0) and (lIndex < personslist.Count) then begin case AKind of True: begin NewIndex := lIndex + 1; personslist.Items.Exchange(lIndex,NewIndex); end; False: begin NewIndex := lIndex - 1; personslist.Items.Exchange(lIndex,NewIndex); end; end; personslist.ItemIndex:= lIndex; end; except end; end; procedure TMainForm.personslistKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_up then DoMoveListItem(True); if key = vk_down then DoMoveListItem(False); end; procedure TMainForm.SpeedButton1Click(Sender: TObject); begin personslist.ItemIndex := personslist.ItemIndex -1; DoMoveListItem(True); end; procedure TMainForm.SpeedButton2Click(Sender: TObject); begin personslist.ItemIndex := personslist.ItemIndex + 1; DoMoveListItem(false); end; procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = vk_up then DoMoveListItem(True); if key = vk_down then DoMoveListItem(False); end; |