La función de ordenación será capaz de ordenar por orden alfabético o numérico las filas del StringGrid. Podremos elegir la columna sobre cuyos valores ordenaremos y la fila de inicio y fin que entraran el juego. También seremos capaces de ordenar en orden creciente de arriba a bajo o decreciente.
La definición de la función, para colocar en un archivo.h
void SortRow(TStringGrid *StringGrid, bool Increase, int Col, int RowIni = 0, int RowEnd = -1);
La implementación:
void SortRow(TStringGrid *StringGrid, bool Increase, int Col, int RowIni, int RowEnd) { TStrings *Strings = StringGrid->Cols[Col]; TStrings *Temp = new TStringList; int n, m = 1; if(RowEnd == -1) RowEnd = Strings->Count-1; // Ordena por orden alfabético for(m=1; m;) for(n=RowIni,m=0; n<RowEnd; n++){ if(Increase){ if(Strings->Strings[n]<=Strings->Strings[n+1]) continue; } else{ if(Strings->Strings[n]>=Strings->Strings[n+1]) continue; } Temp->Assign(StringGrid->Rows[n]); StringGrid->Rows[n]->Assign(StringGrid->Rows[n+1]); StringGrid->Rows[n+1]->Assign(Temp); m=1; } delete Temp; }
Saludos.