Ejemplo de clasificación de Firemonkey StringGrid

Mi intento básico de ordenar un Firemonkey Stringgrid, ya que no pude encontrar ningún otro ejemplo. Daría la bienvenida a cualquier optimización u otras sugerencias sobre cómo lograr esto de la mejor manera. Mi código básicamente obtiene la columna elegida para ordenar y con ese orden de clasificación se completa para otras columnas:

procedure TfrmMain.StringGridSort(StrGrid: TStringGrid; SortColumn: Integer);
var
  col, row, rowx: Integer;
  MySortCol, MyListCols: TStringList;
begin
  MySortCol := TStringList.Create;
  MyListCols := TStringList.Create;
  try
    MySortCol.Sort;
    MyListCols.Sorted := False;
    StrGrid.BeginUpdate;
    try
      for row := 0 to StrGrid.RowCount - 1 do
        MySortCol.AddObject(StrGrid.Cells[SortColumn, row], TObject(row));
      MySortCol.Sorted := True;
      for row := 0 to StrGrid.RowCount - 1 do
        StrGrid.Cells[SortColumn, row] := MySortCol[row];

      for col := 0 to StrGrid.ColumnCount - 1 do
        if col <> SortColumn then
        begin
          MyListCols.Clear;
          for row := 0 to StrGrid.RowCount - 1 do
            MyListCols.Add(StrGrid.Cells[col, row]);

          for rowx := 0 to StrGrid.RowCount - 1 do
            StrGrid.Cells[col, rowx] :=
              MyListCols[Integer(MySortCol.Objects[rowx])];
        end;
    finally
      StrGrid.EndUpdate;
    end;
  finally
    MySortCol.Free;
    MyListCols.Free;
  end;
end;

Gracias de antemano Pablo

preguntado el 28 de julio de 12 a las 03:07

No soy un experto en stringgrid, pero probablemente querrá envolver todo en Grid.BeginUpdate... Grid.EndUpdate exige el mejor rendimiento. -

@MikeSutton - Vaya, eso es un poco vergonzoso - agregó. gracias pablo-

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.