Gambas France BETA


Pas de compte ? Incription

Vérifier validation par Return

À propos de ce code

Ceci est un essai dont je souhaite quelques commentaires.
Soit une saisie qui doit être validée par ''Return''.
Le but du jeu est donc d'entrer des caractères dans la case adéquate, et de voir comment les récupérer.
En cliquant sur ''Afficher'', on récupère bien les caractères entrés, par contre, en tapant ''Return'' après la saisie, ça ne se passe pas très bien sur mon ordinateur de bureau. Il faut que je fasse clic droit dans la case de saisie, et dans le menu contextuel qui s'ouvre, sélectionner une méthode de saisie, même si c'est ''Aucune''. Ensuite, la touche ''Return'' est reconnue, et la valeur saisie est récupérée.
Le plus invraisemblable, c'est que si je teste sur mon ordinateur portable, je n'ai pas le souci, l'action de la touche ''Return'' est reconnue d'emblée, sans autre manœuvre nécessaire.
Je propose d'essayer et de voir si d'autres que moi ont le problème, après quoi, ce projet d'essais pourra être retiré, inutile de garder des choses qui ne servent à rien !
Merci de votre aide !

Commentaires

Commentaire de didier18, Le 26/11/2016 à 01:00:44
Bonjour Foromus

Ce programme fonctionne sur mon Dell Latitude E6410 (mais c'est un portable) donc cela parait (a priori logique).
Toutefois cette ligne de code :
1
IF Key.Return = Key.Code OR Key.Enter = Key.code THEN
ne me parait pas très logique...
(Ma traduction) si la touche 'return' est égal au code de la touche ou la touche 'enter' est égal au code de la touche alors...
Je l'ai remplacée par :
1
IF Key.Code = Key.Return OR Key.Code = Key.Enter THEN
(Ma traduction) si le code de la touche pressée est égal à 'return' ou si le code de la touche pressée est égal à 'enter' alors...
Puis re-test... Les 2 versions fonctionnent.
Je pense qu'un test sur un 'desktop' ou avec un clavier externe serait plus probant (mais je n'ai ni l'un ni l'autre)...

Bonne journée.
Commentaire de Foromus, Le 26/11/2016 à 10:16:46
Bonjour didier18,

Merci pour l'intérêt porté à mon souci.
Remarque logique : j'ai aussitôt rectifié, l'espoir au zénith...
Hélas, la dure réalité m'a vite rattrapé, j'ai toujours le souci...
Mais il y a forcément une solution...
Commentaire de Gambette, Le 26/11/2016 à 16:06:17
Sur un desktop c'est ok avec les deux touches enter.
Commentaire de didier18, Le 26/11/2016 à 17:23:29
En réalité avec ton code tu ne sais pas quelle est la touche que tu utilise pour la validation ([Return] ou [Enter]).
Peut être serait il judicieux d'isoler la touche de validation ? (voir connaitre la valeur de ta touche Return/Enter (voir si la touche fonctionne bien mécaniquement ?))...
Peux-tu essayer ce bout de code ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PUBLIC SUB TextBox1_KeyPress()
'il faut mettre un point d'arret devant chaque Wait.
SELECT Key.Code 'selon le code de la touche appuyée
CASE Key.Return 'cas ou c'est le touche [Return]
WAIT
CASE Key.Enter 'cas ou c'est la touche [Enter]
WAIT
CASE ELSE 'pour tous les autres cas
WAIT
PRINT Key.Code 'écrit le code de la touche dans la console
END SELECT

' If Key.Return = Key.Code Or Key.Enter = Key.code Then
IF Key.Code = Key.Return OR Key.Code = Key.Enter THEN
Label4.Text = TextBox1.Text
Label4.Visible = TRUE
Label2.Visible = TRUE
ENDIF

END
Pour moi le touche [Entrée] correspond au code de la touche [Return] ce devrait aussi être pareil sur ton portable...
Après il restera à vérifier si ton clavier est bien déclaré (genre keyb,fr) dans l'environnement...
Commentaire de Foromus, Le 26/11/2016 à 18:51:56
[Return] et [Entrée] sont identiques, mais n'ont pas le même code (c'est pour ça qu'il faut les 2 possibilités) :

Key.Enter = 65421
Key.Return = 65293

En mettant un point d'arrêt à la ligne 14 du code ci-dessus, je peux voir ce qui se passe.
(Au passage, si je mets un point d'arrêt ligne 1 ou 3, ça plante...)
En fait, KeyPress intercepte bien toutes les frappes SAUF Return !
Comme dit au début, il faut lui signifier un mode de saisie.
(Pour info, sur mon portable aussi, le menu contextuel existe et offre des choix, mais je n'en ai pas besoin)
De là à revoir ma configuration clavier...
Dans les paramètres, j'ai trouvé une configuration "Par défaut", je l'ai désactivée mais peut-être faudrait-il redémarrer parce que ça ne change rien.
Autrement je ne vois pas trop où je pourrais trouver mais mon clavier est bien en français, j'ai toutes les touches accentuées (même en majuscules Ç À É È Œ et œ ) alors, que demander de plus ?...

Commentaire de Foromus, Le 26/11/2016 à 20:09:34
Après sélection d'un autre clavier (je n'ai pas une proposition exacte) et redémarrage, le problème reste entier...

Pour info hors contexte :
La touche "Envoyer" reste en sous-brillance lors de l'envoi avec le pseudo sablier.
Les alertes mails ne semblent pas être envoyées, en tous les cas, je n'en ai reçu aucune (soit d'ici, soit du forum.
Commentaire de didier18, Le 27/11/2016 à 01:21:04
Bonjour Foromus

1) Gambette ;-) nous a indiqué que le code fonctionnait sur son 'desktop'
2) Ici le code fonctionne également sur un portable.
3) Chez toi le code fonctionne également sur un portable.
Le problème réside donc sur un 'desktop' chez toi...
En fait, KeyPress intercepte bien toutes les frappes SAUF Return !

Si [Return] ne fonctionne sur aucun des 2 claviers (en fait si elles n'est pas "filtrées" dans le select sur aucun des cas) c'est que la touche est déconnectée (peu probable puisque problème identique sur 2 claviers différents) ou que le signal est détourné/intercepté ou altéré par une variable...
En ré-écrivant le code dans un nouveau projet je n'obtient pas du tout le même sous menu en cliquant droit sur la textbox (ni le même aspect de la textbox) !??? Peut être vérifier ce point (comment sont gérés les "Méthodes de saisie" et "Insérer un caractère de contrôle Unicode" avec le système d'exploitation présent sur le 'desktop')...

Bonne journée.

Commentaire de Foromus, Le 27/11/2016 à 10:59:44
Bonjour didier18,

C'est effectivement de ce côté que je cherche.
Je ne comprends pas trop le pourquoi de "2 claviers", j'ai effectivement 2 touches Entrée, l'une sur le clavier alphabétique, l'autre sur le pavé numérique, et naturellement, elles se comportent de la même façon.
Après, comment vérifier comment sont gérées les méthodes de saisie sur le desktop ? Là, je ne sais pas faire, je ne sais pas où chercher...
J'ai tenté quelque chose en essayant de modifier les paramètres, tel que le propose ma distribution, mais ça n'a rien donné.
La distribution xubuntu n'est pas forcément connue universellement, et probablement pas beaucoup utilisée par les abonnés ici, en conséquence, je pense que je vais être contraint de retourner sur le site d'aide dédié et essayer de reformuler un appel à l'aide, cela dit, j'en ai déjà fait plusieurs et sans succès, aussi, il est possible que je "commence à lasser", même si les gens sont pleins de bonne volonté...
Commentaire de Flachy Joe, Le 27/11/2016 à 11:05:33
Salut,
c'est possiblement un problème externe à Gambas, peux-tu s'il te plaît essayer de cocher le composant gb.gui.qt (et donc décocher gb.gui) et refaire le test ?

Les "méthodes de saisie" ne sont dispo qu'avec gtk normalement. Une erreur de configuration de celui-ci est peut-être à la source du problème.
Commentaire de Flachy Joe, Le 27/11/2016 à 11:16:25
Pour creuser un peu :
Quelles sont les valeurs de config renvoyées par
gtk-query-settings | egrep -- '-im-'
Commentaire de Foromus, Le 27/11/2016 à 11:39:57
Putain, ça semble marcher...
Commentaire de Foromus, Le 27/11/2016 à 17:02:59
C'est vrai que ça marche ... enfin ... sur cet exemple précis... Mais pas au-delà...

Après, quand on passe sur du concret, du vrai, du truc qui fonctionnait avant, c'est une autre paire de manches...
Question : mes projets qui étaient déclarés en GTK, j'en fais quoi ? Parce que, si je tente de basculer en QT, c'est carrément la Bérézina... Et vu le nombre de trucs qui ne marchent plus, y compris le son - ne parlons pas des boutons qui ont perdu leurs couleurs (apparemment, ça ne dépend pas QUE de l'environnement du bureau), le remède est pire que le mal.
Bon, vu la merde, c'est à désespérer.
Et entre les composants GTK (et encore, 0, 2 ou 3) et les QT, je prends quoi, quand, comment, pourquoi, à quelle occasion, en fonction de quel environnement, de quels critères, de quels objectifs ?... Désolé, mais je suis trop pauvre pour appréhender la moindre logique là-dedans - bien que je sois persuadé qu'elle existe, forcément - et de ce qu'il m'apparaît à l'usage, c'est un bordel sans nom...
Là-dessus, je pense que je ne dois pas trop me prendre la tête, mais au contraire, en prendre mon parti : Gambas, xubuntu 16.04 et ma machine sont inconciliables, il faudra que je m'y fasse... Ce qui m'ennuie un peu, c'est que j'ai un projet qui tourne encore à peu près normalement (si je fais fi du bordel pour la saisie du mot de pass) mais par contre, il est paramétrable par un autre projet qui, lui, foire complètement, à tel point que le clic sur une touche n'a aucune réaction en général, ou alors, si réaction il y a, c'est 5 mn plus tard, et le plus beau, si j'insiste pour utiliser les fonctions proposées, le machin plante complètement, et tout s'arrête...
Désolé mais à ce stade la situation n'est plus grave mais carrément désespérée...
Après, retourner à W$ et Visual Basic (VB ne m'a jamais posé de souci et on pouvait compiler), c'est une autre démarche. Et par ailleurs, je crois que VB n'est plus supporté, voire obsolète.
Bien, je pense qu'il serait raisonnable de faire une pause, d'autant que d'ici à quelques jours, la chose sera tombée dans l'oubli...
Merci infiniment à tous ceux qui ont vraiment essayé de m'aider dans cette course folle.
Commentaire de Flachy Joe, Le 27/11/2016 à 17:52:49
Foromus: si ça tournait avec une autre version d'ubuntu, commence par rétrograder sur celle ci pour assurer le fonctionnement de tes projets.
Il faudrait ensuite creuser la question en installant xubuntu 16.04 dans une machine virtuelle, tu aurais une install propre, sans paramétrage utilisateurs et tu pourrais alors vérifier le bon fonctionnement de GB3 dans ces conditions. Car, à ce que j'ai lu, personne n'a validé le comportement de ton test spécifiquement sur cette distribution.
Commentaire de Flachy Joe, Le 27/11/2016 à 22:00:50
J'ai trouvé comment reproduire le bug sur n'importe quelle install :
- Lancer le projet
- Clic-droit sur la zone de texte, Méthode de saisie, choisir "Méthode de saisie X"
- La touche Entrée n'est plus reconnue

Foromus, tu as dû modifier les réglages de ta distrib, car par défaut la méthode de saisie sous Xubuntu 16.04 est "Système (Cédille)". Pour remettre cette config, tente cette commande :
echo 'export GTK_IM_MODULE="gtk-im-context-simple"' >> ~/.xprofile

Puis relance ta session.
Commentaire de Foromus, Le 28/11/2016 à 16:02:44
Bonjour à tous,

Bon, ça marche !...
Super Grand Merci à Flachy Joe pour sa super formule quasiment magique !...

Petites considérations :
J'avais testé les différentes propositions du menu contextuel et j'avais aussi remarqué que "Méthode de saisie X" bloquait le système.
Pour ce qui est de passer de gb.gui à gb.gui.qt, ça a aussi fonctionné, mais en conte-partie, j'ai perdu du graphisme, en l'occurrence mes boutons bien colorés étaient redevenus blancs, et autres trucs qui marchaient mal.
Dans la foulée, j'ai aussi trouvé les raisons du mauvais fonctionnement de ma procédure de copie. Je vais retourner sur le forum pour compléter.
Je ne vois pas pourquoi, ou qui, ou quoi, qui a pu modifier ma configuration pour m'amener ce problème qui m'a vraiment fait suer (et je reste poli...). Mais en informatique, il y a parfois des trucs bizarres...
Grands mercis à tous pour votre aide et vos encouragements, encore une ornière dont je ne me serais jamais sorti tout seul...

Avis au modérateur : on peut peut-être enlever cet exemple qui n'a plus vraiment sa raison, la solution est maintenant connue et présentée par ailleurs.