Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-05-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Que estoy haciendo mal

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;
//------------------------------------------------------------------------------
//****************************************[ Funcion para Abrir Los Form ]*******
// -----------------------------------------------------------------------------
//Unidad:         Nombre del Form a abrir   
//NivelAcceso:    Segun La Propiedad TAG de la action nos permite pasar o no
//ModoAbrir:      Abre el Form 1 En Showmodal 0 en Show
//NomModulo:      Nombre del modulo para mensajes de error
//------------------------------------------------------------------------------
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 [-]
//------------------------------------------------------------------------------
//******************************************************[ CompruebaNivel ]******
//  16/02/2011  JLGT compara un nivel con otro si es igual o mayo devuelve true
//------------------------------------------------------------------------------
//  En pricipio para comprobar niveles de ususario segun el tag y un nivel dado
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
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

Código Delphi [-]
//  Application.CreateForm(TFFamilias, FFamilias);

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.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 24-05-2011 a las 13:09:32.
Responder Con Cita
  #2  
Antiguo 24-05-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Se me olvido Comentar si pongo el código que uso normalmente funcion, os pongo el código

Código Delphi [-]
procedure TFMenuPrincipal.A_AFamiliasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************[ LLAMADA A FAMILIAS ]*******
//------------------------------------------------------------------------------
begin
   if CompruebaNivel(A_AFamilias.Tag,VarNivelUsusario)=true then
   begin
        try
          if not Assigned(FFamilias) then
          begin
           FFamilias:=TFFamilias.Create(nil);
            FFamilias.ShowModal;
          end else FFamilias.ShowModal;
        except
           ShowMessage('Se ha producido un error al intentar abrir el modulo [  Familias  ]'+#13
                       +#13+#13+#13+
                       'Si persiste el Error, por favor pongase en contacto con el servicio Técnico');
        end;
    end
    else
    begin
       ShowMessage('Debe se un usuario con nivel '+IntToStr(A_AFamilias.Tag)+' para entrar en esta opción');
    end;
end;
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #3  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #4  
Antiguo 24-05-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Gracias, Muchas gracias Ecfisa, funciono perfectamente, siento que el código sea un poco lioso, te debo una caña, cuando quiera pasa por la taberna que esta paga.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 24-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Cita:
Empezado por José Luis Garcí Ver Mensaje
Gracias, Muchas gracias Ecfisa, funciono perfectamente, siento que el código sea un poco lioso, te debo una caña, cuando quiera pasa por la taberna que esta paga.
Quedamos así, en un rato nos encontramos para disfrutar la cañita...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 24-05-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vamos a ver, vamos a ver... esos títulos, esos títulos
Responder Con Cita
  #7  
Antiguo 24-05-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Culpa Mía, mi intención era llamarlo que estoy haciendo mal en esta función, eso después de desechar, títulos como

Maldita Función
Hija de su madre
y mi preferida, el Demonio te lleve,
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Que estoy haciendo mal ? piolillo Internet 8 28-07-2011 17:23:24
Uso de clases, ¿que estoy haciendo mal? gerardorom C++ Builder 2 26-12-2007 15:35:38
Que estoy haciendo Mal esimon SQL 4 04-07-2006 21:55:25
Que estoy Haciendo mal jostrix PHP 1 01-11-2004 01:29:16


La franja horaria es GMT +2. Ahora son las 09:57:07.


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
Copyright 1996-2007 Club Delphi