Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: StringGrid, сортировка через StrCmpLogicalW  (Прочитано 5545 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Shouldercannon
Помогающий

ru
Offline Offline

« : 18-05-2018 03:14 » 

Есть StringGrid 3 на 10. Хочу сделать сортировку всех столбцов по второму столбцу с помощью
Код: (Delphi)
function StrCmpLogicalW(psz1, psz2: PWideChar): Integer; stdcall; external 'shlwapi.dll';
Встал вопрос как в эту функцию передать параметры?
Решено
Код: (Delphi)
procedure TForm1.SortGrid(ST: TStringGrid; Column: Integer);
var
  I, I2: integer;
  SL: TStringList;
begin
  try
    SL := TStringList.Create;
    try
      for I := 1 to ST.RowCount - 2 do // С 1, чтобы не трогать FixedRows
      begin
        for I2 := I + 1 to ST.RowCount - 1 do
        begin
          // Cортируем по возрастанию
          if StrCmpLogicalW(PWideChar(ST.Cells[Column, I]), PWideChar(ST.Cells[Column, I2])) > 0 then
          begin
            SL.Assign(ST.Rows[I]);
            ST.Rows[I] := ST.Rows[I2];
            ST.Rows[I2] := SL;
          end;
        end;
      end;
    except
    end;
  finally
    FreeAndNil(SL);
  end;
end;
« Последнее редактирование: 19-05-2018 07:42 от Shouldercannon » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines