Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.03.2007, 18:54
kodov kodov вне форума
Прохожий
 
Регистрация: 30.03.2007
Сообщения: 1
Репутация: 10
По умолчанию Перемещение элементов в 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;
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;
Ответить с цитированием
  #2  
Старый 02.04.2007, 18:24
Аватар для mav_c
mav_c mav_c вне форума
Активный
 
Регистрация: 26.03.2007
Адрес: Москва
Сообщения: 287
Репутация: 30
По умолчанию

Всё верно!
Для чего ты пишешь в обработчике нажатия спидБатонов:
personslist.ItemIndex := personslist.ItemIndex + 1;
ты перемещаеш элементы, а не выделения!
__________________
---------------------------------------------
Программирование - не профессия, а стиль жизни
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025