Gambas France BETA


Pas de compte ? Incription

[Résolu] Là c'est bon, là, ça ne marche plus...

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 3/8/2011 à 19:47:00
Bonjour,

Même si Gambas est un peu en veille en ce moment, j'ai voulu faire un petit ajout sur un projet.
Dans un formulaire, je rentre un prénom, j'ai utilisé le code suivant :


Public Sub txtPrenom_Change()
Prenom = txtPrenom.Text
If Len(Prenom) > 2 Then txlSugere.Text = "Tapez ''Return'' pour valider"
End

Public Sub txtPrenom_KeyPress()
If Key.RETURN = Key.Code Or Key.Enter = Key.Code Then
If Prenom = "" Then Erreur = True
If Prenom <> "" Then VerifNom
If Erreur = False And Prenom <> "" Then ValiderSaisie
Endif
If Erreur = True Then
txtPrenom.Text = ""
Prenom = ""
Erreur = False
txtPrenom.SetFocus
Endif
End

Et ça fonctionne très bien, je rentre mon prénom, je valide par Return.

Et comme j'aime bien me compliquer le vie par moment, j'ai dit que j'allais mettre un mot de passe pour démarrer mon projet - histoire de faire pro - ce qui est d'ailleurs ridicule, puisque je ne sais même pas comment crypter et cacher un mot de passe... Passons, j'ai donc pris un code qui marche, le même que ci-dessus en fait, et que voici :

Public Sub txtPass_Change()
Mot = txtPass.Text
End

Public Sub txtPass_KeyPress()
If Key.RETURN = Key.Code Or Key.Enter = Key.Code Then
'Vérification
'Traitement
Endif
End


Et là, bizarre, ça ne marche plus...
A l'exécution, j'ai le code erreur suivant :

No keyboard event data dans formulaire ... ligne ...

Dans un premier temps, je me suis dit ""qu'il"" n'aimait pas la place de classe au démarrage, qu'à cela ne tienne, j'ai créé un module de démarrage qui m'appelle immédiatement le formulaire concerné, pas de chance, c'est la même chose, rien n'y fait, il ne veut pas entendre parler d'événement clavier à ce stade, alors qu'il l'accepte un peu plus loin...

Y-aurait-il un gros truc que ma vue déficiente n'aurait point remarqué ?...

Merci de votre attention !
Prokopy#2 Posté le 4/8/2011 à 13:18:00
Kinder PinguiSalut Foromus,

Est-ce que tu peux dire précisement à quelle ligne il y l'erreur s'il te plaît ?

Parce que « No keyboard event data dans formulaire ... ligne ... » ça n'aide pas beaucoup ... :|
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Foromus#3 Posté le 4/8/2011 à 13:30:00
Bonjour,

Oui, je comprends, mais "formulaire", c'est le nom du formulaire, "ligne", c'est le numéro de la ligne, et comme les numéros n'apparaissent pas ici, je ne l'ai pas mis.

En clair, il s'agit de la première ligne (où que je la place, qui commence par "If KeyReturn....", en l'occurrence, celle-ci :

If Key.RETURN = Key.Code Or Key.Enter = Key.Code Then

Et c'est exactement sur cette ligne que j'ai, au lancement, en surbrillance pendant une ou deux secondes, le message d'erreur :

No keyboard event data dans formulaire ... ligne ...

En clair, où que je place cette ligne (If Key.RETURN = Key.Code Or Key.Enter = Key.Code Then) dans mon formulaire, voire dans le module de départ, elle est refusée.
J'ai tenté "tout recompiler", à tout hasard, aucun résultat.

Encore un truc qui me passe au-dessus de la tête...
Prokopy#4 Posté le 4/8/2011 à 14:01:00
Kinder PinguiAs-tu essayé dans l'autre sens ? (ce qui est plus logique) :

1
IF Key.Code = Key.Return OR Key.Code = Key.Enter THEN


Note aussi que cette ligne doit uniquement se trouver dans un gestionnaire d'évènement clavier (Dans un des txtPrenom_Key*, KeyPress par exemple).
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
Foromus#5 Posté le 4/8/2011 à 20:00:00
Key.Code = Key.Return ou encore Key.Return = Key.Code ça ne change pas grand chose, même si la première semble plus logique, effectivement.

Par ailleurs, la procédure :

Public Sub txtPass_KeyPress()
........

me semble bien attendre un événement clavier... Pour la "récupération", j'ai placé avant une "Change".

Je n'y comprends vraiment rien...
Prokopy#6 Posté le 5/8/2011 à 12:23:00
Kinder PinguiLà j'avoue je ne vois pas ...

Par contre pour valider ton mot de passe je pense qu'il serait mieux de mettre un bouton OK plutôt que de chercher KeyPress sur ton textBox.
Tu peux mettre la propriété Defalut du bouton à true pour que la touche entrée l'active si tu veux. :)

( http://gambasdoc.org/help/comp/gb.qt4/button/default?fr&v3 )
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
linuxos#7 Posté le 5/8/2011 à 14:37:00
Un peu de sel, de poivre et la crevette sera... Bonjour Foromus,

Peux tu préciser quel type de controle tu utilises pour saisir ton mot de passe: TextBox je suppose ?

Je n'ai aucun problème pour gérer un evenement clavier, genre 'touche RETURN ou ENTREE' sur un TextBox.

Exemple: considerons le TexBox50 permettant la saisie du mot de passe:

1
PUBLIC SUB TextBox50_KeyPress() ' Procedure pour valider le mot de passe sur RETURN ou ENTER IF Key.Code = key.Return OR Key.Code = key.Enter THEN ' Truc a faire pour valider le mot de passe END IF END



Voila
Olivier
Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous.
Foromus#8 Posté le 7/8/2011 à 08:10:00
Bonjour à tous en général, et aux vacanciers de retour en particulier,

Comme le laisse supposer mon code, c'est bien d'une textbox dont il s'agit (je l'ai même effacée pour en remettre une autre toute neuve).

Effectivement, c'est toujours le même code qui s'impose, il n'y a pas 36 façons d'opérer.
Mon souci, c'est que ce même code (au nom de la textbox près), marche bien dans un formulaire, et pas dans l'autre !

Pourquoi ce message d'erreur (refus de l'événement Key...) dans cette procédure, alors que c'est accepté dans l'autre ?..

Bref, le truc idiot, quoi....
Jack#9 Posté le 7/8/2011 à 08:34:00

Y'aurait pas un tag par hasard ?
Pour un code démocratique nationalisons Gambas.
Foromus#10 Posté le 7/8/2011 à 09:39:00

Y'aurait pas un tag par hasard ?


Possible, vu que je ne sais pas ce que c'est... A part du gribouillis sur une surface quelconque que certains illuminés appellent de """ l'art """"
Jack#11 Posté le 7/8/2011 à 11:16:00

regarde ce que tu as dans la propriété "Group" de ta textbox. Il ne doit rien y avoir.
Pour un code démocratique nationalisons Gambas.
Foromus#12 Posté le 9/8/2011 à 21:03:00
En désespoir de cause, j'ai remis une seconde fois une textbox toute neuve !
Et ça à marché.....

Je n'y ai rien compris....
1