Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

touches de direction

3 réponses
Avatar
John-Pet
Bonjours à toutes et tous

Le problème:
J'ai une picturebox2 dans une autre picturebox1, une hscroller et une
vscroller.
La picbox2.picture est en faite une carte .
La picbox2 est plus grande que la picbox1 et avec les barscroll je peux
me deplacer sur cette carte mais en ne voyant qu'une partie de la
carte.
Sur cette carte je peux tracer des lignes avec le bouton droit de la
souris, mais que sur la partie visible.
Tout cela fonctionne très bien...

Mon souhait:
quand je dessine la ligne avec le bouton droit de la souris, je
voudrais pouvoir me déplacer en même temps dans les parties invisibles
de la carte, j'ai pensé aux touches de direction du clavier pour bouger
la carte en même temps que ma ligne se trace, mais comment faire ?

merci

--
Adresse mail : john-pet@wanadoo.fr
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

3 réponses

Avatar
Jacques93
Bonjour John-Pet,
John-Pet a écrit :
Bonjours à toutes et tous

Le problème:
J'ai une picturebox2 dans une autre picturebox1, une hscroller et une
vscroller.
La picbox2.picture est en faite une carte .
La picbox2 est plus grande que la picbox1 et avec les barscroll je peux
me deplacer sur cette carte mais en ne voyant qu'une partie de la carte.
Sur cette carte je peux tracer des lignes avec le bouton droit de la
souris, mais que sur la partie visible.
Tout cela fonctionne très bien...

Mon souhait:
quand je dessine la ligne avec le bouton droit de la souris, je voudrais
pouvoir me déplacer en même temps dans les parties invisibles de la
carte, j'ai pensé aux touches de direction du clavier pour bouger la
carte en même temps que ma ligne se trace, mais comment faire ?

merci




Je ne suis pas sur que cela corresponde exactement à tes besoins. Le
code suivant permet de déplacer Picture2 dans Picture1 grâce aux flèches
(comme si on se servait des ascenseurs avec la souris). Reste à
synchroniser cela avec les coordonnées de la souris :

Option Explicit

Private Sub Form_Load()
With Me.VScroll1
.Max = Me.Picture2.Height - (Me.Picture1.Height - Me.HScroll1.Height)
.SmallChange = 30
.LargeChange = 300
End With
With Me.HScroll1
.Max = Me.Picture2.Width - (Me.Picture1.Width - Me.VScroll1.Width)
.SmallChange = 30
.LargeChange = 300
End With
Me.KeyPreview = True
End Sub

Private Sub HScroll1_Change()
Me.Picture2.Left = -Me.HScroll1.Value
End Sub

Private Sub VScroll1_Change()
Me.Picture2.Top = -Me.VScroll1.Value
End Sub


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
With HScroll1
If .Value > .LargeChange Then
.Value = .Value - .LargeChange
Else
.Value = 0
End If
End With

Case vbKeyRight:
With Me.HScroll1
If .Value + .LargeChange < .Max Then
.Value = .Value + .LargeChange
Else
.Value = .Max
End If
End With

Case vbKeyUp:
With Me.VScroll1
If .Value > .LargeChange Then
.Value = .Value - .LargeChange
Else
.Value = 0
End If
End With

Case vbKeyDown:
With Me.VScroll1
If .Value + .LargeChange < .Max Then
.Value = .Value + .LargeChange
Else
.Value = .Max
End If
End With

End Select
End Sub

--

Cordialement,

Jacques.
Avatar
John-Pet
Merci Jacques

c'est exactement ce que je cherchais, quelques modifs nécessaires est
c'est OK

encore merci

JP


Le 05/07/2008, Jacques93 a supposé :
Bonjour John-Pet,
John-Pet a écrit :
Bonjours à toutes et tous

Le problème:
J'ai une picturebox2 dans une autre picturebox1, une hscroller et une
vscroller.
La picbox2.picture est en faite une carte .
La picbox2 est plus grande que la picbox1 et avec les barscroll je peux me
deplacer sur cette carte mais en ne voyant qu'une partie de la carte.
Sur cette carte je peux tracer des lignes avec le bouton droit de la
souris, mais que sur la partie visible.
Tout cela fonctionne très bien...

Mon souhait:
quand je dessine la ligne avec le bouton droit de la souris, je voudrais
pouvoir me déplacer en même temps dans les parties invisibles de la carte,
j'ai pensé aux touches de direction du clavier pour bouger la carte en même
temps que ma ligne se trace, mais comment faire ?

merci




Je ne suis pas sur que cela corresponde exactement à tes besoins. Le code
suivant permet de déplacer Picture2 dans Picture1 grâce aux flèches (comme si
on se servait des ascenseurs avec la souris). Reste à synchroniser cela avec
les coordonnées de la souris :

Option Explicit

Private Sub Form_Load()
With Me.VScroll1
.Max = Me.Picture2.Height - (Me.Picture1.Height - Me.HScroll1.Height)
.SmallChange = 30
.LargeChange = 300
End With
With Me.HScroll1
.Max = Me.Picture2.Width - (Me.Picture1.Width - Me.VScroll1.Width)
.SmallChange = 30
.LargeChange = 300
End With
Me.KeyPreview = True
End Sub

Private Sub HScroll1_Change()
Me.Picture2.Left = -Me.HScroll1.Value
End Sub

Private Sub VScroll1_Change()
Me.Picture2.Top = -Me.VScroll1.Value
End Sub


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyLeft:
With HScroll1
If .Value > .LargeChange Then
.Value = .Value - .LargeChange
Else
.Value = 0
End If
End With

Case vbKeyRight:
With Me.HScroll1
If .Value + .LargeChange < .Max Then
.Value = .Value + .LargeChange
Else
.Value = .Max
End If
End With

Case vbKeyUp:
With Me.VScroll1
If .Value > .LargeChange Then
.Value = .Value - .LargeChange
Else
.Value = 0
End If
End With

Case vbKeyDown:
With Me.VScroll1
If .Value + .LargeChange < .Max Then
.Value = .Value + .LargeChange
Else
.Value = .Max
End If
End With

End Select
End Sub



--
Adresse mail :
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Jacques93
Bonjour John-Pet,
John-Pet a écrit :
Merci Jacques

c'est exactement ce que je cherchais, quelques modifs nécessaires est
c'est OK

encore merci

JP




Merci du retour :-)

--

Cordialement,

Jacques.