(VB6) TUTORIAL N1 (DÉBUTANT) KEYCODE + 2 OU TROIS ASTUCES

Signaler
Messages postés
160
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
30 juin 2011
-
romit
Messages postés
160
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
30 juin 2011
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37924-vb6-tutorial-n1-debutant-keycode-2-ou-trois-astuces

romit
Messages postés
160
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
30 juin 2011

Non, non, je viens de me rendre compte que en postant cette source, grace à toi, j'ai appris pas mal de choses. Et puis vu la longueur du texte tu à pris pas mal de temps à expliquer.



Encore merci Jack :p
cs_Jack
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
64
Oui Romit.
Tu as deux solutions :
- Soit dimensionner ta variable en Static : Elle ne sera connue que de ta procédure et ne perdra pas sa valeur entre deux scrutations.
- Soit déclarer ta variable en Private dans la partie déclaration de ton code : La variable sera visible de toutes les procédures de ce module ou forme : Intérêt limité dans ton cas, mais c'est la solution standard et moins complexe pour le compilateur. Là, on se fiche un peu de l'espace mémoire occupé par l'EXE.

"Option Explicit" est juste une déclaration en tête de chaque page de code (insérable automatiquement à la création : Outils, Option, onglet Edition, case à cocher "Déclaration des variables obligatoires") qui t'oblige à déclarer chaque variable utilisée.
C'est chiant au début et on se dit que ce n'est pas utile, mais ça a l'avantage de t'obliger à réflechir à l'étendue d'application de ta variable :
- Vivante unqiuement dans la procédure : un Dim dans la procédure
- Doit conserver des données entre les procédures d'une même page de code : un Private dans la partie déclaration de la page de code
- Doit conserver des données entre les procédures de tout le projet : un Public dans la partie déclaration d'un Module (uniquement)
Pour compléter, on peut aussi déclarer une variable en Public dans une forme. Elle sera visible de tout le projet en l'appellant sous cette forme "laForme.laVariable", mais à condition que la forme soit chargée (pas forcément affichée), ce qui n'est pas toujours le cas dans un projet à plusieurs forme = Utilisation dans des cas très particuliers.

Dans de gros projets, il est hyper important de bien gérer ça.
La solution de facilité consiste à tout mettre en Public, mais ça finit par devenir une vraie jungle de variables. De plus, ça aidera le compilateur à gérer l'attribution de mémoire à l'EXE, il faut penser qu'il n'y a pas que cet EXE qui run dans le système !

Je suis content que tu es considéré mes remarques comme constructives, j'avais peur que tu les prennent comme une critique ;-)
romit
Messages postés
160
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
30 juin 2011

OUPS !!!!

J'ai fait ça vite et j'ai fait une petite erreur. J'ai déclaré lastkey dans la procédure, j'aurais du la déclarer dans Option Explicit. Car à chaque fois elle sera remise à zero.

Donc pou corriger:
Effacer "Dim lastkey as string"
Et rajouter "Dim lastkey as string" dans les Option Explicit.

Ou bien (je ne connait pas bien la fonction mais bon) rajouter apres "dim lastkey as string"
Ceci:
"static lastkey"

^^ static c'est une fonction de Qbasic, je ne sais pas si elle marche encore mais elle permet à une variable déclarée dans une procédure de garder sa valeur ^^ :p
romit
Messages postés
160
Date d'inscription
jeudi 28 août 2003
Statut
Membre
Dernière intervention
30 juin 2011

Je n'ai pas bien compris ton:
"Dans Form3 toujours : Tu ne gères pas les vbBackSpace
Tu peux donc entasser le chiffre 8 parmi les valeurs --> Test ne sera jamais bon"

Peut-etre veux-tu dire ceci:

Si par exemple je tape "eto" j'appuie sur backspace pour corriger mais le programme ne le prned pas en compte... oui mais je ne trouve pas ça tellement utile.

je pourrais faire cela pour la gestion du dernier caractère:
dim lastkey as string
if KeyCode=8 then
touche = Left(touche,Len(touche)-Len(lastkey))
'Je vide LastKey pour eviter un bug si je fait deux fois de suite BackSpace
lastkey = ""
else
touche = touche & CStr(KeyCode)
lastkey = CStr(KeyCode)
end if
If Instr(touche,"LECODE") then
'Je vide touche
touche = ""
'Action
End if

Enfin je viens detaper ça vite fait sans le tester mais ça ne prendrais en compte que le dernier caractère tapé.

Mais je ne pense pas vraiment que ça soit très utile, enfin ce mini script aura pour but d'aider un peu plus les lecteurs ^^ :p