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;