 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
rockman Ens

Registrado: 13 Mar 2004Mensajes: 44
|
Publicado: Mie 17 Mar, 2004 12:59 am Asunto: Recorrer un menú |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Mie 17 Mar, 2004 9:22 am Asunto: |
|
|
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.. _________________
 |
|
| Volver arriba |
|
 |
rockman Ens

Registrado: 13 Mar 2004Mensajes: 44
|
Publicado: Mie 17 Mar, 2004 10:17 pm Asunto: |
|
|
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 |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Jue 18 Mar, 2004 1:05 am Asunto: |
|
|
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 _________________
 |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|