A ver.... ¿N catálogos? Repito: un TMainMenu no es más que una forma árbol presentada en forma de menú:
MainMenu
+
|
+---MenuItem1
| +
| |
| +---MenuItem11
| | +
| | |
| | +-- ...
| |
| +---MenuItem12
| | +
| | |
| | +-- ...
| |
| +---MenuItem13
| .
| .
| .
| +---MenuItem1N
|
+---MenuItem2
| +
| .
| .
| .
|
+---MenuItemM
¿Al final que son 3? ¿O son N? ¿Los menúes? Es decir el primer nodo (o nivel) del árbol... ¿Los submenúes?
Siendo más preciso aún con la terminología un menú es justamente un nodo de nivel 1 del árbol (lo que yo denominé como MenuItem1..MenuItemM). Es decir, usando como ejemplo una aplicación de ofimática: Archivo, Edición, etc.
Los submenúes son en realidad las opciones que vemos dentro de cada uno de estos. Para archivo: Abrir, Guardar, Guardar como, etc. Son los MenuItemXX que puse en el árbol.
Luego es que para cada uno de éstos es que se pueden crear una 2da rama de submenúes. Por ejemplo, para un hipotético "Pegar como" podríamos poner subopciones como "... Imagen", "... Texto", "Objeto OLE", etc.
Especifica adecuamente cual es la estructura de todo tu MainMenu en forma completa. Describe puntualmente cual de todo ese menu pretendes dar "dinamismo".
Pero si es como esto último que describes:
Bueno, no exactamente "armar" el menú, sino comprobar que el usuario que ha entrado tiene o no los permisos para usar o no un ítem del menú.
Entonces ya es otra cosa y me parece que la pregunta las has liado y llevado hacia otro lado. ¡Haber dicho antes! Creo recordar que ya en el foro se ha dicho sobre el tema, y hasta creo que se ha puesto un ejemplo.
Solución clásica: apoyarse en el uso de TAG. Asociar a cada opción del menú un valor numérico que indica el nivel mínimo permitido... luego en la tabla usuario asociarle justamente a su perfil un valor.
Al momento de mostrar el form simplemete se lee el valor que tiene el usuario y si el leído del usuario cumple la condición mayor o igual al de TAG se asume justamente que tiene dicho permiso. ¿Se entiende o lo explico de nuevo?
Saludos,