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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #12  
Старый 08.05.2009, 09:34
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Вот только попробуйте после этого сказать, что не сортируется! =)
Код:
var
  Form1: TForm1;
  function CustomNumSort(List: TStringList; Index1, Index2: Integer): Integer;

....................

procedure TForm1.Button1Click(Sender: TObject);
var
  SList: TStringList;
  i: Integer;
begin
  SList := TStringList.Create;
  SList.Delimiter := ' ';
  try
    for i := 0 to Memo1.Lines.Count - 1 do
    begin
      SList.DelimitedText := Memo1.Lines.Strings[i];
      StringGrid1.Rows[i].Delimiter := SList.Delimiter;
      StringGrid1.Rows[i].DelimitedText := SList.DelimitedText;
    end;
    SortCols(); // отсортирует по возрастанию столбцы...
    { SortRows(); // ...или строки (раскомментируйте, если надо) }
  finally
    SList.Free;
  end;
end;

procedure TForm1.SortCols;
var
  SList: TStringList;
  i: Integer;
begin
  SList := TStringList.Create;
  SList.Delimiter := '|';
  try
    for i := 0 to StringGrid1.ColCount - 1 do
    begin
      StringGrid1.Cols[i].Delimiter := '|';
      SList.DelimitedText := StringGrid1.Cols[i].DelimitedText;
      SList.CustomSort(CustomNumSort);
      StringGrid1.Cols[i].DelimitedText := SList.DelimitedText;
    end;
  finally
    SList.Free;
  end;
end;

procedure TForm1.SortRows;
var
  SList: TStringList;
  i: Integer;
begin
  SList := TStringList.Create;
  SList.Delimiter := '|';
  try
    for i := 0 to StringGrid1.RowCount - 1 do
    begin
      StringGrid1.Rows[i].Delimiter := '|';
      SList.DelimitedText := StringGrid1.Rows[i].DelimitedText;
      SList.CustomSort(CustomNumSort);
      StringGrid1.Rows[i].DelimitedText := SList.DelimitedText;
    end;
  finally
    SList.Free;
  end;
end;

function CustomNumSort(List: TStringList; Index1, Index2: Integer): Integer;
var
  Value1, Value2: Integer;
begin
  Value1 := StrToInt(List.Strings[Index1]);
  Value2 := StrToInt(List.Strings[Index2]);
  if Value1 < Value2 then Result := -1
  else
    if StrToInt(List.Strings[Index1]) > StrToInt(List.Strings[Index2]) then
         Result := 1
    else Result := 0;
end;
Ответить с цитированием
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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