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

Сортировка ListView в режиме vsReport при нажатии на заголовок колонки

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

Сортировка ListView в режиме vsReport при нажатии на заголовок колонки

Автор: MBo

На выходных с подругой в постели интимничаю, а перед глазами - ник(!!!!) девчушки одной с обаятельной лексикой и дефектной мыльницей (поэтому фотки её у меня нет).... Ну, думаю, это уже из разряда "пора остановиться"...


function CustomDateSortProc(Item1, Item2: TListItem; ParamSort: integer):
  integer; stdcall;
begin
  result := 0;
  if strtodatetime(item1.SubItems[0]) > strtodatetime(item2.SubItems[0]) then
    Result := 1
  else if strtodatetime(item1.SubItems[0]) < strtodatetime(item2.SubItems[0])
    then
    Result := -1;
end;

function CustomNameSortProc(Item1, Item2: TListItem; ParamSort: integer): integer
  item.Caption := sr.name;
  Item.SubItems.Add(datetimetostr(filedatetodatetime(sr.time)));
end;
until FindNext(sr) < > 0;
FindClose(sr);
end;

procedure TForm1.lv1ColumnClick(Sender: TObject; Column: TListColumn);
begin
  if column = lv1.columns[0] then
    LV1.CustomSort(@CustomNameSortProc, 0)
  else
    LV1.CustomSort(@CustomDateSortProc, 0)
end;

Код на языке Object Pascal для Delphi! Он сортирует список элементов в режиме отчета при клике пользователя по заголовку столбца. Сортировка основана на двух пользовательских процедурах: одной для сортировки по дате и другой для сортировки по имени.

Обзор кода:

  1. Функция CustomDateSortProc принимает три параметра:
    • Item1 и Item2: объекты TListItem, представляющие два элемента списка.
    • ParamSort: целочисленный параметр, который не используется в этом реализации. Функция сравнивает даты, хранящиеся в первом подэлементе каждого элемента списка с помощью функции strtodatetime. Если дата в Item1 больше даты в Item2, она возвращает 1 (значение, означающее, что Item1 должен быть после Item2 в отсортированном списке). Если дата меньше, она возвращает -1.
  2. Функция CustomNameSortProc аналогична предыдущей, но сравнивает строковые значения вместо дат.
  3. В процедуре lv1ColumnClick, которая вызывается при клике по заголовку столбца:
    • Она проверяет, является ли кликнутый столбец первым (индекс 0).
    • Если это так, она настраивает список элементов для использования функции CustomNameSortProc для сортировки.
    • В противном случае она использует функцию CustomDateSortProc.

Код написан на языке Object Pascal и использует контролы TListView, TListColumn и другие из фреймворка VCL (Visual Component Library).

Некоторые предложения:

  1. Рассмотрите добавление обработки ошибок в процедурах сортировки для случая некорректных данных ввода.
  2. Вам может потребоваться добавить задержку или механизм отсечения, чтобы предотвратить сортировку списка несколько раз при быстром клике пользователем по заголовку столбца.
  3. Если вы используете этот код в производственной приложении, вам может потребоваться реализовать более robust алгоритм сортировки, который мог бы обрабатывать большие данные эффективно.

В целом, это простой и эффективный способ реализации пользовательской сортировки для контрола ListView в Delphi.

В статье описывается способ сортировки ListView в режиме vsReport при нажатии на заголовок колонки, используя функции CustomNameSortProc и CustomDateSortProc для определения порядка сортировки.


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

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




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


:: Главная :: TListView ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 02:13:25/0.0033218860626221/0