Gambas France BETA


Pas de compte ? Incription

[Résolu] Intercepter "Retrurn"

Ce sujet est résolu.

1
AuteurMessages
Foromus#1 Posté le 4/1/2010 à 21:26:00
Bonjour !

Au gui l'an neuf...
Eh, oui, je sais, ce n'est pas le sujet...

N'ayant pas été malade, n'ayant toujours pas la grippe A ni une autre, je poursuis mon apprentissage...

Voilà, j'ai une boîte de saisie, j'ai trouvé comment bloquer une entrée non conforme avec isLetter ou isAscii, (content de moi, j'ai un peu cherché quand même), et là, je voudrais "faire quelque chose" en tapant "Return" en fin de saisie. Je me suis dit que, en épluchant tout ce qui entre avec "txtSaisieNom_Change", puis en prenant le dernier caractère avec "Right$", puis en faisant un "Asc" puis en regardant si ça aboutissait à un Chr$(13), je pourrais opérer. Hélas non, si je peux reconnaître tout ce qui entre, signe par signe dans ma boîte, il m'est impossible de récupérer le Return.
Ma formule est toute simple :
PRINT Asc(Right$(txtSaisieNom.Text))
Avec ça, je récupère bien les codes ascii de mes entrées successives, sauf ... le "13"...
Une idée ?...
spheris#2 Posté le 4/1/2010 à 23:06:00
Foromus,
Cet exemple, il est pour toi :
http://gambaslinux.eg2.fr/articles.php?lng=fr&pg=373

;) ;)
A+
micio#3 Posté le 5/1/2010 à 13:13:00
1
' Gambas class filePUBLIC SUB Form_Open()ENDPUBLIC SUB TextBox1_KeyPress() IF Key.RETURN = Key.Code THEN TextBox2.Text = "coucou" ENDIF END
Foromus#4 Posté le 5/1/2010 à 13:26:00
Bonjour,

Merci pour ces deux réponses, réponses que je vais étudier avec la plus grande attention.
En effet, et pour l'instant, je ne vois pas trop comment les exploiter, il faut donc que je réfléchisse et que je fasse des essais.
Comme je l'ai dit, je viens de VB, et donc, j'ai tendance à raisonner VB, même si il y a des différences. Cela dit, je ne perds pas de vue que je travaille avec Gambas !
J'ai trouvé le tableau des fonctions en Gambas, j'en suis très heureux car j'ai beaucoup de renseignements à disposition.
J'ai encore d'autres questions, mais pour ne pas tout mélanger, je vais lancer une autre discussion.

Merci à tous.
micio#5 Posté le 5/1/2010 à 14:10:00
La même chose avec quelque commentaires

1
' Gambas class filePUBLIC SUB Form_Open()END' Evenement : quand TextBox1 à le focus et qu'une' touche est pressée.PUBLIC SUB TextBox1_KeyPress() ' on récupère le code de la touche pressée ' "Key.Code" que l'on compare à la constante ' "Key.RETURN" ( il faut utiliser les constant ' prédéfinie car les codes pouvent ' varié en fonction des environnements. ) IF Key.RETURN = Key.Code THEN TextBox2.Text = "coucou" ENDIF END
spheris#6 Posté le 5/1/2010 à 15:04:00
Foromus,

pour faire simple il te suffit d'ajouter le résultat de ta valeur retournée (élément en gras) dans la fonction au début comme ceci :
PUBLIC SUB fonction1() AS String
DIM valretournee AS String
valretournee = "ca a marché!"
RETURN valretournee
END

ensuite tu peux l'utiliser dans une autre fonction comme ceci :

PUBLIC SUB Button1_Click()
toto = fonction1()
Message.Info(toto)
END
voili voilou !
;)
micio#7 Posté le 5/1/2010 à 15:22:00
D'après ce que j'ai compris Foromus souhaite intercepter l'appui sur la touche "Retour" du clavier et non retourner une valeur par l'instruction RETURN dans une fonction.

??? ??? ???
Foromus#8 Posté le 5/1/2010 à 16:38:00
Exact : je souhaite effectivement déclencher une action dès la frappe de Return, en l'occurence, afficher le contenu de ma txtBox.
J'ai du m'absenter et je n'ai pas tout vérifié, mais il semble que :

