OVH Cloud OVH Cloud

Redimensionner Label

4 réponses
Avatar
Emcy
Bonjours,

J'ai un Label dans un UserForm : je voudrais que lorsque je clic(et que je
laisse maintenu) sur le bord au ou bas du label (pas les gauche et droit),
je puisse redimenssionner sur une grille en haut ou en bas mon Label (je
veux aussi que mon icone de souris change).

vous avez une solution ?

4 réponses

Avatar
Michel Pierron
Bonsoir Emcy; pas évident ce que tu veux faire.
Je n'ai pas trop le temps actuellement, mais en première approche:
Dans le module UserForm, le contrôle peut être modifier si la checkbox est
cochée:
Propriété ControlTipText du CheckBox: "Cocher pour modifier le label !"

Private Modif As Boolean

Private Sub CheckBox1_Click()
Modif = CheckBox1.Value
If Not Modif Then
CheckBox1.ControlTipText = "Cocher pour modifier le label !"
Else
CheckBox1.ControlTipText = "Clic Gauche REDIMENSIONNER, Clic droit DEPLACER
le label !"
End If
End Sub

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If Modif Then
Me.Label1.BorderStyle = 1
MousePointer = fmMousePointerSizeNS
End If
End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If Not Modif Then Exit Sub
If Button = 1 Then CtlRedim Me.Label1, X, Y
If Button = 2 Then CtlMove Me.Label1, X, Y
End Sub

Private Sub CtlRedim(obj As Object, ByVal X As Single, ByVal Y As Single)
If X > 0 And Y > 0 Then
obj.Height = Y
'obj.Width = X
End If
End Sub

Private Sub CtlMove(obj As Object, ByVal X As Single, ByVal Y As Single)
obj.Move obj.Left, obj.Top + Y
'obj.Move obj.Left + X, obj.Top + Y
End Sub

Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer,
ByVal X As Single, ByVal Y As Single)
Me.Label1.BorderStyle = 0
MousePointer = fmMousePointerDefault
End Sub

MP

"Emcy" a écrit dans le message de
news:
Bonjours,

J'ai un Label dans un UserForm : je voudrais que lorsque je clic(et que je
laisse maintenu) sur le bord au ou bas du label (pas les gauche et droit),
je puisse redimenssionner sur une grille en haut ou en bas mon Label (je
veux aussi que mon icone de souris change).

vous avez une solution ?




Avatar
Emcy
Merci de ton aide mais c'est pas exactement ce que je veux :
-Tout d'abors je ne t'avais pas demandé de déplacer mon Label mais bon, j'en
avais aussi besoin : le problème est que je veux que l'événement se fasse
aussi avec un clic gauche de la souris (partout dans le label à part sur les
bord).
-je veux pouvoir redimensionner en bas (ça le fait) et en haut (ça le fait
pas) mon label
-je veux que le redimensionnement se fasse sur une grille (de 100 par
exemple)



"Michel Pierron" a écrit dans le message de
news:
Bonsoir Emcy; pas évident ce que tu veux faire.
Je n'ai pas trop le temps actuellement, mais en première approche:
Dans le module UserForm, le contrôle peut être modifier si la checkbox est
cochée:
Propriété ControlTipText du CheckBox: "Cocher pour modifier le label !"

Private Modif As Boolean

Private Sub CheckBox1_Click()
Modif = CheckBox1.Value
If Not Modif Then
CheckBox1.ControlTipText = "Cocher pour modifier le label !"
Else
CheckBox1.ControlTipText = "Clic Gauche REDIMENSIONNER, Clic droit
DEPLACER

le label !"
End If
End Sub

Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If Modif Then
Me.Label1.BorderStyle = 1
MousePointer = fmMousePointerSizeNS
End If
End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
If Not Modif Then Exit Sub
If Button = 1 Then CtlRedim Me.Label1, X, Y
If Button = 2 Then CtlMove Me.Label1, X, Y
End Sub

Private Sub CtlRedim(obj As Object, ByVal X As Single, ByVal Y As Single)
If X > 0 And Y > 0 Then
obj.Height = Y
'obj.Width = X
End If
End Sub

Private Sub CtlMove(obj As Object, ByVal X As Single, ByVal Y As Single)
obj.Move obj.Left, obj.Top + Y
'obj.Move obj.Left + X, obj.Top + Y
End Sub

Private Sub Label1_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer,

ByVal X As Single, ByVal Y As Single)
Me.Label1.BorderStyle = 0
MousePointer = fmMousePointerDefault
End Sub

MP

"Emcy" a écrit dans le message de
news:
Bonjours,

