|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
Bonjour,
Dans un écran Forms, une de mes zones de saisie peut être modifiée par :
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. |
|
|
00
|
|
|
#2 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
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 ?
|
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
que voulez-vous dire par "l'écran peut également modifier cette zone " ?
qui est l'écran ?
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
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 ? |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
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...
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#6 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
Citation:
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 |
|
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Sinon utiliser un petit PJC ou Java Bean en lui collant un écouteur clavier.
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#8 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
Citation:
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. |
|
|
|
00
|
|
|
#9 |
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
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 ?
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
|
|
00
|
|
|
#10 | |
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
Citation:
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. |
|
|
|
00
|
|
|
#11 | ||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Voici un truc interessant à mettre sur l'item en question
When-New-Item-Instance: When-Validate-Item: Code :
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||
|
|
00
|
|
|
#12 | ||||
![]() ![]() ![]() Inscription : mai 2003 Messages : 6 533 ![]() |
Encore mieux:
trigger de niveau form : When-Timer-Expired: Code :
Code :
de cette façon, seul le changement par l'utilisateur déclenche le message dans le trigger When-Timer-Expired
__________________
Rédacteur Oracle (Oracle ACE) Guide Oracle ,Guide PL/SQL, Guide Forms 9i/10g, Index de recherche Je ne réponds pas aux questions techniques par MP Blogs: Forms-PL/SQL-J2EE - Forms Java Beans |
||||
|
|
00
|
|
|
#13 | |||
|
Candidat au titre de Membre du Club
![]() Inscription : juillet 2002 Messages : 56 ![]() |
Citation:
|
|||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com