1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
| Option Explicit
'variable conteneur du mot entré par l'utilisateur
Dim Reponse As String
'variable conteneur du mot que devra proposer l'utilisateur pour continuer l'utilisation du programme
Dim MotDePasse As String
'variable conteneur pour limité le nombre de fois que l'utilisateur pourra proposer son mot de passe
Dim NbrEssais As Integer
Private Sub Form_Load()
'Me.ShowInTaskbar = True '**** étant en lecture seule durant le run, à faire en design ****
'Me.StartUpPosition = 1 **** étant en lecture seule durant le run, à faire en design ****
'Me.BorderStyle = 0 'None **** à faire en design ****
'--------- peut être configuré en desing ---------------
Me.Width = 4425: Me.Height = 930
Me.BackColor = &HC0FFFF 'jaune clair
Me.AutoRedraw = True
Me.FontName = "Courier New"
Me.FontSize = 10
Me.FontBold = True
Me.Caption = "Entrez votre mot de passe"
'-------- fin de peut être configuré en desing ----------
'pseudo cadre 3D du Form, dessine 2 rectangles non remplis
Me.Line (0, 0)-(Me.ScaleWidth - 15, Me.ScaleHeight - 15), &HC00000, B 'bleu soutenu
Me.Line (0, 0)-(Me.ScaleWidth - 30, Me.ScaleHeight - 30), &HC0C0C0, B 'gris moyen
Me.CurrentX = 1140: Me.CurrentY = 180 'coordonnées d'ou va être écrit la phrase suivante
Me.Print "Votre mot de passe" 'dessine sur le Form les caractères de la phrase
MotDePasse = "ProgElecT" '<== au choix de chacun, mais limité à 35 caractères
Reponse = "" 'initialisation du conteneur du mot entré par l'utilisateur
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
Select Case KeyAscii
Case 8 'touche <---
'effacement du dernier caractère
If Len(Reponse) <> 0 Then
Reponse = Left(Reponse, Len(Reponse) - 1)
DessineR True, True
End If
Case 13 'touche Enter, analyser le mot de passe
If Reponse <> MotDePasse Then
If NbrEssais < 2 Then
Reponse = "Non conforme, essai n°" & NbrEssais + 1 & "/3"
DessineR True, False
Attendre 2 'attendre 2 Sc avant de redonner la possibilité de repondre à nouveau
Reponse = ""
DessineR True, False
NbrEssais = NbrEssais + 1
Else
Reponse = "C'était votre dernier essais, salut"
DessineR True, False
Attendre 3 'attendre 3 Sc avant d'arrêter le programme, laisse le temps de lire le message
Unload Me
End If
Else
Reponse = "Correct"
DessineR True, False
'attendre 3 Sc avant de passer à la suite du programme, laisse le temps de lire le message
Attendre 3
'FormSuivante.Show 'passer à la suite du programme
Unload Me 'decharger ce Form
End If
Case 27: Unload Me 'donner la possibilité d'arrêter le programme sans atteindre la fin des essais
Case 32 To 126, 163, 167, 181, 224, 231, 232, 233, 249
'limitation à certains caractères (élimination des caractères non "imprimables")
If Len(Reponse) > 35 Then Exit Sub 'limitation à 35 caractères
Reponse = Reponse & Chr(KeyAscii) 'ajout du dernier caractère tapé
DessineR True, True
End Select
End Sub
Public Sub Attendre(Tempo As Single)
Dim Hfin As Single
Hfin = Timer + Tempo 'ajout de x secondes au nombre de secondes écoulées depuis minuit
Do While Timer < Hfin: DoEvents: Loop 'boucle d'attente x secondes
End Sub
Public Sub DessineR(Effacer As Boolean, MasqueR As Boolean)
If Effacer = True Then
'dessinne un rectangle plein qui recouvre/efface l'ancien affichage du texte
Me.Line (15, 420)-(Me.ScaleWidth - 45, 660), Me.BackColor, BF
End If
Me.CurrentY = 420 'équivalent au .Top d'un TextBox
'calcul pour centrer le mot, 120 = nombre de Twips pour un caractére en Courier New taille 10
Me.CurrentX = (Me.ScaleWidth - (Len(Reponse) * 120)) / 2 'équivalent au .Left d'un TextBox
If MasqueR = True Then
'effet équivalent .PasswordChar d'un TextBox
Me.Print String$(Len(Reponse), "*")
Else
'affichage normal
Me.Print Reponse
End If
End Sub |
Partager