Gambas France BETA


Pas de compte ? Incription

Calculatrice

À propos de ce code

Petite calculatrice pédagogique.
Ajout gestion clavier.
Str$ à la place de Cstr pour la virgule (localisation)

Code source

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
95
96
97
98
' Gambas class file

' Private fValeur1 As Float
' Private fValeur2 As Float
PRIVATE fValeur AS NEW FLOAT[9]
PRIVATE signe AS STRING '<------------- signe des opérations
PRIVATE i AS INTEGER
PRIVATE j AS INTEGER

'<------------------------------------- création d'un Group pour les chiffres nommé Chiffres
'<------------------------------------- création d'un Group pour les opérations nommé Signes

PUBLIC SUB btnClose_Click()

ME.Close()

END

PUBLIC SUB Chiffres_Click() '<------- évènement _Click() pour le Group Chiffres

IF fValeur[0] = 0 THEN TextBox1.Clear'<-test pour effacer le textbox
TextBox1.Text &= LAST.text '<------- concaténation dans textbox1
fValeur[i] = Val(TextBox1.Text)'<----- récupération de la valeur affichée

END

PUBLIC SUB Signes_Click() '<---------- évènement _Click() pour le Group Signes

SELECT CASE LAST.Text '<---------- en fonction du dernier texte des signes
CASE ELSE
fValeur[j + 1] = fValeur[j] '<------- on récupère la deuxième valeur
END SELECT

signe = LAST.Text
TextBox1.Clear

END

PUBLIC SUB Form_Open()

i = 0
j = 0

fValeur.Add(0)

END

PUBLIC SUB btnEgal_Click() '<---------- évènement _Click() lors de l'appui sur "="

SELECT CASE signe '<---------------- les opérations à faire en fonction du signe cliqué
CASE "+"
fValeur[i + 1] += fValeur[i]
CASE "-"
fValeur[i + 1] -= fValeur[i]
CASE "/"
IF fValeur[i] <> 0 THEN fValeur[i + 1] /= fValeur[i] ELSE RETURN
CASE "*"
fValeur[i + 1] *= fValeur[i]
END SELECT

TextBox1.text = Str$(fValeur[i + 1]) '<------------------- localisation Europa

END

PUBLIC SUB Form_KeyPress()

DIM vText AS VARIANT
DIM cChiffres AS String[] = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ","]
DIM cSignes AS String[] = ["+", "-", "*", "/"]

vText = Key.Text

IF vText MATCH "." THEN vText = Replace(vText, ".", ",") '<----------------- localisation Europa

IF cChiffres.Exist(vText) THEN
LAST.text = vText
Chiffres_Click()
ENDIF

IF cSignes.Exist(vText) THEN
LAST.text = vText
Signes_Click()
ENDIF

ME.Text = "Calculatrice" '<------- pour ne pas afficher vText dans le titre du formulaire

IF key.Code = key.Return OR key.Code = key.Enter THEN btnEgal_Click()
IF key.code = Key.Esc THEN btnCancel_Click()

IF NOT cSignes.Exist(Key.Text) OR NOT cChiffres.Exist(Key.Text) THEN STOP EVENT '<-- Pas autre chose que chiffres ou signes

END

PUBLIC SUB btnCancel_Click()

TextBox1.Clear

END

Commentaires