Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   componente rejilla ordenable por etiqueta (https://www.clubdelphi.com/foros/showthread.php?t=7524)

micopato 18-02-2004 13:32:03

componente rejilla ordenable por etiqueta
 
¿Alguien sabria decirme si existe un componente que sea una rejilla y que se pueda ordenar cuando pulsas sobre la etiqueta de la columna?. Perdonad si no me he explicado bien o si no es aqui donde he de poner esto, es mi primera vez :rolleyes:

Gracias.

Tanix 19-02-2004 15:17:31

Buenas, si no recuerdo mal en Delphi 7 viene el componente ClientDataSet, que me han comenatado que sirve para lo que tu necesitas. Aunque te digo que nunca lo he probado ni se como funciona... Salu2.

__cadetill 19-02-2004 15:38:06

Veamos, que yo sepa, no hay ningún Grid que haga lo que tu pretendes. Lo que sí que hacen algunos grids es mostrar una marca de ordenación sobre la columna que se ha pulsado. Luego, tu, internamente te has de molestar en hacer la ordenación de tu tabla.

Encontrarás componentes free y de pago que te lo hacen. Unos Grids muy potentes de pago son los TopGrid de la casa objectsight, pero si te conformas con menos, el Grid que viene con las RxLib (free) también es capaz de hacerte esto. Si quieres las RxLib o una demo de cómo hacerlo, visita mi web (ver firma). El tema de ordenar el Dataset asociado, ya te lo dejo a ti (porque todo dependerá del tipo de Dataset "enganchado" al grid)

Por cierto, Tanix, el TClientDataSet está en Delphi desde la versión 3 como mínimo ;)

Tanix 19-02-2004 15:43:43

Creo que con lo que yo comente se puede hacer... Claro que tendras que programar el grid... eso se me olvido comentarlo, pero creo que con el clientdataset se puede hacer... Si encuentro algun codigo lo hare saber... salu2...

__cadetill 19-02-2004 16:12:12

Cita:

Empezado por Tanix
...creo que con el clientdataset se puede hacer...

Yo no he negado eso, de hecho, con cualquier dataset se puede hacer (costando más o menos) sólo explicaba que no hay ningún Grid que yo conozca que te haga directamente la ordenación, que hay que teclear código ;)

Gydba 19-02-2004 17:19:50

Si si si, con el tclientdatast se puede lograr. Otra forma sería utilizar las rxMemoryData que tienen un método propio de ordenación. Cualquiera de las dos formas con un rxDBGrid te sobra para hacer el ordenamiento por columna.

roman 19-02-2004 17:51:16

Supongo que quienes apoyan la tesis de los clientdatasets se refieren al hecho de que para ordenar por una columna basta asignar a la propiedad IndexName el nombre del campo aun cuando no existan índices para dicho campo en la base de datos. Dado que el clientdataset almacena todos los datos en memoria, la ordenación es mucho más rápida que con otros datasets con los que reordenar signifique, posiblemente, ejecutar una consulta sql nuevamente. Pero hay que tener cuidado con los clientdatasets en el sentido de que si las consultas arrojan muchos resultados, la carga inicial será lenta.

Lo que también es cierto es que aún con esto el grid no ayuda mucho ya que hay que programarle que dibuje la flechita indicadora y para esto, el RXDbGrid que indica cadetill es mejor.

// Saludos

Gydba 19-02-2004 17:59:35

De hecho yo utilizo el TClientDataset en conjunto con un RXDbGrid para utilizar la propiedad packetrec del mismo y limitar los resultados. Eso de crear índices al vuelo realmente fue una buena idea por parte de sus creadores.

Hasta el momento la máxima prueba que realizé fue de una tabla clientes con 9 campos y 10.000 registros desde una pc cliente y me dejo bastante satisfecho.

Los rxMemoryData quizás me funcionaron significativamente más rápido pero presentaron errores en su implementación.


La franja horaria es GMT +2. Ahora son las 11:15:16.

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