![]() |
Seleccionar columnas a mostrar en DBGrid
Hola a todos... soy nuevo en Delphi y estoy haciendo una agenda y mi pregunta es la que sigue:
Tengo un DBGrid con conexion Zeos con MySql... lo que quiero hacer es que en tiempo de ejecución, al darle 2do botón del mouse sobre CUALQUIER columna del grid me abra un menú contextual donde me permita seleccionar através de checkbox o algo parecido, que columnas quiero mostrar y/o ocultar. Por ejemplo: Corro el programa y tengo la columna Nombre, Telefono y Celular. YO USUARIO no quiero ver la columna ''Celular'' entonces hago doble click sobre cualquier columna y veo un menu contextual con Nombre, Telefono y Celular y SOLO destildo (deselecciono) ''Celular'' y la columna se refresca quedando solo Nombre y Telefono. Disculpas por la extensión de la pregunta pero como leí en las reglas debo ser bien específico con la pregunta. Desde ya gracias. |
Bueno... voy a tratar de ayudarte un poco:
Para hacer lo que pretendes hay que utilizar un Componente PopupMenu al que le vamos a cargar los item en tiempo de ejecucion. Bueno... manos a la Obra Para cargar los item al PopupMenu en Tiempo de Ejecucion es necesario que el DataSet(ZQuery o ZTable al que está conecatado el DBGrid) esté Abierto o Activo, Por ello vamos a utilizar el evento AfterOpen (Despues de Abrir ) de ese dataset y poner el siguiente Código: Para Conseguir ocultar o visualizar la columna Específica del DBGrid tenemos que crearnos un procedimiento(En realidad un manejador de Evento para cada evento OnClick de cada Item del PopupMenu), en nuestro caso es sufiente crearnos un solo procedure de la siguiente forma > Ahora nos toca Asignar el evento OnClick a cada Item, lo que podemos hacer es agregar una linea de código al evento AfterOpen (Que anteriormente hemos utilizado)del dataset al que está enganchado el DBGrid quedando dicho evento finalmente de la siguiente forma:
Para Mostrar el PoPupMenu cuando el usuario haga Doble Click en la columna del DBGrid , pues para serte franco yo mejor usaría para eso el Evento OnTitleClick ( Al hacer un Clik en el Titulo) del DBGrid, ya que tendriamos que complicarno un poco el controlar que el usuario dé dos click y no uno ;), por eso sugiero usar el evento OnTitleClick anteriomente mencionado para no complicarnos demasiado.;) Bueno..., para mostrar el PopupMenu al hacer click en cualquier columna ( click en cualquier título de columna) podemos poner el siguiente código en el evento OnTitleClick del DBGrid: Y eso es todo amigo....;) Saludos...:) |
aunque la explicación de rgstuamigo es muy clara, otra opcion es la ultimgrid de las Jedi, ya tiene lo que necesitas. :)
|
Consigo hacer esto sin escribir codigo, y ademas lo hago persistente entre sesiones para el usuario, comorrrrr?
El componente TJvDBGrid de la suite open source JVCL permite mostrar el dialogo para seleccionar/deseleccionar columnas mediante la propiedad TitleArrow y hacer persistente los cambios con la propiedad IniStorage.. |
Efectivamente... :eek: :D se puede hacer tanto con el JvDBGrid o con JvDBUltimGrid... vaya :rolleyes: eso me pasa por querer inventar de nuevo la rueda...:D
Saludos...:) |
Muchas gracias
Gracias RGStuamigo por la ayuda igual... intente instalar el jvcl pero voy a tool palette y no aparece el TJDBgrid que me decis.
Baje el Jvcl y fui a la carpeta install de jvcl y abri el projecto y le di F9 instale ese y tambien el jcl lo mismo. pd: Tengo instalado el delphi en la particion "D:\Arquivos\Arquivos de programas D\7.0\Embarcadero\RAD Studio\7.0" pero los proyectos y bpl estan en "C:\Users\usuarioX\Documents\RAD Studio" como por defecto será por eso?? :confused: |
en la versión 3.40 que es la que tengo instalada, esta en la paleta Jv Data Controls (estan las dos opciones juntas).
Saludos :) |
La franja horaria es GMT +2. Ahora son las 04:37:42. |
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