Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Recorrer un menú

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Recorrer un menú Responder citando

He visto un tema similar, pero creo que no me vale

El caso, es que mi aplicación, después de logarse, determina los permisos de acceso, y dependiendo de estos permisos habilito o deshabilito las diferentes opciones del menu del formulario principal.

La forma que se me ha ocurrido es:

1.- Realizo una SELECT en la cual tengo los permisos a los cuales NO tiene acceso el usuario (esto lo hago así, porque me resultan más faciles los pasos siguientes)

2.- Recorro la Query, y por cada permiso, lo busco en el menu
Bueno... pues aquí me bloqueo.... no se como buscar en el menu.
He utilizado menu->Items->Find(query->FieldByName("campo")->AsString), pero siempre me devuelve NULL.

Mis preguntas son:

¿Que devuelve el Find, el caption del menu, o el nombre de ese MenuItem?

A mi me interesaría una función que devolviera el nombre del MenuItem.

¿Hay otra forma?

En el caso que no se pueda hacer esto....

¿Hay alguna forma de recorrer el menu y pasar por todas sus opciones?


Muchas gracias anticipadas
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Te pongo el siguiente Codigo, ya que Post, se parece a uno que puse hace mucho tiempo... te dejo la funcion.. algo explicativa...
Código:

//crear la referencia para el tipo de entrada con UAccesso
// crear los niveles de acceso para el usuario universal
    ModoTable(DataModule1->TPASS,1); // abrir y agregar el Primer registro
    if(DataModule1->TPASS->IsEmpty()){
               // componente    nose    Menu    Submenu
              // MainMenu1->Items[0].Items[0]->Items[1]->Caption;
          // este primer for, es para sacar las opciones principales
          // ejem "Menu Archivo" <-esta
          for(int ces=0; ces <= PRINCIPAL->MainMenu1->Items->Count-1; ces ++){
                // SACAR EL MENU PRINCIPAL
                DataModule1->TPASS->Append();
                    DataModule1->TPASSNIVEL->Value = "0"; // Acceso total
                    DataModule1->TPASSCOMANDO->Value = PRINCIPAL->MainMenu1->Items[0].Items[ces]->Caption;
                    DataModule1->TPASSHINT->Value    = PRINCIPAL->MainMenu1->Items[0].Items[ces]->Hint;
                    DataModule1->TPASSESTADO->Value=true;
                    DataModule1->TPASSMENU->Value = ces;
                    DataModule1->TPASSSUBMENU->Value = -1; // para reconocerlo, creo
                DataModule1->TPASS->Post();

            // este segundo for, es para sacas las sub opciones
            // ejemplo "Menu Archivo"
            //            "Grabar"  <-estas
            //            "salir"   <-estas
                for(int mar=0; mar <= PRINCIPAL->MainMenu1->Items[0].Items[ces]->Count-1;mar++){
                    if(PRINCIPAL->MainMenu1->Items[0].Items[ces]->Items[mar]->Caption!="-"){
                        DataModule1->TPASS->Append();
                            DataModule1->TPASSNIVEL->Value = "0"; // Acceso total
                            DataModule1->TPASSCOMANDO->Value = PRINCIPAL->MainMenu1->Items[0].Items[ces]->Items[mar]->Caption;
                            DataModule1->TPASSHINT->Value    = PRINCIPAL->MainMenu1->Items[0].Items[ces]->Items[mar]->Hint;
                            DataModule1->TPASSESTADO->Value=true;
                            DataModule1->TPASSMENU->Value= ces;
                            DataModule1->TPASSSUBMENU->Value = mar; // indice donde esta
                         DataModule1->TPASS->Post();
                    }
                }
          }
    }
    ModoTable(DataModule1->TPASS,0); // abrir y agregar el Primer registro

Esto es para sacar las Funciones del TMain menu, solo extraigo hasta las subOpciones,
y para asignarlos, presento los resultados de la tabla, que tiene el siguiente formato
Código:

NIVEL-COMANDO-HINT-ESTADO-MENU-SUBMENU
0-SALIR-SALIR DEL SISTEMA=TRUE-0-0 //PRIMER MENU 0,0

ESPERO te sirva en algo..
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Gracias Cesar, ya lo había visto en el foro alguna respuesta muy parecida dada por tí, pero....

A mi me da igual a que nivel se encuentra un elemento del menú, pero quiero recorrerlo entero, y esta forma es muy engorrosa si no sabes cuantos niveles tiene el menú, lo quiero hacer lo más flexible posible, ya que aún está en desarrollo, y ya cuenta con muchísimas entradas.

¿No existe ninguna otra forma?
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Es cuestion que alguien, lo puede hacer de otra, manera, pero te dire, que para extraer el comando habilitarlo y des habilitarlo, fue la unica manera que encontre para hacerlo.. yo puede habilitar o deshabilitar los comandos que yo quierea, o construir, y tipo de acceso dependiendo los niveles que se definan, en mi caso ,puedes definir hasta 10 niveles de acceso desde el Total, hasta el Restringido, que activar y desactivar las opciones, que yo quiera, bueno con decirte, que quien lo hace puede ser hasta el administrador del sistema, asignando, los comandos que el quiera que manejen los usuarios, te pongo como ejemplo, esto
nivel 0 - dueño
nivel 1 - administrador
nivel 2 - cajero
nivel 3 - vendedor.

y todos ellos pueden ser reconfigurables en tiempo de ejecucion..., asi no te estan llamando a cada rato, para reconfigurar, el sistema, sabes realmente me base en el comportamiento del PoleEdit.. para recstriccion de windows, pero esto a nivel de apliacion..
bueno saludos..
bye
_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.