Ver Mensaje Individual
  #3  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola José Luis.

Hice unos pequeños cambios y funciona sin errores y respetando los niveles de acceso. Te pongo las modificaciones junto con mis disculpas por recortar el código, pero fué a fín de simplificarme la lectura.

Esta fué la prueba:
Código Delphi [-]
...
procedure TFMenuPrincipal.FormCreate(Sender: TObject);
begin
  VarNivelUsuario:= 0;
end;

function CompruebaNivel(Tag, Nivel:Integer):Boolean;
begin
  Result := Tag <= Nivel;
end;

function TFMenuPrincipal.AbrirForms(AClass:TFormClass; NivelAcceso:TAction;
         ModoAbrir:Integer; NomModulo:string):Boolean;
var
  Modulo:TForm;
begin
  if CompruebaNivel(NivelAcceso.Tag, VarNivelUsuario) then
  begin
    try
      Modulo:= Application.FindComponent(Copy(AClass.ClassName, 2, MaxInt)) as TForm;
      if not Assigned(Modulo) then
      begin
        Modulo:= AClass.Create(nil);
        if ModoAbrir = 1 then
          Modulo.ShowModal
        else
          Modulo.show;
      end
      else
      begin
        if ModoAbrir = 1 then
          Modulo.ShowModal
        else
          Modulo.show;
      end;
      Result:=True;
    except
      ShowMessage('error '+NomModulo);
      Result:=False;
    end;
  end
  else
  begin
    ShowMessage('Usuario con nivel '+IntToStr(NivelAcceso.Tag)+' requerido');
    Result:=False;
  end;
end;

procedure TFMenuPrincipal.ActionExecute(Sender: TObject);
begin
  if CompruebaNivel(FFamilias.Tag, VarNivelUsuario)=true then
  begin
    try
      if not Assigned(FFamilias) then
      begin
        FFamilias:= TFFamilias.Create(nil);
        FFamilias.ShowModal;
      end
      else
        FFamilias.ShowModal;
    except
      ShowMessage('error al abrir el modulo');
    end;
  end
  else
  begin
    ShowMessage('Usuario con nivel '+IntToStr(FFamilias.Tag)+' requerido');
  end;
end;

procedure TFMenuPrincipal.Button1Click(Sender: TObject);
begin
 // Action3 (Tag:2) da error nivel requerido, con Action1(Tag:0) muestra FFamilias correctamente
  AbrirForms(TFFamilias, Action3, 1 , 'Familias'); 
end;

end.
De todas maneras vas a tener que probarlo bién, ya que como decimos aca "en la cancha se ven los pingos (caballos)"


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-05-2011 a las 14:37:37.
Responder Con Cita