C'est souvent à la relecture de son code que l'on penses que l'on pourrait écrire différemment, cette partie ou celle-ci car au premier jet on est concentré sur la réalisation de ce que l'on veut obtenir.
Dans un second temps, on réfléchit à l'économie de temps machine, à la facilité de lecture, aux commentaires, à l'ergonomie de l'ensemble.
Et l'on se met à corriger des détails mais avec un souci en tête : la simplicité.
Code 1 :
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
| PUBLIC SUB Form_Open()
ME.Text = ("Aide de -") & Application.Title & ("- version : ") & Application.Version
TextArea1.Foreground = 1 '<------------------------------------' Présentation TextArea2.Foreground = 1 '<-------------------------------------' Menu Affichage TextArea3.Foreground = 1 '<------------------------------------' Menu Design TextArea4.Foreground = 1 '<-------------------------------------' Menu Autres TextArea5.Foreground = 1 '<------------------------------------' Menu Principal TextArea6.Foreground = 1 '<-------------------------------------' Menu Utilisation TextArea7.Foreground = 1 '<-------------------------------------' Menu Explications
Panel1.Layout = [65, 35] Panel2.Layout = [65, 35] Panel3.Layout = [65, 35] Panel4.Layout = [65, 35] Panel5.Layout = [65, 35]
Panel1.Expand = TRUE Panel2.Expand = TRUE Panel3.Expand = TRUE Panel4.Expand = TRUE
TextArea1.Text = ("Les auteurs de cette horloge :") & "\n\n" TextArea1.Text &= "Pil Valaquarus * 2023" & "\n" TextArea1.Text &= (" pour différents apports et arrangements" & "\n\n"
TextArea1.Text &= "Claus Dietrich * 2016" & "\n" TextArea1.Text &= (" pour la version de base") & "\n\n"
TextArea1.Text &= "PaintClock Hans Lehmann * Osterburg * 2016 " & "\n" TextArea1.Text &= (" pour les calculs des aiguilles") & "\n\n"
TextArea1.Text &= "Adaptation 'PaintClock' Ingo Beckert * Zwingenberg * 2013 " & "\n" TextArea1.Text &= (" version de base des calculs des aiguilles") & "\n\n"
TextArea2.Text = ("Le Menu Affichage permet d'accéder à plusieurs sous-menus :"& "\n\n"
TextArea2.Text &= ("- Trotteuse :") & "\n" TextArea2.Text &= (" Pour afficher ou non la trotteuse sur l'horloge.") & "\n\n"
TextArea2.Text &= ("- Façon Chronomètre :"& "\n" TextArea2.Text &= (" Pour afficher une trotteuse à la millseconde." & "\n\n"
TextArea2.Text &= ("- Rien :") & "\n" TextArea2.Text &= (" Pour n'afficher que l'horloge.") & "\n\n"
TextArea2.Text &= ("- Texte :") & "\n" TextArea2.Text &= (" Pour afficher un texte.") & "\n\n"
TextArea2.Text &= ("- Date :") & "\n" TextArea2.Text &= (" Pour afficher la date du jour.") & "\n\n"
TextArea2.Text &= ("- Logo :") & "\n" TextArea2.Text &= (" Pour afficher un logo.") & "\n\n"
TextArea2.Text &= ("- Logo et Date :") & "\n" TextArea2.Text &= (" Pour afficher un logo et la date du jour.") & "\n"
TextArea3.Text = ("Le Menu Design permet d'accéder à un choix de design :"& "\n\n"
TextArea3.Text &= ("- Design N°_ :" & "\n" TextArea3.Text &= (" Pour choisir un design pour l'horloge.") & "\n\n"
TextArea3.Text &= ("Actuellement ") & " " & CStr(FMain.iNumImage + 1) & " " & (" design différents sont disponibles." & "\n"
TextArea4.Text = ("Le Menu Autres Fonctions permet d'accéder à plusieurs sous-menus :"& "\n\n"
TextArea4.Text &= ("- Réveil :" & "\n" TextArea4.Text &= (" Pour régler une alarme." & "\n\n"
TextArea4.Text &= ("- Auto :") & "\n" TextArea4.Text &= (" Pour changer automatiquement d'image d'horloge.") & "\n\n"
TextArea4.Text &= ("- Dimensions :") & "\n" TextArea4.Text &= (" Pour changer les dimensions de l'image d'horloge.") & "\n\n"
TextArea4.Text &= ("- Dimensions de base :") & "\n" TextArea4.Text &= (" Pour revenir aux dimensions enregistrées." & "\n\n"
TextArea5.Text = ("Le Menu Principal permet d'accéder à plusieurs sous-menus :"& "\n\n"
TextArea5.Text &= ("- Affichage :") & "\n" TextArea5.Text &= (" Pour sélectionner une option d'affichage." & "\n\n"
TextArea5.Text &= ("- Design :") & "\n" TextArea5.Text &= (" Pour choisir parmi les design possibles.") & "\n\n"
TextArea5.Text &= ("- Autres :") & "\n" TextArea5.Text &= (" Pour accéder à d'autres choix."& "\n\n"
TextArea5.Text &= ("- Enregistrement :") & "\n" TextArea5.Text &= (" Pour enregistrer vos choix avant la sortie.") & "\n\n"
TextArea5.Text &= ("-Aide :") & "\n" TextArea5.Text &= (" Pour accéder à cette aide."& "\n\n"
TextArea5.Text &= ("- Sortie :") & "\n" TextArea5.Text &= (" Pour quitter le programme.") & "\n"
TextArea6.Text = ("Utilisation des Fonctions :") & "\n\n"
TextArea6.Text &= ("Les menus sont accessibles par un clique droit sur l'image de l'horloge.") & "\n\n"
TextArea6.Text &= ("Vous pouvez déplacer l'horloge sur votre bureau soit :" & "\n" TextArea6.Text &= ("- par un clique gauche en maintenant l'appui ") & "\n" TextArea6.Text &= ("- par un clique gauche en maintenant l'appui et en le combinant avec la touche Alt") & "\n" TextArea6.Text &= ("et en lachant le clique à la nouvelle position." & "\n\n"
TextArea6.Text &= ("Pour modifier les dimensions :") & "\n" TextArea6.Text &= ("en cliquant le menu 'Dimensions' celui-ci est coché" & "\n" TextArea6.Text &= ("et vous pouvez modifier les dimensions de l'horloge.") & "\n" TextArea6.Text &= ("Pour valider votre redimensionnement il suffit de recliquer sur le menu.") & "\n\n"
TextArea6.Text &= ("Vous pouvez revenir aux 'Dimensions de base' en cliquant sur ce menu.") & "\n\n"
TextArea6.Text &= ("en cliquant le menu 'Auto' celui-ci est coché." & "\n" TextArea6.Text &= ("il déclenche le changement de Design de façon automatique toutes les quinze secondes"& "\n" TextArea6.Text &= ("pour arrêter l'automatisme, recliquer sur le menu, le menu est décoché." "\n\n" TextArea6.Text &= ("Vous pouvez afficher ou non la Trotteuse.") & "\n" TextArea6.Text &= ("Cliquer coche la Trotteuse, recliquer sur le menu, le menu est décoché."& "\n\n"
TextArea6.Text &= ("Vous pouvez afficher les secondes ou les millisecondes.") & "\n" TextArea6.Text &= ("Cliquer affiche les millisecondes, recliquer affiche les secondes.") & "\n"
TextArea7.Text &= ("Logique de construction :") & "\n\n"
TextArea7.Text &= ("Une horloge tourne dans le sens inverse du cercle trigonométrique." & "\n" TextArea7.Text &= ("L'origine de l'horloge est à 12 heures." & "\n" TextArea7.Text &= ("l'origine du cercle trigonométrique est à 3 heures."& "\n" TextArea7.Text &= ("la translation entre les deux est donc de moins 90 degrés." & "\n\n"
TextArea7.Text &= ("Une heure = 60 minutes = 3 600 secondes.") & "\n" TextArea7.Text &= ("Un tour c'est 360 degrés réalisé soit en 60 secondes soit en 60 minutes." "\n" TextArea7.Text &= (" soit 360 / 60 = 6.") & "\n" TextArea7.Text &= ("en milliseconde : 60 x 1 000 = 60 000.") & "\n" TextArea7.Text &= (" soit pour un tour : 360 / 60 000 = 0.006") & "\n" TextArea7.Text &= (" ou son inverse : 60 000 / 360 = 166.66666666667.") & "\n\n"
TextArea7.Text &= ("Donc pour représenter l'angle d'avancé sur l'horloge :"& "\n\n" TextArea7.Text &= ("Angle en degrés pour les heures = (heures x 60 + minutes) / 2 - 90°."& "\n" TextArea7.Text &= ("Angle en degrés pour les minutes = minutes x 360 / 60 - 90°."& "\n" TextArea7.Text &= ("Angle en degrés pour les secondes = secondes x 360 / 60 - 90°."& "\n" TextArea7.Text &= ("Angle en degrés pour les millisecondes = (secondes x 360 / 60 + millisecondes x 360 / 60 000) - 90°."& "\n\n"
TextArea7.Text &= ("Les angles étant convertis de degrés en radians"& "\n" TextArea7.Text &= ("Pour placer les objets comme les aiguilles sur l'horloge, les coordonnées sur le cercle sont : " & "\n" TextArea7.Text &= (" X = rayon (aiguilles) x Cos(Angle).") & "\n" TextArea7.Text &= (" Y = rayon (aiguilles) x Sin(Angle).") & "\n\n"
TextArea7.Text &= ("Pour chaque type d'aiguille , pour obtenir la longueur voulue, il suffit d'appliquer un coefficient réducteur au rayon." & "\n"
TextArea1.ReadOnly = TRUE '<--------------------------------------' Présentation TextArea2.ReadOnly = TRUE '<--------------------------------------' Menu Affichage TextArea3.ReadOnly = TRUE '<--------------------------------------' Menu Design TextArea4.ReadOnly = TRUE '<--------------------------------------' Menu Autres TextArea5.ReadOnly = TRUE '<--------------------------------------' Menu Principal TextArea6.ReadOnly = TRUE '<--------------------------------------' Menu Utilisation TextArea7.ReadOnly = TRUE '<--------------------------------------' Menu Explications
TextArea1.pos = 0 '<----------------------------------------------' Présentation TextArea2.pos = 0 '<----------------------------------------------' Menu Affichage TextArea3.pos = 0 '<----------------------------------------------' enu Design TextArea4.pos = 0 '<----------------------------------------------' Menu Autres TextArea5.pos = 0 '<----------------------------------------------' Menu Principal TextArea6.pos = 0 '<----------------------------------------------' Menu Utilisations TextArea7.pos = 0 '<----------------------------------------------' Menu EXplications
TextArea1.EnsureVisible() TextArea2.EnsureVisible() TextArea3.EnsureVisible() TextArea4.EnsureVisible() TextArea5.EnsureVisible() TextArea6.EnsureVisible() TextArea7.EnsureVisible()
END
|
Code 2 :
En mettant le texte des TextArea dans des fichiers séparés que l'on charge :
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
| PUBLIC SUB Form_Open()
DIM leText AS STRING DIM i AS INTEGER DIM cLangues AS String[] = ["fr", "it", "de"] DIM labelText AS Variant[] = [TextArea1, TextArea2, TextArea3, TextArea4, TextArea5, TextArea6, TextArea7] DIM panneau AS Variant[] = [Panel1, Panel2, Panel3, Panel4, Panel5]
ME.Text = ("Aide de -") & Application.Title & ("- version : ") & Application.Version
IF NOT cLangues.Exist(Left(System.Language, 2)) THEN FOR i = 0 TO 6 leText = "./Aide/texte" & CStr(i + 1) & "-" & "fr" & ".txt " "" labelText[i].Text = File.Load(leText) labelText[i].ReadOnly = TRUE labelText[i].pos = 0 labelText[i].EnsureVisible() labelText[i].Foreground = 1 labelText[i].Font = Font["Noto Sans, 11,bold"] labelText[i].Enabled = TRUE NEXT ELSE FOR i = 0 TO 6 leText = "./Aide/texte" & CStr(i + 1) & "-" & Left(System.Language, 2) & ".txt" labelText[i].Text = File.Load(leText) labelText[i].ReadOnly = TRUE labelText[i].pos = 0 labelText[i].EnsureVisible() labelText[i].Foreground = 1 labelText[i].Font = Font["Noto Sans, 11,bold"] labelText[i].Enabled = TRUE NEXT
ENDIF
FOR i = 0 TO 4 Panneau[i].Layout = [66, 34] Panneau[i].Expand = TRUE Panneau[i].Enabled = TRUE NEXT
TextArea3.Text &= ("Actuellement ") & " " & CStr(FMain.iNumImage + 1) & " " & (" design différents sont disponibles." & "\n"
END
|
Code 3 :
On peut alléger la boucle test :
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
| PUBLIC SUB Form_Open()
DIM leText AS STRING DIM i AS INTEGER DIM cLangues AS String[] = ["fr", "it", "de"] DIM labelText AS Object[] = [TextArea1, TextArea2, TextArea3, TextArea4, TextArea5, TextArea6, TextArea7] DIM panneau AS Object[] = [Panel1, Panel2, Panel3, Panel4, Panel5]
ME.Text = ("Aide de -") & Application.Title & ("- version : ") & Application.Version
FOR i = 0 TO 6
IF NOT cLangues.Exist(Left(System.Language, 2)) THEN leText = "./Aide/texte" & CStr(i + 1) & "-" & "fr" & ".txt" ELSE leText = "./Aide/texte" & CStr(i + 1) & "-" & Left(System.Language, 2) & ".txt" ENDIF
labelText[i].Text = File.Load(leText) labelText[i].ReadOnly = TRUE labelText[i].pos = 0 labelText[i].EnsureVisible() labelText[i].Foreground = 1 labelText[i].Font = Font["Noto Sans, 11,bold"] labelText[i].Enabled = TRUE
NEXT
FOR i = 0 TO 4 Panneau[i].Layout = [66, 34] Panneau[i].Expand = TRUE Panneau[i].Enabled = TRUE NEXT
TextArea3.Text &= ("Actuellement ") & " " & CStr(FMain.iNumImage + 1) & " " & (" design différents sont disponibles." & "\n"
CATCH Message.Error(Str(Error.Class) & ", code : " & Error.Code & ", " & Str(Error.Backtrace) & " à " Error.Wher " | Error.Text)
END
|
Les trois codes font exactement la même chose.
====================
Navigation :
<-- Liens du Wiki : <--<-- Accueil du WIKI : <-- <-- Rappels de Programmation <--====================
Documentation :
====================