![]() |
Que componentes tengo que utilizar para hacer esto:
Hola.
En un Form, quiero poner en una parte algo igual al explorador de windows. Me explico. Cuando abrimos el explorador de windows tenemos a la parte de la derecha, un encabezamiento, (nombre, tamaño, tipo). Este encabezamiento o títulos si pinchamos con el ratón ordena el contenido de abajo. Y si pinchamos en el contenido pues que pueda abrir otro formulario. Yo lo tengo hecho con DBGrid, pero no se si en este componente puedo poner lo de pinchar en el encabezamiento y que se ordene el contenido de abajo. Tampoco se quitar las líneas de separación verticales (pero sólo las del contenido manteniendo las de los títulos). Puede que la barra de títulos y el contenido de abajo se haga con otros componentes para conseguir esto? Gracias |
Hola
Puedes usar el TListView Paleta win32, pero también puedes usar el mismo DBGrid, aunque yo recomendaría si vas a usar DBGrid que uses el de las RX que es más avanzado y da más posibilidades para lo de el clic en el encabezado, dibujar dirección de ordenamiento etc, en fin hay varios componentes que puedes usar selecciona uno y cuando tengas dudas más concretas cuenta con nosotros.
Saludos |
Hola
Entiendo que un ListView puede valer. Pero sería para el contenido, no?, pero y la barra de títulos?. Esto si no se usa DBGrid. En DBGrid voy a mirar el rx que me dices. Lo que quiero es tener una barra de títulos con varias columnas y que ordene a su contenido si pinchas en cada columna. Luego en el contenido de abajo tener varias filas. Esas filas estarían conectada a base de datos porque su contenido variaría según los usuarios conectados. Por lo que creo que tendrá que ser con DBGrid. Por ejemplo que una de las columnas de la barra de título se llama usuarios y abajo el contenido pues varía según los usuarios conectados. 1 --4---9. Y así varias columnas, y el usuario pincha en la fila que quiere acceder para que se le abra el form correspondiente. ejemplo: Títulos: nombre porcentaje usuarios filas: blanca 22% 5 gonto 33% 11 segovia 19% 6 Si pinchas en porcentaje, las 3 filas se ordenan por porcentaje, si pinchas en usuarios o nombre pues igual, que se pueda pinchar en la fila para acceder al formulario correspondiente, y que los datos de las filas se actualicen según porcentaje o usuarios conectados. Esto sería con DBGrid o no ? Gracias |
Los componentes DevExpress tienen un DBGrid (ExpressQuantumGrid) que hace justamente eso que estas pidiendo, además de hacer sumas, contar, min, max, avg, agrupar, ordenar, buscar, etc, etc...
|
Lo dicho
Revisa el DBGrid de las RX que te recomendé, creo que es la mejor opción, puesto que tiene definido el evento OnTitleBtnClick que es precisamente cuando el usuario da clic en un encabezado, aquí puedes hacer los ordenamientos según convenga, recordarte que el ordenamiento no lo haces en el DBGrid sino en la tabla asociada(objeto TDataset).
|
Con el QuamtumGrid no requieres codificar los clicks en el encabezado, ya que el orenamiento lo hace de manera automática dependiendo en que columna des click. No requiere codificar nada para hacer agrupaciones. En fin, puedes probar los dos componentes, RX o DevEpxress pero estoy seguro que el DevExpress es l amejor opción ya que solo tienes que cargar el Dataset y todo lo demás es automático.
|
creo, me parece, lo pregunto aquí: ¿el dbgrid de devexpress trae TODOS los registros a memoria y por eso puedes ordenarlos por cualquier campo en cualquier momento?, si es así, me parece bastante ineficaz para trabajos en modo cliente/servidor. Y para trabajos en red igualmente mal. Y para trabajar por internet... peor todavía.
|
Si, si lo carga en la memoría para poder realizar esas operaciones.
No lo he probado para trabajar en internet, pero en una LAN me ha funcionado perfecto. Claro esta que el rendimiento dependerá de la red/servidor/conexión/volumen. pero al menos a mi no me ha dado problemas y me ha ahorrado bastante trabajo. :D |
DBGrid delphi 2005
Hola
Voy a probar. El rx me descarga mal, me dice que no es un archivo válido y que descargue otra vez. Lo probaré mañana. El Quantumgrid si no funciona bien cliente servidor lo dejo porque basicamente es eso lo que necesito. Si se puede conseguir en el evento ontitleclick del DBGrid de delphi 2005 sería suficiente, pero que tendría que poner en el code para que ordene la columna? procedure TForm1.DBGrid2TitleClick(Column: TColumn); begin ????? end; Se puede en el DBGrid de delphi 2005, quitar las líneas de separación de columnas, pero sólo en las celdas de abajo no las de los títulos? Lo he probado en opciones dgcollines false, pero quita todas las líneas, las de los títulos y las de las celdas de abajo. Quiero que la parte de abajo de las celdas aunque tengan datos en cada columna, que cada línea sea una sola celda. Se puede hacer? |
El evento ontitleclick valdría para cada columna del DBGrid?
Perdonar otra pregunta.
Si el evento ontitleclick, es del DBGrid. Como se puede poner a cada columna de DBGrid el evento para que ordene su columna? procedure TForm1.DBGrid2TitleClick(Column: TColumn); begin ????? end; |
Hola de nuevo
Adjunto te envío un ejemplo que construyó un antiguo miembro de estos foros muy honorable por cierto, se trata del compañero Cadetill, está basado en el dbgrid de las RX. Si lograste bajar el componente échale una mirada.
Es válido aclarar que el ejemplo está diseñado para mostrar las ventajas de este componente, nótese que no ordena los datos, para hacer que ordene basta con agregar un par de líneas de código llamando a los métodos apropiados del Dataset asociado. Saludos |
Bueno, de hecho cargar en memoria es como toca en cliente/servidor 3 niveles...
Por otro lado, por defecto tiene ese comportamiento pero se puede hacer una carga por tandas de registros, por codigo, etc... En esencia, si el Grid de DevExpress no hace lo que deseas, no lo hace nadie... Aunque en tu caso, supongo que seria mejor el http://www.delphi-gems.com/VirtualTreeview/VT.php mas que nada porque es mas natural por ser en forma de arbol... Pero el grid de devexpress da la talla y estoy casi seguro viene con un ejemplo de lo que buscas. |
La franja horaria es GMT +2. Ahora son las 22:12:47. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi