Le 26 août 06 à 10:10 Matin, Alain Legarcon a écrit:
Bonjour,
Je souhaite effectuer de façon automatique une action (renuméroter
des lignes) après avoir fait un glissé ("DragReorder") d'une ligne
dans un listbox (suis-je clair?)
Pour cela, j'avais pensé mettre cette renumérotation dans
l'évènement MouseUp.
Malheureusement celui-ci ne se déclenche que si l'évenement
MouseDown retourne "True" ce qui masque alors le fonctionnement
normal du MouseDown et empêche donc le glissé d'une ligne vers une
nouvelle position.
D'où ma question : comment déclencher cet évènement standard
J'ai essayé un "listbox.mousedown" qui n'est pas accepté..
Merci d'avance
Alain Legarçon
Effectivement, en Realbasic, la plupart des utilisations de "MouseUp"
requièrent d'altérer le fonctionnement normal du contrôle (car il
faut renvoyer "vrai" à l'événement "MouseDown", ce qui indique au
système que vous avez/allez gérer l'événement).
Cependant, il existe un événement;: "DragReorderRows".
Alors, oui, c'est vrai, il s'exécute avant que le changement d'ordre
se fasse. Mais il s'exécute, comme son nom l'indique, quand
l'utilisateur a déplacé une ligne et, en plus, quand la souris a été
relâchée.
Et là, c'est vieux comme le monde... de Realbasic: il faut utiliser
un compteur ("timer", si vous préférez).
Dans l'événement "DragReorderRows", vous écrivez "MyTimer.Mode=1"
puis vous faites la remise en ordre dans "MyTimer".
Je sais: c'est peu commode mais c'est bien connu comme limitation de
Realbasic.
(notez que je suis resté à realbasic 5.5.5, mais ça n'a certainement
pas changé).
Sincèrement,
Arnaut
|