VBA - Userform - MouseMove

VBA - Userform - MouseMove - VB/VBA/VBS - Programmation

Marsh Posté le 16-11-2007 à 18:50:16    

Mes amis,
 
j'ai mis dans un userform une image qui peut être déplacée par l'utilisateur via une procédure :
 
private sub image_MouseMove(...)
 
pour empécher qu'on ne déplace rop l'image, j'écris :
 
if image.left>10 then exit sub
 
sauf que si on la déplace super vite, on peut l'amener au-delà de 10...
Je pense que comme mousemove se répète en permanence tant qu'on manipule l'image, le rafraichissement est un peu longuet et on peut le prendre de vitesse.
 
Je me disais donc que je pourrais créer un double et le limiter dès le départ :
 
dim Lft as double...
 
et je crois qu'on peut effectivement limiter une variable numérique lors de sa déclaration... non ?
 
Vous avez 1/4 d'heure !
Merci

Reply

Marsh Posté le 16-11-2007 à 18:50:16   

Reply

Marsh Posté le 17-11-2007 à 10:34:55    

Je ne crois pas que l'on puisse limiter une variable numérique lors de sa déclaration en VBA (mais je crois qu'on peut  le faire en Cobol dans une certaine mesure).
 
J'ai rencontré le même problème de coordonnées de la souris, qui ne sont pas continues. Parfois, cela peut effectivement passer d'un bout à l'autre de l'écran sans que Windows ne récupère toutes les points intermdiaires.
La solution généralement adoptée est d'utiliser les API nommées SetCapture() et ReleaseCapture().  
 
Bon courage !

Reply

Marsh Posté le 17-11-2007 à 14:06:52    

plutot que de faire un exit sub, tu peux faire un if image.left>10 then image.left=10
 
Je pense que ça doit passer, ça, non ?

Reply

Marsh Posté le 18-11-2007 à 00:08:07    

Non, le problème ne vient pas de la procédure mais de la lenteur d'exécution.
Si je vais lentement tout va bien si je vais trop vite l'image dépasse de quelques px (en fonction de la vitesse)...
 

Reply

Marsh Posté le 06-03-2008 à 12:17:50    

Salut, j'ai moi une question plus bête, je n'ai pas accès aux fonctions _MouseMove() que ce soit sur mes forms, labels, buttons...
 
J'ai du rater une reference/bibliothèque, quelqu'un pour m'aiguiller?
 
Merci.

Reply

Marsh Posté le 08-03-2008 à 12:55:48    

Quand l'image est déplacée trop loin, que se passe t-il ? Une erreur ? Dans ce cas, tu peux peut être récupérer une bonne position d'image en jouant avec le gestionnaire d'erreur et la fonction err.number ?


Message édité par otobox le 08-03-2008 à 12:57:04

---------------
OtObOxBlOg - - - Etre seul à avoir tort  c'est plus difficile, mais c'est bien plus beau que d'avoir raison avec une bande de cons
Reply

Marsh Posté le 25-03-2008 à 22:10:33    

Hey, merci pour ta réponse.
Le problème résidait dans mon utilisation de MouseMove()
 
Avant :  

Code :
  1. Private Sub Label_mouseMove()
  2.   'blabla
  3. End sub


Après :  

Code :
  1. Private Sub Label_mouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
  2.   'blabla
  3. End sub


 
Et la ça marche.
 
Oui, je sais, c'était pas bien compliqué mais ça m'a fait ch** quelques heures (je suis pas informaticien moi)


Message édité par NachoLibre le 25-03-2008 à 22:11:13
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed