IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Forms Oracle Discussion :

[FORMS 6] Evènement clavier


Sujet :

Forms Oracle

  1. #1
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut [FORMS 6] Evènement clavier
    Bonjour,

    Dans un écran Forms, une de mes zones de saisie peut être modifiée par :

    • l'utilisateur lorsque le focus est dans la zone
    • l'écran lui même qui suite à un calcul modifie la zone


    J'ai besoin de savoir si c'est l'utilisateur qui a modifié la zone, ou si c'est l'écran.
    Il se trouve que lorsque le focus est sur cette zone, l'écran peut également modifier la valeur de cette zone (donc pas question de stocker la valeur de la zone sur le KEY-PREV-ITEM et de la comparer sur le KEY-NEXT-ITEM).

    Comment faire ?
    Je ne connais aucun trigger qui se déclenche sur la modification par le clavier d'une zone.

    Merci beaucoup pour vos réponses.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 075
    Points
    19 075
    Par défaut
    il n'y a pas une variable qui permet de récupérer le nom de l'item qu'on vient de quitter ? Si le focus n'est pas dans ton item ou ne vient pas d'un autre item alors c'est la fenêtre qui a modifié la valeur... Et sinon, c'est pas plus simple de mettre un flag dans le code exécuté par la fenêtre ?

  3. #3
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    que voulez-vous dire par "l'écran peut également modifier cette zone " ?
    qui est l'écran ?

  4. #4
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Merci de l'intérêt que vous portez à mon problème.

    FRED_D :
    Je travaille dans un écran très complexe (le fmb a une taille > 8Mo), beaucoup de triggers et de proc/fonct. peuvent modifier cette zone, positionner des flags partout où l'écran la modifie pour savoir que ce n'est pas l'utilisateur qui a changé la valeur ne ferait que l'alourdir au niveau maintenance.

    SheikYerbouti :
    Ce que j'entend par "l'écran peut également modifier cette zone" : des triggers ainsi que des unités de programme recalculent cette zone.

    L'équivalent d'un évènement "KEY-PRESSED" n'existe vraiment pas sous Forms ?

  5. #5
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Je crains qu'il n'existe aucun moyen de différencier la provenance de la modification.
    KeyPressed n'est effectivement pris en compte.
    Par contre, le trigger When-New-Item-Instance est activé lorsque le curseur arrive dans la zone, mais pas lorsqu'une fonction en modifie le contenu...

  6. #6
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SheikYerbouti
    Je crains qu'il n'existe aucun moyen de différencier la provenance de la modification.
    KeyPressed n'est effectivement pris en compte.
    Par contre, le trigger When-New-Item-Instance est activé lorsque le curseur arrive dans la zone, mais pas lorsqu'une fonction en modifie le contenu...
    C'est bien ce qu'il me semble aussi.
    J'ai vu qu'on peut utiliser les API Windows via Forms : ils en parlent vaguement dans l'aide et dans certains forums, mais j'ai l'impression que ça ne me mènera nulle part.

    Je vais devoir encore une fois "bidouiller" une astuce

  7. #7
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Sinon utiliser un petit PJC ou Java Bean en lui collant un écouteur clavier.

  8. #8
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SheikYerbouti
    Sinon utiliser un petit PJC ou Java Bean en lui collant un écouteur clavier.
    Avec des outils externes je peux bien sur y arriver.
    Mais ça serait trop facile ! Vis-à-vis de nos clients et de notre fonctionnement, on ne peut pas faire ça.

    En tout cas, merci pour votre aide.

  9. #9
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Ce qui me chiffone dans tout ça, c'est à quel moment vous voulez savoir qui a modifié.
    En effet, la zone peut être modifiée à tout moment par le code.
    L'info est-elle simplement de savoir, à l'enregistrement, que l'utilisateur a modifé à un moment ou un autre ?

  10. #10
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SheikYerbouti
    Ce qui me chiffone dans tout ça, c'est à quel moment vous voulez savoir qui a modifié.
    En effet, la zone peut être modifiée à tout moment par le code.
    L'info est-elle simplement de savoir, à l'enregistrement, que l'utilisateur a modifé à un moment ou un autre ?
    Ce n'est pas lors de l'enregistrement, c'est lors de la saisie des données dans l'écran.

    La zone en question est à la fois une zone saisissable ET calculée.

    Si la valeur de la zone est une valeur saisie au clavier => alors j'applique le calcul pour mettre à jour ma zone (une nouvelle valeur va alors être affectée à ma zone).
    Si la valeur de la zone a été calculée => alors il ne faut rien faire.

    Hors, je ne peux pas faire la différence entre une saisie clavier et une modification par l'écran => donc le calcul se ré-itère stupidement à chaque WHEN-VALIDATE-ITEM de la zone.

    C'est résolvable : mais ça sera un jeu de flags positionnés ici et là... au final, c'est null et compliqué à maintenir.

  11. #11
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Voici un truc interessant à mettre sur l'item en question

    When-New-Item-Instance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :global.var1 := :messages.texte ;
    When-Validate-Item:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if :global.var1 <> :messages.texte then
    	message('modif !!!');
    end if ;
    A creuser...

  12. #12
    Expert éminent sénior
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Points : 11 862
    Points
    11 862
    Par défaut
    Encore mieux:

    trigger de niveau form : When-Timer-Expired:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if :texte <> :global.var Then
    	message('*** modif user ***');
    end if ;
    trigger When-New-Item-Instance sur l'item:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE 
        timer_id Timer; 
    BEGIN 
        :global.var := :texte ;
        timer_id := CREATE_TIMER('timer', 800, REPEAT); 
    END;
    trigger Post-Text-Item sur l'item:

    de cette façon, seul le changement par l'utilisateur déclenche le message dans le trigger When-Timer-Expired

  13. #13
    Yoh
    Yoh est déconnecté
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par SheikYerbouti
    Voici un truc interessant à mettre sur l'item en question

    When-New-Item-Instance:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :global.var1 := :messages.texte ;
    When-Validate-Item:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if :global.var1 <> :messages.texte then
    	message('modif !!!');
    end if ;
    A creuser...
    Effectivement, j'ai l'impression que je vais solutionner mon problème avec le WHEN-NEW-ITEM-INSTANCE.

Discussions similaires

  1. Message système - Evénement clavier
    Par TOTO32 dans le forum Langage
    Réponses: 2
    Dernier message: 13/12/2007, 17h15
  2. FRM-10200 sous Forms 10G - raccourci clavier
    Par lanssard dans le forum Forms
    Réponses: 1
    Dernier message: 23/10/2007, 13h56
  3. pb avec c# et windows forms et touches clavier
    Par javel_man dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/02/2007, 15h21
  4. Evénements clavier et souris !
    Par Franck.H dans le forum SDL
    Réponses: 7
    Dernier message: 19/07/2006, 21h11
  5. [Avancé][keyboard] evènements clavier dans le système
    Par thecaptain dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/10/2005, 01h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo