Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Deshabilitar Opciones de Un MainMenu (https://www.clubdelphi.com/foros/showthread.php?t=73594)

hondaalberto 03-05-2011 23:12:18

Deshabilitar Opciones de Un MainMenu
 
Buenas Tardes Amigos

Estoy haciendo una aplicación en delphi7 utilizando sql server como base de datos y necesito hacer un formulario para el mantenimiento de los usuarios en el cual yo pueda indicar cuales ITems del Menu un usuario determinado puede ver.
Estoy utilizando el componente mainMenu que trae delphi por defecto y las opciones que tiene dicho menú actualmente son las siguientes:

Mantenimientos
Usuarios
Clientes
Proveedores
Empleados
….
Tengo pensado colocar en el mantenimiento de usuarios un dbcheckbox para manejar cada opción del menú en la cual si esta marcado significa que el usuario tiene acceso al mismo de lo contrario no.
Mi problema consiste en que no se como hacer para inhabilitarle una opción del menú desde el mantenimiento de usuarios, lo demás del mantenimiento ya esta resuelto.

Muchas Gracias de Antemano por la ayuda que puedan darme con esto.

oscarac 03-05-2011 23:22:12

puedes hacer asi

Código Delphi [-]
 
frmmain.menuPrincipal.mnuMantenimiento.enable := False;

hondaalberto 04-05-2011 00:24:51

Muchas Gracias oscarac por tu Respuesta pero cuando coloco el codigo que me pusiste me da los siguientes errores:

[Error] Unit1.pas(59): Undeclared identifier: 'Mantenimientos'
[Error] Unit1.pas(59): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'


El Código que tengo es el siguiente siguiendo tu ejemplo:
FPrincipal.MenuPrincipal.Mantenimientos.enable:=false;

El Formulario donde esta el menu se llama "FPrincipal" el componente "MainMenu se llama "menú Principal" el Menú se llama Mantenimientos y tiene los submenus:

Usuarios
Clientes
Proveedores
Bancos

oscarac 04-05-2011 00:27:08

quiza te estas equivocando en algun nombre...

hondaalberto 04-05-2011 00:57:36

Revise todos los nombre de los componentes y todos estan tal cual como te escribi anteriormente y si cambio la palabra mantenimientos por Usuarios me devuelve solo estos dos errores:

[Error] Unit1.pas(62): Undeclared identifier: 'Usuarios'
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'

Revise todo ya a ver si esta utilizando algun nombre incorrecto y todo esta tal cual como lo coloque el mensaje anterior pero sigue dandome errores.

Gracias por tu tiempo...

ecfisa 04-05-2011 03:06:23

Hola.

Te pongo un ejemplo de como activar/desactivar cada uno de los items que dependen del MenuItem 'Mantenimiento' desde otro form.
Código Delphi [-]
...
type
  TForm2 = class(TForm)
    ComboBox1: TComboBox;
    procedure FormShow(Sender: TObject);
  private
     procedure ComboBox1Change(Sender: TObject);
  public
  end;
...
implementation 

uses Unit1;

procedure ItemOnOff(Ix: Integer);
begin
  with FPrincipal.MainMenu1 do
   Items[0].Items[Ix].Enabled:= not Items[0].Items[Ix].Enabled;
end;

procedure TForm2.ComboBox1Change(Sender: TObject);
begin
  ItemOnOff(ComboBox1.ItemIndex);
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  with ComboBox1 do
  begin
    Clear;
    Items.Add('Usuarios');
    Items.Add('Clientes');
    Items.Add('Proveedores');
    Items.Add('Usuarios');
    ItemIndex:= 0;
    OnChange:= ComboBox1Change;
  end;
end;
...
Mostra a Form2 con Show así tenés accesibles las dos ventanas al mismo tiempo y verificas los estados.

Un saludo.

hondaalberto 04-05-2011 15:01:43

Muchas Gracias ecfisa voy a probar y te dejo saber si me funciono asi, para que quede en el foro registrado de que podemos resolver un problema como ese de esa forma y le pueda servir a otros tambien.


La franja horaria es GMT +2. Ahora son las 09:11:54.

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