bonjour à tous,
Svp, est ce que c possible de selectionner un control en mode execution: cad faire apparaitre les points sur ses extremités.
Merci d'avance.
Version imprimable
bonjour à tous,
Svp, est ce que c possible de selectionner un control en mode execution: cad faire apparaitre les points sur ses extremités.
Merci d'avance.
Je ne pense pas que ce soit possible directement (en farfouillant un peu on pourrait y arriver ou au moins en simuler l'effet graphique).
Mais pourquoi voudrais tu faire ca ?
g une application superviseur, elle donne la possibilite à l'utilisateur de placer des usercontroles sur l'interface,il se peut qu'il veux par exemple supprimer un, donc il serait utile de distinguer le control selectioné parmi les autres .
les points qui apparessent sur les extremités du control permet egalement de simplifier son redimentionnement.
il faudrais que tu mette des petites shades blanches de type square.
salut
Bonjour
Tu trouveras ci-dessous les prémices d'un code qui affiches des petits carrés bleus. En préalable, crées un groupe de six shapes (shape1(0) à shape1(5)) avec leur propriété visible = false.
Ce code pourrai être appelé à partir de l'évènement click d'un contrôle, ou sur l'un moussedown par exemple.
Il te reste à le terminer, essentiellement en rendant invisibles ces petits carrés lorsque l'action est terminée ou la form fermée.Code:
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 Private Sub Control_Sel() Dim myControl As Control 'contiendra le control en cours Dim myWidth As Integer 'largeur du carré bleu Dim myHeight As Integer 'hauteur du carré bleu Set myControl = Me.ActiveControl myWidth = Shape1(0).Width myHeight = Shape1(0).Height 'Carré en haut à gauche du control Shape1(0).Left = myControl.Left - myWidth Shape1(0).Top = myControl.Top - myHeight Shape1(0).Visible = True 'Carré en haut au milieu du control Shape1(1).Left = myControl.Left + (myControl.Width / 2) - (myWidth / 2) Shape1(1).Top = myControl.Top - myHeight Shape1(1).Visible = True 'carré en haut à droite du control Shape1(2).Left = myControl.Left + myControl.Width Shape1(2).Top = myControl.Top - myHeight Shape1(2).Visible = True 'Carré en bas à gauche du composant Shape1(3).Left = myControl.Left - myWidth Shape1(3).Top = myControl.Top + Command2.Height Shape1(3).Visible = True 'Carré en bas au milieu du control Shape1(4).Left = myControl.Left + (myControl.Width / 2) - (myWidth / 2) Shape1(4).Top = myControl.Top + myControl.Height Shape1(4).Visible = True 'carré en bas à droite du control Shape1(5).Left = myControl.Left + myControl.Width Shape1(5).Top = myControl.Top + myControl.Height Shape1(5).Visible = True End Sub
Tu peux par exemple utiliser l'évènement MouseDown du formulaire pour affiche et masquer les petits carrés bleus.
Ceci étant, il y a d'autres moyens d'identifier un contrôle qui me semblent plus faciles à mettre en oeuvre (le passer en couleur rouge ou autre par exemple).Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) 'Appelle la procédure d'identification du contrôle en cours sur appui du bouton 'droit de la souris avec la touche ALT enfoncée ou rend mles carrés de sélection 'invisibles avec la touche MAJ enfoncée. Dim i As Integer If Button = vbRightButton And Shift = vbAltMask Then 'if essai_menus.ActiveControl 'MsgBox Me.activecontrol.Name Call Control_Sel ElseIf Button = vbRightButton And Shift = vbShiftMask Then For i = 0 To 5 Shape1(i).Visible = False Next i End If End Sub