FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#21
|
|||
|
|||
TcxPopupMenuInfos
Buen día, me pasa algo similar al problema que describiste.
El tema es que cuando uno hace click derecho sobre la grilla TcxGrid se dispara un popup construído por Developer Express (TcxGridPopupMenu) con opciones típicas como las de mostrar zona de Grupos, pies, alineación, mejorar el ancho de columnas, orden ascendente, descendente, selector de campos, etc. Yo quiero que además de esos se muestre otros que le agrego como TcxPopupMenuInfo, por ejemplo un ítem de menú para expandir o contraer todo, que se active cuando se agrupa la información de la grilla por alguna columna. En el TcxPopupMenuInfo le tildo gvhtExpandButton... Pero ese ítem de menú nunca aparece agregado a los estándares q trae el TcxGridPopupMenu. Cómo hacer q aparezca, que sea visible, y que realmente haga la tarea q debe hacer?. Muchas gracias |
#22
|
||||
|
||||
Bienvenido a clubdelphi, NizamUlMUlk, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
|
#23
|
|||
|
|||
Después de tanto tiempo veo este post... Nunca supe la respuesta...
Por lo que he leído, hay que trabajar como rinoceronte para hacer que funcione como uno espera.
Corríjanme si me equivoco... Todo ocurre en el evento OnPopup del componente TcxGridPopupMenu. Allí el método ofrece una variable (AHitTest: TcxCustomGridHitTest) la cual hay que evaluar más o menos así: if (AHitTest is TcxGridRecordCellHitTest) then //identifico un record ... else if (AHitTest is TcxGridHeaderHitTest) then //identifico una cabecera de columna ... else if (AHitTest is TcxGridGroupByBoxHitTest) then //identifico una columna de grupo ... if ASenderMenu is TcxGridStdHeaderMenu then // identifico que el disparador es el built-in menu .. //acá puedo agregarle ítems al menú por defecto de la forma: TPopupMenu(ASenderMenu).Items.Add(NewItem('E&xpandir', TextToShortCut('Ctrl-X'), False, True, Expandir, 0, 'pmCustomEntry')); TPopupMenu(ASenderMenu).Items.Add(NewItem('E&xpandir', TextToShortCut('Ctrl-X'), False, True, Contraer, 0, 'pmCustomEntry')); .. donde los procedimientos Expandir y Contraer son procedure TForm1.Expandir(Sender: TObject) ; begin <aGrid>.ActiveView.DataController.Groups.FullExpand; end; procedure Contraer(Sender: TObject); begin <aGrid>.ActiveView.DataController.Groups.FullCollapse; end; Entonces con AHitTest identifico en que zona se hizo el click, con lo cual puedo habilitar o deshabilitar popups. ej: menuExpandir.Enabled := (AHitTest is TcxGridGroupByBoxHitTest) and (not <aGrid>.ActiveView.Controller.FocusedRow.Expanded); menuContraer.Enabled := (AHitTest is TcxGridGroupByBoxHitTest) and <aGrid>.ActiveView.Controller.FocusedRow.Expanded; Pero, eso si, hay que tener popups independientes al menú built-in, porque éste solo se dispara en las cabeceras de columna. Aunque se lo puede lanzar llamándolo desde el evento OnMouseDown del GridView.... haciendo que en su evento OnPopup se construya con los ítems que uno quiere, y habilitando/deshabilitando cada ítem de acuerdo a la info que recabe de AHitTest, y otros datos extra.... como en el ejemplo mostrado arriba Entonces, en síntesis, no se puede hacer que sea automático, hay q laburar mucho... De hecho conviene hacer una clase que herede de TcxGridPopupMenu y dotarla de estos comportamientos para que se haga "automático" para los "descendientes".... Q tul? |
#24
|
||||
|
||||
Recuerda poner los tags al código fuente, ejemplo:
Gracias |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Click derecho en grupo de un TcxGrid | cmfab | Varios | 0 | 07-09-2011 13:05:24 |
DBGrid Agrupado | Vlady | OOP | 8 | 16-04-2008 09:58:39 |
capturar click en checkbox | manolop | Varios | 4 | 12-03-2007 23:37:36 |
Como podria crear un reporte agrupado. | DANNY777 | Impresión | 1 | 24-01-2007 17:54:38 |
capturar click en la columna de titulo StringGrid | poliburro | Varios | 10 | 23-01-2006 12:12:21 |
|