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
| ' Gambas class file
'-------------------------------------------------------------------- ' ' Auteur : Didier18 ' Questions sur ce soft, laisser MP sur le site. ' ' Remerciements : ' Flachy Joe (simplification de ligne de code) ' spheris (tradution et exemples) ' Jack (idée de résolution sur traduction) ' ' http://www.gambasforge.org (hebergement du présent exemple) ' '-------------------------------------------------------------------- ' PRIVATE CBBox AS NEW ComboBox(ME) PRIVATE CBBoxDuPauvre AS NEW ButtonBox(ME) AS "CBBoxDuPauvre" PRIVATE CBBoxDuPauvreListe AS NEW ListBox(ME) AS "CBBoxDuPauvreListe" PRIVATE lblOriginal AS NEW Label(ME) PRIVATE lblDuPauvre AS NEW Label(ME) PRIVATE mylanguage AS STRING = "fr"
PUBLIC SUB _new() END
PUBLIC SUB Form_Open() 'ce que l'on fait au lancement du programme DIM i AS INTEGER ME.Center 'Centre la fenêtre dans l'écran updatetranslation() lblOriginal = NEW Label(ME) 'création d'1 label lblOriginal.Move(20, 10, 100, 40) 'redimensionne et place le label lblOriginal.Caption = ("ComboBox") & Chr(10) & ("Original") 'texte écrit dans le label lblDuPauvre = NEW Label(ME) 'création d'1 label lblDuPauvre.Move(150, 10, 100, 40) 'redimensionne et place le label lblDuPauvre.Caption = ("ComboBox") & Chr(10) & ("Du pauvre") 'texte écrit dans le label ' '------------------------------------ComboBox qt-------------------- ' FOR i = 0 TO 30 'on remplis le Combobox CBBox.add("Item" & i, i) 'il affichera (Item et son index) et son (index) dans le ComboBox NEXT CBBox.Move(10, 50, 100, 24) 'redimensionne et place le ComboBox ' '------------------------------------ComboBox du pauvre-------------- ' FOR i = 0 TO 30 'on remplis le CBBoxDuPauvreListe CBBoxDuPauvreListe.Add("Item" & i, i) NEXT CBBoxDuPauvre.Move(150, 50, 100, 24) 'redimensionne et place le CBBoxDuPauvre CBBoxDuPauvreListe.Move(150, 74, 100, 150) 'redimensionne et place le CBBoxDuPauvreListe CBBoxDuPauvreListe.Visible = FALSE 'cache CBBoxDuPauvreListe CBBoxDuPauvre.Text = CBBoxDuPauvreListe.List[0] 'on écrit une valeur dans CBBoxDuPauvre END
PUBLIC SUB CBBoxDuPauvre_Click() 'Lorsque l'on clique sur le bouton du ComboBox Du Pauvre 'Merci à Flachy Joe pour ce bout de code... CBBoxDuPauvreListe.Visible = NOT CBBoxDuPauvreListe.Visible 'CBBoxDuPauvreListe n'est pas visible... On le rend visible IF CBBoxDuPauvreListe.Visible THEN CBBoxDuPauvreListe.SetFocus 'si CBBoxDuPauvreListe est visible alors on lui passe le focus END
PUBLIC SUB CBBoxDuPauvreListe_Click() 'Lorque l'on clique sur 1 item de la liste DIM i AS INTEGER i = CBBoxDuPauvreListe.Index 'on récupère l'index sur lequel on a cliqué CBBoxDuPauvre.Text = CBBoxDuPauvreListe.List[i] 'on affiche dans le ComboBox Du Pauvre l'item en fonction de l'index CBBoxDuPauvreListe.Visible = FALSE 'puis on cache CBBoxDuPauvreListe END
PUBLIC SUB CBBoxDuPauvreListe_KeyPress() 'ce que l'on fait si on clique sur ce menu DIM i AS INTEGER i = CBBoxDuPauvreListe.Index 'on récupère l'index sur lequel on est positionné 'on affiche dans le ComboBox Du Pauvre l'item en fonction de l'index IF Key.code = Key.Return THEN CBBoxDuPauvre.Text = CBBoxDuPauvreListe.List[i] CBBoxDuPauvreListe.Visible = FALSE 'puis on cache CBBoxDuPauvreListe END
PRIVATE SUB updatetranslation() 'ce que l'on fait si on clique sur ce menu 'C'est ici que se passe la traduction. 'On a récupéré via le menu, la langue de translation. 'Elle est associée à la feuille du même nom... DIM myfile AS File 'on ouvre myfile (qui est dans le chemin...) en lecture myfile = OPEN Application.Path & "/" & mylanguage FOR READ LINE INPUT #myfile, ME.Text 'on traduit le titre de la fenêtre LINE INPUT #myfile, mnu_fichier.Caption 'on traduit le menu Fichier LINE INPUT #myfile, mnu_quitter.Caption 'on traduit le menu Quitter LINE INPUT #myfile, mnu_lang.Caption 'on traduit le menu Langage LINE INPUT #myfile, mnu_en.Caption 'on traduit le men Anglais LINE INPUT #myfile, mnu_es.Caption 'on traduit le menu Espagnol LINE INPUT #myfile, mnu_fr.Caption 'on traduit le menu Français LINE INPUT #myfile, mnu_it.Caption 'on traduit le menu Italien LINE INPUT #myfile, mnu_ru.Caption 'on traduit le menu Russe LINE INPUT #myfile, lblOriginal.Caption 'on traduit le label lblOriginal LINE INPUT #myfile, lblDuPauvre.Caption 'on traduit le label lblDuPauvre CLOSE #myfile 'on ferme myfile END
PUBLIC SUB mnu_en_Click() 'ce que l'on fait si on clique sur ce menu mylanguage = "en" 'indique la feuille de translation updatetranslation() 'puis on actualise END
PUBLIC SUB mnu_es_Click() 'ce que l'on fait si on clique sur ce menu mylanguage = "es" 'indique la feuille de translation updatetranslation() 'puis on actualise END
PUBLIC SUB mnu_fr_Click() 'ce que l'on fait si on clique sur ce menu mylanguage = "fr" 'indique la feuille de translation updatetranslation() 'puis on actualise END
PUBLIC SUB mnu_it_Click() 'ce que l'on fait si on clique sur ce menu mylanguage = "it" 'indique la feuille de translation updatetranslation() 'puis on actualise END
PUBLIC SUB mnu_ru_Click() 'ce que l'on fait si on clique sur ce menu mylanguage = "ru" 'indique la feuille de translation updatetranslation() 'puis on actualise END
PUBLIC SUB mnu_quitter_Click() 'ce que l'on fait si on clique sur ce menu QUIT 'on quitte END
|
C'est vrai que les combobox à rallonge ; c'est pas très joli!
L'idée est bonne.
Je n'ai pas encore tenté la personnalisation de contrôles.
Bravo pour cet exemple, ça montre des possibilités.
J'ai testé et en gros, à la souris, ça fonctionne bien.
Pour info., je viens de voir que si tes utilisateurs n'utilisent que le
clavier, il ne peuvent pas sélectionner toutes les valeurs dans la liste du combobox du pauvre.
J'ai cherché un peu mais je n'ai aucune idée du pourquoi !
Bravo encore et bonne journée.