Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejemplo de Ordenamiento StringGrid (Solución) (https://www.clubdelphi.com/foros/showthread.php?t=33830)

varuhs 18-07-2006 17:58:05

Ejemplo de Ordenamiento StringGrid (Solución)
 
Encontre este ejemplo de ordenamiento de un StringGrid y lo he probado y funciona de las mil maravillas.... asi que se los dejo para que lo usen...

Código:

procedure Sortgrid(Grid : TStringGrid; SortCol:integer);
var
  i,j  : Integer;
  temp : TStringList;
begin
Temp:= TStringList.Create;
with Grid
do begin
  for i := FixedRows to RowCount - 2
  do begin
      for j:= i+1 to rowcount-1
      do begin
        if AnsiCompareText(Cells[SortCol, i], Cells[SortCol,j]) > 0
        then begin
              temp.assign(rows[j]);
              rows[j].assign(rows[i]);
              rows[i].assign(temp);
              end;
        end;
      end;
  end;
temp.free;
end;

y en el evento OnMouseUP de la Grilla

Código:

procedure TForm1.StringGrid1MouseUp(Sender: TObject;Button:TMouseButton;Shift: TShiftState; X, Y: Integer);
var
  c : Integer;
begin
with TStringGrid(Sender)
do begin
  if Y <= RowHeights[0]
  then begin
        C:= x div (DefaultColWidth+GridLineWidth);
        SortGrid(TStringGrid(Sender),C);
        end;

  end;

Saludos
Eduardo Valencia López
Santiago - Chile

Neftali [Germán.Estévez] 18-07-2006 18:40:15

No se si lo considerarás un abuso (espero que no), pero como moderador te propongo que lo incluyas en la sección de trucos del Club.

Si no te apetece, no tienes tiempo, o por cualquier otra razón no deseas hacerlo, dilo y yo mismo lo añadiré, pero ya que has sido tú quien lo ha propuesto sería lo lógico que lo hicieras tú y así constarías como el usuario que lo ha añadido.

Gracias por la aportación.

Un saludo.

varuhs 18-07-2006 18:43:29

RE: Ejemplo de Ordenamiento StringGrid (Solución)
 
Lo voy a añadir en estos momentos....

Gracias Neftali por darme la idea....

Saludos

rusadir 10-09-2006 22:08:43

flechitas de ordenación en stringgrid
 
Como complemento a tu ordenacion de un stringgrid que me ha sido muy util he puesto un procedure para que pinte los triangulitos de ordenacion es muy chapucero pero soy muy novato pero me valio os lo pongo por si os vale,

Código Delphi [-]
 
procedure marcaordgrid(Grid : TStringGrid; col:integer);
var
i,j,a,b: Integer;
triangulo:tbitmap;
begin
grid.Refresh;
triangulo:=tbitmap.Create;
i:=(col*(grid.DefaultColWidth))+(grid.DefaultColWidth div 2);
j:=(grid.DefaultRowHeight div 2);
grid.Canvas.MoveTo(i,j);
grid.Canvas.LineTo(i+5,j-5);
grid.Canvas.LineTo(i-5,j-5);
grid.Canvas.LineTo(i,j);
end;

luego se llama desde el



Código Delphi [-]
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
c : Integer;
begin
edit2.Text:=inttostr(x);
edit3.Text:=inttostr(y);
with TStringGrid(Sender)
do begin
if Y <= RowHeights[0]
then begin
C:= x div (DefaultColWidth+GridLineWidth);
SortGrid(TStringGrid(Sender),C);
marcaordGrid(TStringGrid(Sender),C);
end;
end;
end;



otra cosa que he visto es que al utilizar para determinar la columna el
DefaultColWidth+GridLineWidth
si las columnas son de distinto largo no valdria este algorismo ni pa
ordenar ni pa pintar el triangulito lo digo por si alguien se le ocurre algo
pa esto y ya lo dejamos maqueado

Neftali [Germán.Estévez] 12-09-2006 11:12:03

Cita:

Empezado por rusadir
Como complemento a tu ordenacion de un stringgrid que me ha sido muy util he puesto un procedure para que pinte los triangulitos de ordenacion es muy chapucero pero soy muy novato pero me valio os lo pongo por si os vale

Se agradece.
Bienvenido a los foros.
Sólo como comentario (y ya que eres nuevo) te recomiendo utilizar TAG's en los mensajes cuando coloques código Delphi, verás como la presentación mejora mucho.

En este caso ya te modifico yo el mensaje.

Un saludo.


La franja horaria es GMT +2. Ahora son las 01:24:51.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi