Un problème de priorité...

Résolu
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 10 juin 2005 à 12:42
perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006 - 10 juin 2005 à 14:17
Bonjour à tous et à toutes...
Merci d'avance à ceux qui prendrons la peine de répondre à mes interrogations...

Alors voilà mon problème :

Le Contexte :
Je développe une application sous vb6 (je suis débutant), j'utilise un contrôle MSflexgrid ("MSFlexGrid1") et une TextBox ("Text3") que je centre sur la cellule cliquée par l'utilisateur, pour lui donner l'impression de saisir directement dans le MSFlexGrid.

Le Fonctionnement :
Afin de saisir et de valider une valeur, l'utilisateur à 2 solutions : la touche ENTER et le Clique de souris...
J'utilise donc les méthodes telles que MSFlexGrid1_GotFocus, MSFlexGrid1_DblClick, MSFlexGrid1_EnterCell .... mais aussi pour la TextBox : Text3_LostFocus...

Le Problème :
Pour le fonctionnement avec la touche ENTER...no problemo, tout fonctionne parfaitement...
En revanche, pour le Clique de souris ba y a un hic !!!
Pour la saisie, c'est nickel, pour la validation LE PROBLEME.... !!!

Lorsque l'utilisateur clique sur une autre cellule du MSFlexGrid pour valider la saisie, la TextBox perd le focus (c'est la que j'en profite pour recopier la saisie de l'utilisateur dans la cellule appropriée) et là normalement tout devrais être nickel. Ce qui se passe c'est que finalement c'est comme ci l'utilisateur avait fais une multi sélection entre la cellule dans laquelle il vient de rentrer une valeur et la cellule sélectionnée pour valider la saisie !!!

Lorsque je me met en mode debug, je m'apperçois que toutes les méthode se grille la priorité !!!!
En cliquant sur le MsFlexgrid je rentre dans une cellule, donc MSFlexGrid1_EnterCell se met à tourner.... et soudain alors qu'il à pas fini son traitement , La textbox perd son focus, etc..

Bref c'est le bordel !!!!!!

Donc voili voilou, il y a un problème de priorité entre toutes les méthodes !!
j'ai mis des flag pour qu'il n'y ai pas de ré-entrance... met le problème, c'est que le simple fait de rentrer dans la méthode MSFlexGrid1_EnterCell (même sans exécuter le traitement qu'il y a avec) place le cadre de sélection sur la cellule cliqué !!!!
du coup je tourne en rond !!!

Je suis certain qu'il y a un truc à faire... mais je sais pas quoi !!!
Si qq a une réponse à me donner, ça serais vraiment sympa !!!

ba voilà merci à ceux qui prendrons cette peine...

3 réponses

perathoner Messages postés 90 Date d'inscription dimanche 5 novembre 2000 Statut Membre Dernière intervention 26 juillet 2006
10 juin 2005 à 14:17
D'abort merci de m'avoir répondu... aussi vite en plus !!!


Pour repondre à Nico1610. Ba ça je l'ais déjà fait... et ça fonctionne nickel.... mais en plus il faut (cf mon cahier des charges !!!) que l'utilisateur puisse effectuer une saisie et valider en appuyant sur ENTER et/ou en cliquant avec la souris...
Merci à toi si prend le temps de faire des recherches...

Pour répondre à Moustachu. j'utilise EnterCell pour déterminer les propriétés de le cellule active et pour mettre à jours un autre MSFlexGrid. C'est à dire Row, Col, CellBackColor, CellLeft, CellTop (ces 2 dernier pour déterminer les coordonnées de la cellule et ainsi pouvoir faire apparaitre la TextBox pour la saisie), etc...

Pour fixer les idées, le but de mon projet et de réaliser un gestionnaire de traduction afin de mettre à jour une base de données. Cette dernière renfermant des tables (une par langue) avec 3 champs :Id, Libelle, Aide. Tous les Id (HelpContextId), représentent un indentifiant d'un contrôle existant sur une "grosse" application, son libelle (.Caption, .Text)et l'aide en option (ToolTipText d'un contrôle) de ces même contrôle. Le but ultime étant de rendre cette "grosse" application multiulangue...

Dans le MSFlexgrid N°2, on voit apparaitre la traduction de cette enregistrement (référencé par Id) dans toutes les tables (donc les langues) existantes...

voila un screen pour mieux comprendre... les images étant souvent plus utiles que les commentaires
3
cs_nico1610 Messages postés 395 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 19 juin 2009 1
10 juin 2005 à 13:09
Pourquoi ne pas faire comme execl :

Le text box en Haut , quand tu clic sur la case le
focus va sur le text box et quand tu écris ca retape directement dans
le tableu !

J'ai manipulé le MsFlexGird il y a longtemps alors je peut te donné que se conseil, mais je vais essayé de regarder
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
10 juin 2005 à 13:09
Salut,



Tu utilises EnterCell dans quel cas ? J'ai déjà utilisé cette technique
sans me servir de EnterCell. Ce que tu décris me semble normal ou
plutot compréhensible, ce n'est pas une question de priorité

++
Moustachu
0
Rejoignez-nous