Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-07-2006
varuhs varuhs is offline
Registrado
 
Registrado: oct 2005
Posts: 7
Poder: 0
varuhs Va por buen camino
Thumbs up 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

Última edición por varuhs fecha: 18-07-2006 a las 18:00:48.
Responder Con Cita
  #2  
Antiguo 18-07-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 18-07-2006
varuhs varuhs is offline
Registrado
 
Registrado: oct 2005
Posts: 7
Poder: 0
varuhs Va por buen camino
RE: Ejemplo de Ordenamiento StringGrid (Solución)

Lo voy a añadir en estos momentos....

Gracias Neftali por darme la idea....

Saludos
Responder Con Cita
  #4  
Antiguo 10-09-2006
rusadir rusadir is offline
Miembro
 
Registrado: sep 2006
Posts: 13
Poder: 0
rusadir Va por buen camino
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

Última edición por Neftali [Germán.Estévez] fecha: 12-09-2006 a las 11:13:43.
Responder Con Cita
  #5  
Antiguo 12-09-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Ordenamiento lento brandolin Firebird e Interbase 3 11-05-2005 20:57:56
Alguien tiene un ejemplo de tetris con StringGrid? alfredosg19 Varios 0 22-01-2005 20:57:02
Actualización de ordenamiento con ADO ¥0n1 Conexión con bases de datos 4 09-01-2004 18:17:43
Ordenamiento GIVO Conexión con bases de datos 4 13-08-2003 18:19:29
Ordenamiento en un DBGrid Cronos Varios 1 26-05-2003 21:25:29


La franja horaria es GMT +2. Ahora son las 22:33:06.


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
Copyright 1996-2007 Club Delphi