Блог программистов



F.A.Q.Pblog

1й год Форума программистов 2006-2007

Перемещение элементов в ListBox

Есть код для перемещения элементов в 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;
Do MoveListItem(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;


Просмотр ответов:
http://programmersforum.ru/showthread.php?t=2702


Другие вопросы:
Как сохранить шрифт - TfontStyle
Реализация плавающего окошка
Как сделать так чтоб моя прога при запуске ОС стартовала
Форма с тенью
Помогите с drag-and-drop



<<<Назад    Вперёд>>>