PDA

Ver la Versión Completa : componente rejilla ordenable por etiqueta


micopato
18-02-2004, 13:32:03
¿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 (http://www.objectsight.com), 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
...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.