Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #21  
Antiguo 29-05-2012
NizamUlMUlk NizamUlMUlk is offline
Registrado
 
Registrado: mar 2010
Posts: 8
Poder: 0
NizamUlMUlk Va por buen camino
Talking 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
Responder Con Cita
  #22  
Antiguo 29-05-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bienvenido a clubdelphi, NizamUlMUlk, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Responder Con Cita
  #23  
Antiguo 10-08-2013
NizamUlMUlk NizamUlMUlk is offline
Registrado
 
Registrado: mar 2010
Posts: 8
Poder: 0
NizamUlMUlk Va por buen camino
Talking 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?
Responder Con Cita
  #24  
Antiguo 10-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

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


La franja horaria es GMT +2. Ahora son las 09:39:18.


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
Copyright 1996-2007 Club Delphi