IF Key.RETURN = Key.Code THEN

conviennent parfaitement.
De mon point de vue (logique à moi....), j'aurais plutôt écrit : If Key.Code = Key.RETURN THEN
mais bon, comme c'est une égalité, ça fonctionne.

Maintenant, cela m'oblige à faire deux Sub :

SUB TextBox1_Change() ' pour récupérer la valeur saisie (texte en l'occurrence ici)

SUB TextBox1_KeyPress() ' pour récupérer le Return

parce que, j'ai remarqué qu'avec _KeyPress, je n'avais pas la dernière saisie... Curieux...

Pas très grave.
Bon, je continue à avancer...
Merci pour l'aide !
jlouis#9 Posté le 5/1/2010 à 17:20:00
Essaye peut-être ceci :

1
PUBLIC SUB TextBox1_KeyPress() IF Asc(Key.Text) = 13 THEN TextBox2.Visible = TRUE END


ou alors :

1
PUBLIC SUB TextBox1_KeyPress() IF Asc(Key.Text) = 13 THEN TextBox2.Text = TextBox1.Text TextBox2.Visible = TRUE END IF END


Tu n'as plus qu'à adapter...
Foromus#10 Posté le 5/1/2010 à 17:30:00
Bonjour,

J'étais en train de travailler sur Gambas...

Je vais essayer la formule plus tard, il est possible que dans un autre cas de figure, elle me soit utile..
Pour l'instant, la formule
IF Key.RETURN = Key.Code THEN
fonctionne, donc, j'ai une réponse à ma question !

Merci beaucoup !
Foromus#11 Posté le 5/1/2010 à 21:52:00
Complément d'info :

En réalité, pas si "Résolu" que ça mon truc...
Comme le key.retrun = key.code marchait bien, je me suis dit que j'allais en user, et en abuser. Mal m'en a pris... Ou plutôt si, j'ai bien fait...
J'ai créé deux textbox, une pour entrer un nom, l'autre pour entrer un age. Banal... dans chaque txtbox_keyPress, j'ai collé la formule magique, et ... ça n'a pas marché si bien que ça.
En réalité, quand j'entrais des lettres, je frappais le Return du clavier principal, et quand j'entrais des chiffres, je frappais le Return du clavier numérique... Et tout ça, sans m'en rendre compte, l'habitude, bien sûr...
J'ai donc fait apparaître la valeur de Key.return dans la fenêtre de déboggage, et là, je me suis aperçu que mon Return "normal" donnait 1400, et celui du pavé numérique 1401... D'où bien sûr, un dysfonctionnement que j'ai mis pas mal de temps à comprendre !

A propos des aides au déboguage, j'ai vu dans la fenêtre du terminal en bas, des onglets. J'ai tenté de mettre les valeurs dont je voulais suivre l'évolution, et rien n'a marché. Là, je patauge... Les point d'arrêts aussi me posent problème : le logiciel s'arrête bien, mais la suite devient problématique, d'autant que la fenêtre du programme en cours se ferme. Sur VB (merci de me pardonner cette remarque), il suffisait de mettre le curseur souris sur une variable pour que sa valeur du moment apparaisse dans une infobulle : alors ça, c'était vraiment épatant ! Autre limitation également : le glisser / déposer n'est pas accepté par Gambas, par exemple, pour déplacer une ligne ou une Sub entière, il faut passer par Couper / Coller, dommage...

Bon, j'ai encore du boulot... :bounce: :bounce:
micio#12 Posté le 5/1/2010 à 22:04:00
' Gambas class file

PUBLIC SUB Form_Open()
END

PUBLIC SUB TextBox1_KeyRelease()
IF (Key.Code = Key.Enter) OR (Key.Code = Key.RETURN) THEN
TextBox2.Text = "coucou"
ENDIF
END
Foromus#13 Posté le 5/1/2010 à 22:16:00
Oui, je viens de tester, ça fonctionne comme ça.
J'ai au moins appris que Return clavier et pavé étaient différents...

Merci, le problème "Intercepter Return" est vraiment résolu !
1