Ver Mensaje Individual
  #11  
Antiguo 22-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Reputación: 20
amadis Va por buen camino
EUREKA dijo Arquimedes

En contra de lo que hace unos minutos afirmaba, en realidad si había un código mio que activaba todos los timer de todos los forms.

Y era un procedimiento que utilizo para Activar o Desactivar funciones se acuerdo al usuario logueado al sistema.
Y lo que hace el procedimiento es dar ENABLED TRUE, a los componentes de acuerdo a su TAG, y al valor asignado al usuario.

Y por si no me había dado cuenta los TIMER son un componente mas aunque invisibles... y también los estaba activando

Aquí debajo dejo el procedimiento que causaba el misterio. Alguna vez lo tomé de un hilo de aqui sobre control de usuarios. Así que si alguien más usa esta forma de control deberá prestar atención a los timer.

Código Delphi [-]
procedure NivelAcceso(aForm: TForm; const UserAccessLevel: Integer);
var
  PInfo  : PPropInfo;
  i, vTag: Integer;
begin
  with aForm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin      
          if (GetPropInfo(Components[i].ClassInfo, 'Enabled') <> nil) and
             (GetPropInfo(Components[i].ClassInfo, 'Tag') <> nil)
             then
                begin
                  if GetOrdProp(Components[i], 'Tag') > UserAccessLevel
                   then SetOrdProp(Components[i], 'Enabled', Integer(False))

                  else
                    SetOrdProp(Components[i], 'Enabled', Integer(True));
                end;
    end;
  end;
end;

Lo solucioné agregando el CLASSNAME del componente así.


Código Delphi [-]
procedure NivelAcceso(aForm: TForm; const UserAccessLevel: Integer);
var
  PInfo  : PPropInfo;
  i, vTag: Integer;
begin
  with aForm do
  begin
    for i := 0 to ComponentCount - 1 do
    begin
       if Components[i].ClassName <> 'TTimer'
       then
        begin
          if (GetPropInfo(Components[i].ClassInfo, 'Enabled') <> nil) and
             (GetPropInfo(Components[i].ClassInfo, 'Tag') <> nil)
             then
                begin
                  if GetOrdProp(Components[i], 'Tag') > UserAccessLevel
                   then SetOrdProp(Components[i], 'Enabled', Integer(False))

                  else
                    SetOrdProp(Components[i], 'Enabled', Integer(True));
                end;
        end;
    end;
  end;
end;
Responder Con Cita