Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ordenar Datos en DBGrid mediante un Click (https://www.clubdelphi.com/foros/showthread.php?t=31875)

anghell77 20-05-2006 01:51:57

Ordenar Datos en DBGrid mediante un Click
 
Hola a todos.....Primero lo primero: DELPHI 7 PARADOX 7

No se si quiera si aquí deba publicar el hilo, pero como aquí son varios pues puede ser que esté menos mal que ponerlo en otro lado...

El título, habla por sí solo.... Quisiera ver si me pueden ayudar a hacer eso: que al dar un click sobre una columna o sobre el encabezado de la columna de un DBGRID se ordenasen los datos, por la columna seleccionada.....tal como sucede en las ventanas de windows, al dar click sobre la columna de los nombres de los archivos, la de el tamaño, etc.

Sé que probablemente funcione, cerrar la consulta y reescribir el sql:

por decir, en el evento on CellClick (del DBGrid)
DataModule2.Invers.Close;
DataModule2.Invers.SQL.Add('order by "AQUI ENTRA EL NOMBRE DEL CAMPO")
DataModule2.Invers.Open;

pero que sucede si tengo las Opciones del DBGrid "dgAlwaysShowSelection=TRUE" y "dgRowSelect=TRUE"???

Obviamente dejará de ordenar los datos del grid, por la columna específica no??

Y es más...creo que no serviría ni si quiera aplicar el evento OnCellClick como lo he escrito antes....

Ahora, pues si alguien puede ayudarme....:confused: :confused:

celades1 20-05-2006 17:56:23

Hola

La idea que tienes es la correcta pero el evento es el ontitleclic o bien bajarte un componente dbgrid que ya tenga programado el evento.
Nosotros tenemos nuestro propio DBGrid con nuestros propios eventos programados y no es facil programar lo que tu quieres sin que falle nunca ya que siempre hay algun caso (selects raras, campos calculados etc) .
Pero la idea es cerrar la tabla mirar el field de la columna clicada y generar la nueva select con un order by del field ya sea por nombre o numero de order dentro de la select.
En fin es para que te lo trabajes un rato.

Saludos

Lepe 20-05-2006 17:59:27

Usa en las opciones del grid TiTleButton a true y en el evento on TitleButtonClick (creo que se llama) es donde haces todo eso, es decir, pulsas arriba del todo de la columna, donde pone el nombre del campo, y entonces es cuando manda la consulta.

Creo que en ese evento tienes el índice de la columna... así que puedes usar Dbgrids.Columns[index].Field.Fieldname para saber el nombre del campo de esa columna.

Si en ese evento tienes un parámetro de tipo TColumn, pues Column.Field.FieldName.

como ves lo digo de memoria... no tengo delphi a mano.

Saludos


La franja horaria es GMT +2. Ahora son las 06:00:08.

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