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
| ' Gambas class file
PUBLIC betat AS BOOLEAN 'état d'un pin PUBLIC setat AS STRING 'état général des pins
PUBLIC lbl AS NEW Label(ME) 'label pour visualisation d'état PUBLIC pbx AS NEW PictureBox[] 'déclaration d'un tableau de PictureBox PUBLIC pnl AS NEW Panel[] 'déclaration d'un tableau Panel
PUBLIC SUB _new() crecompo() 'procédure dédiée à la création des composants initcompo() 'initialisation des composants END
PUBLIC SUB Form_Open() actusetat() 'actualise setat END
PUBLIC SUB grpbx_MouseDown() 'lorsque l'on clique sur une des pbx IF pbx[LAST.Tag].Picture = Picture["icon:/16/lamp"] THEN betat = FALSE 'si la pbx a cette image alors betat est faux IF pbx[LAST.Tag].Picture = Picture["icon:/16/important"] THEN betat = TRUE 'si la pbx a cette image alors betat est vrai betatinverse() 'inverse l'image de la pbx END
PUBLIC SUB grpbx_Enter() 'lorsque le pointeur passe sur une des pbx pbx[LAST.Tag].Tooltip = ("pbx ") & pbx[LAST.Tag].Tag 'affiche la valeur Tag de la pbx dans son tooltip END
PUBLIC SUB grpbx_Leave() 'lorsque le pointeur sort d'une pbx pbx[LAST.Tag].Tooltip = "" 'efface le tooltip END
PRIVATE SUB actusetat() 'actualise setat DIM i AS INTEGER lbl.Caption = "" 'initialise lbl setat = "" 'initialise setat FOR i = 0 TO 15 'pour chaque pbx on va relever sa valeur IF pbx[i].Picture = Picture["icon:/16/lamp"] THEN 'si la pbx affiche cette image setat &= 0 'alors la valeur binaire = 0 (on concatène dans la chaine) ELSE 'sinon setat &= 1 'alors la valeur binaire = 1 (on concatène dans la chaine) ENDIF NEXT lbl.Caption = ("Valeur de setat = ") & setat 'affiche la valeur générale de setat END
PRIVATE SUB betatinverse() 'inverse l'image de la pbx IF betat THEN 'si betat est vrai pbx[LAST.Tag].Picture = Picture["icon:/16/lamp"] 'affiche bleu ELSE 'sinon pbx[LAST.Tag].Picture = Picture["icon:/16/important"] 'affiche rouge ENDIF actusetat() 'actualise setat END
PRIVATE SUB crecompo() 'procédure dédiée à la création des composants DIM i AS INTEGER '-------------------------------------------------- 'création des pannels '-------------------------------------------------- FOR i = 0 TO 4 'nbr de panels qui sont créés pnl.Add(NULL, pnl.Count) 'on ajoute un panel et on le compte pnl[i] = NEW Panel(ME) 'le composant (comptabilisée par i) est un nouveau composant pnl[i].Tag = i 'on met le n° du composant (i) dans sa propriété .tag NEXT ' pnl[0] affichage chaine(FMain) ' pnl[1] intercalaire gauche(FMain) ' pnl[2] contient la valeur des pbx(FMain) ' pnl[3] intercalaire droite(FMain) ' pnl[4] contient l'appli(FMain) '-------------------------------------------------- 'création des PictureBox '-------------------------------------------------- FOR i = 0 TO 15 'pour i on compte de 0 à 15 (donc 16) pbx.Add(NULL, pbx.Count) 'on ajoute une picturebox et on la comptabilise pbx[i] = NEW PictureBox(ME) AS "grpbx" 'la picturebox (comptabilisée par i) est une nouvelle picturebox qui est créé dans pnl[2] et qui fait partie du Groupepbx pbx[i].Tag = i 'on met dans la propriété .tag de la picture box un numéro (i) WITH pbx[i] 'pour la pbx en cours (donc pour chaque pbx) .Reparent(pnl[2], 0, 0) 'la changer de container .H = 20 'initialise sa hauteur .Picture = Picture["icon:/16/lamp"] 'Picture["icon:/16/important"] .Stretch = TRUE 'l'image sera ajusté à la pbx END WITH NEXT 'on passe à la pbx suivante END
PRIVATE SUB initcompo() 'initialisation des composants DIM i AS INTEGER '-------------------------------------------------- 'préparation du formulaire '-------------------------------------------------- WITH ME 'configuration du formulaire .Arrangement = 2 .H = 480 'hauteur du composant .Title = Application.Title & " " & Application.Version 'ce qui est affiché dans la barre de titre de l'application .W = 300 'largeur du composant .X = 50 'placement x dans l'écran .Y = 20 'placement y dans l'écran END WITH WITH pnl[0] 'affichage chaine setat(FMain) .Arrangement = 1 'les enfants seront rangés horizontalement .H = 35 'hauteur du pnl END WITH WITH lbl 'visu générale de setat .Reparent(pnl[0], 0, 0) 'place le lbl dans le pnl[0] .Expand = TRUE 'le lbl ajustera sa taille au container END WITH WITH pnl[4] 'contient l'appli(FMain) .Arrangement = 1 'les enfants seront rangés horizontalement .Expand = TRUE 'le pnl ajustera sa taille au container END WITH WITH pnl[1] 'intercale gauche(FMain) .Reparent(pnl[4], 0, 0) 'déplace le pnl[1] dans le pnl[0] .Expand = TRUE 'le pnl ajustera sa taille au container END WITH WITH pnl[2] 'contient la valeur des pbx(FMain) .Reparent(pnl[4], 0, 0) 'déplace le pnl[1] dans le pnl[0] .Arrangement = 2 'les enfants seront rangés verticalement .Spacing = TRUE 'espace automatiquement les enfants .W = 20 'largeur du pnl END WITH WITH pnl[3] 'intercale droite(FMain) .Reparent(pnl[4], 0, 0) 'déplace le pnl[1] dans le pnl[0] .Expand = TRUE 'le pnl ajustera sa taille au container END WITH END
|