Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Detectar cambios en formulario
Message
De
16/02/2006 14:02:27
Humberto Ramirez
H. Ayuntamiento de Colima
Colima, Mexique
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire d'écran & Écrans
Divers
Thread ID:
01096570
Message ID:
01096842
Vues:
15
Te cuento lo que hago.

Las clases de los controles tienen las siguientes propiedades y métodos:

Propiedad "FirstValue": Almacena el valor considerado "original" del control, es el valor base para determinar si el contenido del control es diferente cuando se modifica interactivamente (InteractiveChange) o programáticamente (ProgrammaticChange).
Propiedad "Changed": Almacena True/False si el contenido del control varió con respecto de su valor "original", yo hago la comparación en el evento "InteractiveChange" y le especifico al evento "ProgrammaticChange" que ejecute lo del "InteractiveChange".
Método "Start": Es el método que se utiliza para almacenar el valor actual del control y considerarlo como el valor original a verificar si cambió.
Propiedad "Started": Indica que el control ha sido "inicializado" con el método "Start" (True/False), por lo que debe ser verificado para ver si hubo cambios.


Después de cargar los controles con datos en el formulario, los inicializo:
Local lnControl
&& Inicia los valores de las propiedades de los controles que se utilizan
&& para determinar si hubo cambios en su contenido.
For lnControl = 1 To This.ControlCount
    If Pemstatus(Thisform.Controls(lnControl), 'Started', 5)
       This.Controls(lnControl).Start()
    Endif
Next
En el método del formulario para detectar si hubo cambios, el siguiente código basta:
&& Verifica si el contenido de un control fue modificado de su valor
&& original.
For lnControl = 1 To This.ControlCount
    If Pemstatus(Thisform.Controls(lnControl), 'Started', 5)
       If This.Controls(lnControl).Changed
          && Retorna verdadero si algún control fue modificado.
	  Return .T.
       Endif
    Endif
Next
Return .F.
Se verifica si el control tiene la propiedad "Started", esto evita que compare la propiedad "Changed" de controles que no derivan de la clase y no tienen la propiedad, como labels, shapes, command button, etc.

Bueno, espero te de una idea para tu solución, en caso de que te quieras ahorrar el costo de un Frame para utilizarlo sólo para esto.

Saludos.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform