Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Переместить элементы списка

Delphi , Компоненты и Классы , Списки

Переместить элементы списка

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// Move an item up 

procedure LbMoveItemUp(AListBox: TListBox);
 var
   CurrIndex: Integer;
 begin
   with AListBox do
     if ItemIndex > 0 then
     begin
       CurrIndex := ItemIndex;
       Items.Move(ItemIndex, (CurrIndex - 1));
       ItemIndex := CurrIndex - 1;
     end;
 end;

 procedure TForm1.Button1Click(Sender: TObject);
 begin
   LbMoveItemUp(ListBox1);
 end;

 // Move an item down 

procedure LbMoveItemDown(AListBox: TListBox);
 var
   CurrIndex, LastIndex: Integer;
 begin
   with AListBox do
   begin
     CurrIndex := ItemIndex;
     LastIndex := Items.Count;
     if ItemIndex <> -1 then
     begin
       if CurrIndex + 1 < LastIndex then
       begin
         Items.Move(ItemIndex, (CurrIndex + 1));
         ItemIndex := CurrIndex + 1;
       end;
     end;
   end;
 end;

 procedure TForm1.Button2Click(Sender: TObject);
 begin
   LbMoveItemDown(ListBox1);
 end;

Перевод на русский язык:

Код-набор Delphi, который перемещает элементы в списке. Вот подробное описание того, что код делает:

Процедура LbMoveItemUp принимает объект TListBox как аргумент, представляющий список, в котором нужно переместить элемент. Процедура проверяет, является ли текущий индекс элемента больше 0 (то есть не находится на верхушке списка). Если это так, она перемещает элемент на одну позицию вверх с помощью метода Items.Move и обновляет свойство ItemIndex.

Событийный обработчик кнопки 1 вызывает процедуру LbMoveItemUp с аргументом ListBox1, что перемещает текущий выбранный элемент вверх в списке при нажатии кнопки 1.

Аналогично, процедура LbMoveItemDown принимает объект TListBox как аргумент и проверяет, является ли текущий индекс элемента не -1 (то есть не находится на нижней части списка). Если это так, она перемещает элемент на одну позицию вниз с помощью метода Items.Move и обновляет свойство ItemIndex.

Событийный обработчик кнопки 2 вызывает процедуру LbMoveItemDown с аргументом ListBox1, что перемещает текущий выбранный элемент вниз в списке при нажатии кнопки 2.

Рекомендуется улучшение:

Вместо передачи объекта списка в процедуры, можно сделать их методами класса (TForm1) и использовать Self для доступа к списку. Это уменьшит количество аргументов, которые нужно передавать. Вот пример модификации кода:

procedure TForm1.LbMoveItemUp;
var
  CurrIndex: Integer;
begin
  if ListBox1.ItemIndex > 0 then
  begin
    CurrIndex := ListBox1.ItemIndex;
    ListBox1.Items.Move(ListBox1.ItemIndex, (CurrIndex - 1));
    ListBox1.ItemIndex := CurrIndex - 1;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  LbMoveItemUp;
end;

procedure TForm1.LbMoveItemDown;
var
  CurrIndex, LastIndex: Integer;
begin
  if ListBox1.ItemIndex <> -1 then
  begin
    CurrIndex := ListBox1.ItemIndex;
    LastIndex := ListBox1.Items.Count;
    if CurrIndex + 1 < LastIndex then
    begin
      ListBox1.Items.Move(ListBox1.ItemIndex, (CurrIndex + 1));
      ListBox1.ItemIndex := CurrIndex + 1;
    end;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  LbMoveItemDown;
end;

Сделав эти изменения, можно упростить код и сделать его более компактным.

В статье описаны процедуры, позволяющие перемещать элементы списка вверх или вниз на языке Delphi, а также пример их использования в приложении.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Списки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 17:51:19/0.0037550926208496/0