Ver Mensaje Individual
  #6  
Antiguo 13-09-2011
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.474
Reputación: 21
newtron Va camino a la fama
Hola.

Yo lo que hago es tener en una tabla solamente las opciones del menú que van a estar habilitadas guardando el caption del menú. Cuando se ejecuta el programa deshabilito primero todas las opciones del menú y luego me recorro la tabla habilitando las opciones que están en ella. En la tabla guardo el texto del menú de arriba +'#' + las opciones del menú.

Código:
      // Primero deshabilito todo
      for N:=0 To MainMenu.Items.Count-1 do begin
        for M:=0 To MainMenu.Items[N].Count-1 do begin
          MainMenu.Items[N].Items[M].Enabled := False;
        end;
      end;
      // Habilito opciones de la tabla
      DataModule1.EDBQuery1.first;
      while not DataModule1.EDBQuery1.Eof do begin
        sAux:=DataModule1.EDBQuery1.FieldByName('OPCION').AsString;
        for N:= 0 to MainMenu.Items.Count-1 do begin
          if StrTran(MainMenu.Items[N].Caption,'&','') = Copy(sAux,1,Pos('#',sAux)-1) then begin
            for M:=0 To MainMenu.Items[N].Count-1 do begin
              if Copy(sAux,Pos('#',sAux)+1,100)=MainMenu.Items[N].Items[M].Caption then begin
                MainMenu.Items[N].Items[M].Enabled := True;
                break;
              end;
            end;
          end;
        end;
        DataModule1.EDBQuery1.Next;
      end;
Aclaro: strtran es una función que tengo para buscar y sustituir, en este caso la uso para que ignore el carácter '&' de los textos de los menús.

Saludos
__________________
Be water my friend.
Responder Con Cita