Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

StringGrid   Найти похожие ветки 

 
griban ©   (2004-05-06 15:10) [0]

Da.sortirovka puzirjkovaja,ne poluchaetsja vsju stroku perenesti srazu...Za ComboBox spasibo


 
begin...end ©   (2004-05-06 17:03) [1]


> ne poluchaetsja vsju stroku perenesti srazu


А её и не надо всю, ты же по значениям в какой-то одной колонке сортировать будешь.

procedure TFormName.SortStringGrid(KeyCol: Integer);

 procedure ExchangeRows(Index1, Index2: Integer);
 var
   TempArray: array of String;
   I: Integer;
 begin
   with StringGridName do
   begin
     SetLength(TempArray, ColCount);
     for I := Low(TempArray) to High(TempArray) do
       TempArray[I] := Cells[I, Index1];
     for I := 0 to ColCount - 1 do
       Cells[I, Index1] := Cells[I, Index2];
     for I := 0 to ColCount - 1 do
       Cells[I, Index2] := TempArray[I];
     Finalize(TempArray);
   end;
 end;

var
 I, J: Integer;
   
begin
 with StringGridName do
 begin
   for I := 1 to RowCount - 2 do
     for J := 1 to RowCount - 2 do
     begin
       if StrComp(Cells[KeyCol, J], Cells[KeyCol, J + 1]) > 0 then
         ExchangeRows(J, J + 1);
     end;
 end;
end;


 
Alex Konshin ©   (2004-05-06 19:14) [2]

И сколько же это работать будет... Кошмар. Не, конечно, если там всего пять строк, то, может быть, и приемлемо.


 
begin...end ©   (2004-05-06 20:05) [3]


> [2] Alex Konshin ©   (06.05.04 19:14)


Не спорю, не спорю. Но если автора это не устроит, пусть воспользуется другим алгоритмом сортировки. Думаю, принцип ему понятен.


 
Alex Konshin ©   (2004-05-06 20:15) [4]

Не, неправильно (ну по крайней мере слишком дорого) перемещать данные во время сортировки. Лучше отсортировать массив индексов, а потом уж раставить строки по местам. Хотя я бы вообще не рекомендовал хранить данные в самом гриде - неразумно это.


 
begin...end ©   (2004-05-06 20:31) [5]

"Сам себе ставлю LMD" ( © KilkennyCat )



Страницы: 1 вся ветка

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
14-1083052854
pasha_golub
2004-04-27 12:00
2004.05.23
Нужен человек из Омска


1-1083684435
Schummi
2004-05-04 19:27
2004.05.23
Закрытие TTabSheet


14-1083753802
}|{yk
2004-05-05 14:43
2004.05.23
Интернет и коммунизм


7-1082100061
i2e
2004-04-16 11:21
2004.05.23
Серийный номер (опять)


3-1083086967
как сделать
2004-04-27 21:29
2004.05.23
хочу объединить три поля одной таблицы в одно