Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сортировка в StringGrid [D6, Win2k, WinXP]


DDDeN ©   (2005-01-11 11:56:00) 

Как отсортировать СтрингГрид по определенному полю (по возрастанию или убыванию) или по группе указанных полей?


DDDeN   (2005-01-11 12:39:00) [1]

Ого!!!
Один комментарий непонятен ;)


P.N.P.   (2005-01-11 12:22:00) [2]


type TStringGridExSortType = (srtAlpha,srtInteger,srtDouble);

procedure GridSort(SG : TStringGrid; ByColNumber,FromRow,ToRow : integer;
                  SortType : TStringGridExSortType = srtAlpha);
var Temp : TStringList;

   function SortStr(Line : string) : string;
   var RetVar : string;
   begin
     case SortType of
          srtAlpha   : Retvar := Line;
          srtInteger : Retvar := FormatFloat('000000000',StrToIntDef(trim(Line),0));
          srtDouble  : try
                         Retvar := FormatFloat('000000000.000000',StrToFloat(trim(Line)));
                       except
                         RetVar  := '0.00';
                       end;
     end;

     Result := RetVar;
   end;

   // Ðåêóðñèâíûé QuickSort
   procedure QuickSort(Lo,Hi : integer; CC : TStrings);

       procedure Sort(l,r: integer);
       var  i,j : integer;
            x   : string;
       begin
         i := l; j := r;
         x := SortStr(CC[(l+r) DIV 2]);
         repeat
           while SortStr(CC[i]) < x do inc(i);
           while x < SortStr(CC[j]) do dec(j);
           if i j;
         if l < j then sort(l,j);
         if i < r then sort(i,r);
       end;

    begin {quicksort};
      Sort(Lo,Hi);
    end;

begin
 Temp := TStringList.Create;
 QuickSort(FromRow,ToRow,SG.Cols[ByColNumber]);
 Temp.Free;
end;


Наверх

Титульная страница Поиск, карта сайта Написать письмо