Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-11-2004
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Poder: 0
walrus Va por buen camino
TPopupMenu dinámico

Hola. Quisiera saber la mejor manera de crear menús contextuales en un TreeView. Me explico:

Tengo un TreeView de 4 niveles. En cada nivel del árbol tengo que mostrar un menú popup diferente. En cada menú habrán operaciones propias del nivel del nodo seleccionado y comunes a todas las instancias de menú. ¿Cual es la mejor manera de hacerlo? ¿Creo en tiempo de diseño los 4 menus o mejor lo hago en tiempo de ejecución? ¿Qué evento es más apropiado?



Gracias por vuestro tiempo y vuestra atención.

Saludos.
Responder Con Cita
  #2  
Antiguo 04-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si los elementos de los menús son conocidos de antemano para cada nivel no veo ventaja alguna en crearlos dinámicamente.

Para activarlos puedes usar el evento OnMouseDown u OnMouseUp verificando que el parámetro Button sea igual a mbRight. Usa el método GetNodeAt del TreeView pasándole los parámetros X e Y del evento para determinar en qué nodo se hizo el click. Verifica que el nodo devuelto sea distinto de nil (es decir que realmente se hizo click sobre un nodo) y examina la propiedad Level del nodo para saber en qué nivel está y qué menú desplegar.

// Saludos
Responder Con Cita
  #3  
Antiguo 04-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Se podría crear un solo popup, y siguiendo el ejemplo de Roman, al tiempo de mostrarlo poner Visible a false de cada MenuItem que no se quiera ver.

No lo he hecho nunca, puede que funcione.

Yo normalmente uso el evento del Popup (OnPopup) para inhabilitar opciones.

PD: Creo que el popup tiene una opcion de AutoReduction Line, para que no se vean dos lineas separadoras consecutivas.

Saludos
Responder Con Cita
  #4  
Antiguo 04-11-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Lepe
Se podría crear un solo popup
¿Por qué? ¿Hay escasez de menús?

Creo que es complicarse la vida. Si los nodos son de naturaleza distinta ¿para qué complicarse con uno solo?

// Saludos
Responder Con Cita
  #5  
Antiguo 04-11-2004
walrus walrus is offline
Miembro
 
Registrado: ago 2004
Posts: 40
Poder: 0
walrus Va por buen camino
Gracias^2

Muchas gracias por contestar. Me han sido de gran utilidad vuestros sabios consejos. Finalmente, he creado 4 PopupMenus diferentes y como uso TActions no creo que se desperdicie demasiada memoria por ello y evito escribir código.

Gracias de nuevo.
Responder Con Cita
  #6  
Antiguo 05-11-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por roman
¿Por qué? ¿Hay escasez de menús?


Esto es nuevo: El mensaje que ha introducido es demasiado corto. Por favor, introdúzcalo de al menos 10 caracteres
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


La franja horaria es GMT +2. Ahora son las 10:00:00.


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