J'ai un Label dans un UserForm : je voudrais que lorsque je clic(et que
je


laisse maintenu) sur le bord au ou bas du label (pas les gauche et
droit),


je puisse redimenssionner sur une grille en haut ou en bas mon Label (je
veux aussi que mon icone de souris change).

vous avez une solution ?








Avatar
Michel Pierron
Bonjour Emcy;
C'est finalement plus simple que je ne le pensais.
Sur le label que tu veux modifier en dynamique (supposons Label1), placer 2 labels
à cheval sur les côtés haut et bas avec les caractéristiques communes suivantes:
Caption = ""
Height = 2
Width = Label1.Width
Left = Label1.Left
BorderStyle = 0
BackStyle = 0
MousePointer = 7

Nommons t le label qui sera placé à cheval sur le côté haut de Label1
et b le label qui sera placé à cheval sur le côté bas de Label1
Propriété Top de t = Label1.Top - 1
Propriété Top de b = Label1.Top + Label1.Height - 1

Dans le module UserForm:
' Label1 -> top min = 6
' Label1 -> hauteur min = 14
' Label1 -> hauteur max = Me.InsideHeight -12
Private Sub b_MouseMove(ByVal Button As Integer, ByVal Shift As Integer _
, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
If b.Top + Y < Label1.Top + 13 Then Exit Sub
If b.Top + Y > Me.InsideHeight - 6 Then Exit Sub
b.Move , b.Top + Y
Label1.Move , , , b.Top - t.Top
End If
End Sub

Private Sub t_MouseMove(ByVal Button As Integer, ByVal Shift As Integer _
, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
If t.Top + Y < 5 Then Exit Sub
If t.Top + Y > b.Top - 13 Then Exit Sub
t.Move , t.Top + Y
Label1.Move , t.Top + 1, , b.Top - t.Top
End If
End Sub

Le cursor change quand le mulot survole les côtés haut et bas de Label1 et l'appui
sur le bouton gauche autorise le redimensionnement vertical de Label1.
MP

"Emcy" a écrit dans le message de
news:
Bonjours,

J'ai un Label dans un UserForm : je voudrais que lorsque je clic(et que je
laisse maintenu) sur le bord au ou bas du label (pas les gauche et droit),
je puisse redimenssionner sur une grille en haut ou en bas mon Label (je
veux aussi que mon icone de souris change).

vous avez une solution ?




Avatar
Emcy
Merci,
Bravo, Il fallait y penser

"Michel Pierron" a écrit dans le message de
news:
Bonjour Emcy;
C'est finalement plus simple que je ne le pensais.
Sur le label que tu veux modifier en dynamique (supposons Label1), placer
2 labels

à cheval sur les côtés haut et bas avec les caractéristiques communes
suivantes:

Caption = ""
Height = 2
Width = Label1.Width
Left = Label1.Left
BorderStyle = 0
BackStyle = 0
MousePointer = 7

Nommons t le label qui sera placé à cheval sur le côté haut de Label1
et b le label qui sera placé à cheval sur le côté bas de
Label1

Propriété Top de t = Label1.Top - 1
Propriété Top de b = Label1.Top + Label1.Height - 1

Dans le module UserForm:
' Label1 -> top min = 6
' Label1 -> hauteur min = 14
' Label1 -> hauteur max = Me.InsideHeight -12
Private Sub b_MouseMove(ByVal Button As Integer, ByVal Shift As Integer _
, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
If b.Top + Y < Label1.Top + 13 Then Exit Sub
If b.Top + Y > Me.InsideHeight - 6 Then Exit Sub
b.Move , b.Top + Y
Label1.Move , , , b.Top - t.Top
End If
End Sub

Private Sub t_MouseMove(ByVal Button As Integer, ByVal Shift As Integer _
, ByVal X As Single, ByVal Y As Single)
If Button = 1 Then
If t.Top + Y < 5 Then Exit Sub
If t.Top + Y > b.Top - 13 Then Exit Sub
t.Move , t.Top + Y
Label1.Move , t.Top + 1, , b.Top - t.Top
End If
End Sub

Le cursor change quand le mulot survole les côtés haut et bas de Label1 et
l'appui

sur le bouton gauche autorise le redimensionnement vertical de Label1.
MP

"Emcy" a écrit dans le message de
news:
Bonjours,

J'ai un Label dans un UserForm : je voudrais que lorsque je clic(et que
je


laisse maintenu) sur le bord au ou bas du label (pas les gauche et
droit),


je puisse redimenssionner sur une grille en haut ou en bas mon Label (je
veux aussi que mon icone de souris change).

vous avez une solution ?