Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.034 c
7-1080714655
c13prog
2004-03-31 10:30
2004.05.23
Как определить название диска в CD-ROM?


14-1083507052
Vlad Oshin
2004-05-02 18:10
2004.05.23
Давайте в шахматишки срубимся


14-1083335373
Ultr
2004-04-30 18:29
2004.05.23
Левые имена файлов в Винде


3-1082986711
VEN
2004-04-26 17:38
2004.05.23
Конвертация таблицы dbase III+ в Visual dBASE7


6-1081004226
Mistic
2004-04-03 18:57
2004.05.23
ClosedGracefully




   Наверх