Hola compañeros, como siempre rrecurro a vosotros ya que llevo un día perdido por culpa de la siguiente funcion
Código Delphi
[-]function TFMenuPrincipal.AbrirForms(Unidad:TClass;NivelAcceso:TAction;ModoAbrir:Integer;NomModulo:string):Boo lean;
var Modulo:TForm;
Modf:string;
begin
if CompruebaNivel(NivelAcceso.Tag,VarNivelUsusario)=true then
begin
try
Modf:= Copy(Unidad.ClassName,2,Length(Unidad.ClassName));
Modulo:=tform(Modf);
if not Assigned(&Modulo) then
begin
Modulo:=TForm(Unidad).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('Se ha producido un error al intentar abrir el modulo [ '+NomModulo +' ]'+#13
+#13+#13+#13+
'Si persiste el Error, por favor pongase en contacto con el servicio Técnico');
Result:=False;
end;
end
else
begin
ShowMessage('Debe se un usuario con nivel '+IntToStr(NivelAcceso.Tag)+' para entrar en esta opción');
Result:=False;
end;
end;
La llmada la hago de la siguiente manera
Código Delphi
[-]AbrirForms(TFFamilias,A_AFamilias,1,'Familias');
La funcion Compruebanivel es
Código Delphi
[-]function CompruebaNivel(tag, nivel:Integer):Boolean;
begin
if tag<=nivel then Result:=True
else Result:=False;
end;
y el prollecto ya he probado con
Código Delphi
[-] Application.CreateForm(TFFamilias, FFamilias);
y con
El problema que detecto es que cunado pasa por la unidad de asignación no entra pasa por lo tanto al else y aún asi me da el error de las lineas
Código Delphi
[-] ShowMessage('Se ha producido un error al intentar abrir el modulo [ '+NomModulo +' ]'+#13
+#13+#13+#13+
'Si persiste el Error, por favor pongase en contacto con el servicio Tecnico');
Se supone que al leer la variable modulo, deberia desirme si esta asignada o no, pero ni idea.