Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
Yo en estos casos, cambio el nombre al componente y recompilo, para que vayan saliendo todas líneas donde se usa.
Cuidado con los with que a veces juegan malas pasadas.
Incluso alguna vez un IF...THEN (sin begin) ha ejecutado menos líneas de las esperadas y me ha dado alguna sorpresa.
Antes de postear hice lo que comentaba Casimiro, y tambien renombré, y solo hay una llamada al enabled true, que es la correcta.

Luego descubrí que todos los timer que ponga se activan solos, por lo que veo en el ON CREATE, del proyecto, o al menos eso sospecho al ver unos SHOWMESSAGE(''); que les puse a los timer para rastrear.
Responder Con Cita
  #2  
Antiguo 22-07-2021
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por amadis Ver Mensaje
Antes de postear hice lo que comentaba Casimiro, y tambien renombré, y solo hay una llamada al enabled true, que es la correcta.
¿Y active?
Responder Con Cita
  #3  
Antiguo 22-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
No hay Nada mio que active los timer, estoy tratando de desarmar todo para llegar al fondo.

Es un misterio realmente porque cualquier timer nuevo que ponga, en cualquier form del proyecto lo dejo DISABLED, y al ejecutar SE EJECUTA
Responder Con Cita
  #4  
Antiguo 22-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 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
  #5  
Antiguo 22-07-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por amadis Ver Mensaje
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

Lo solucioné agregando el CLASSNAME del componente así.

Ojo a otros componentes "no visuales" que puedas estar afectando.
Estoy pensando en TAction, TrayIcon, HotKeys, Notificaciones,... que no deban verse afectados por temas visuales o de permisos...

El hecho de poner TODOS los ENABLED a True o False, me parece "peligroso" y fuente de problemas futuros.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 22-07-2021
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 20
amadis Va por buen camino
Tienes toda la Razón German.

Los tag por defecto de los Componentes siempre estan en 0 por lo que no se DESACTIVARIAN NUNCA.

El caso que justo me hizo saltar la alarma fue el TIMER, que deberia activarse cuando yo quiera.

De todas formas por seguridad agregaré las clases que mencionas.

¿o seria mejor si pudiera afectar solo a componentes visuales?

¿como puedo saber si un componente es visual??.
Responder Con Cita
  #7  
Antiguo 23-07-2021
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.286
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por amadis Ver Mensaje
¿o seria mejor si pudiera afectar solo a componentes visuales?
¿como puedo saber si un componente es visual??.

Hay varios métodos de hacerlo.

Podrías utilizar las clases tal y como has hecho para filtrar las que no quieres que se vean afectadas.
En cuanto a los componentes visuales puedes probar a revisar las herencias. Se me ocurre que los componentes visuales "normalmente" derivan de TwinControl, pero habría que comprobar si esto se cumple en todos los casos. Y también revisarlo para componentes externos (si es que los usas).
También se podría revisaraquellos que poseen la propiedad Visible, aunque también habría que comprobar si se cumple en todos los casos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
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
Evitar programas que revelan passwords y activan botones. rhino0nt API de Windows 3 07-06-2010 11:37:07
Al abrir proyecto, hay forms que se crean solos defcon1_es Varios 12 20-11-2009 12:40:17
Numeros Float...cambian solos BlueSteel Varios 1 05-07-2007 22:43:58
no se activan iconos del toolbox en webforms aspx JuanErasmo .NET 0 11-01-2007 22:17:02
Cuando Activan la Pagina de Cadetill???? AGAG4 Varios 2 26-11-2004 21:23:51


La franja horaria es GMT +2. Ahora son las 14:59:46.


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