J'ai une TListBox avec multiselect et ExtendedSelect tous les deux réglés sur true. Je dois pouvoir faire glisser plusieurs éléments dans la zone de liste pour les réorganiser. Mon problème est ce qui se passe lorsque l'utilisateur clique sur un élément déjà sélectionné sans maintenir la touche CTRL ou MAJ enfoncée.TListBox Problèmes de glisser-déposer avec MultiSelect
Cas 1: DragMode est défini sur dmManual La sélection est effacée avant la souris. Cela ne permettra pas de faire glisser plusieurs éléments.
Cas 2: DragMode est défini sur dmAutomatic L'événement MouseDown ne se déclenche jamais. La sélection n'est pas effacée, donc le glissement est OK, mais l'utilisateur ne peut pas effacer la sélection en cliquant sur l'un des éléments sélectionnés. Cela pose vraiment un problème si tous les éléments sont sélectionnés ou si l'élément suivant que l'utilisateur souhaite sélectionner fait partie de la sélection en cours.
Notez que ce problème se produit uniquement si vous affectez quelque chose à DragObject dans la procédure OnStartDrag. Je pense que le problème disparaîtrait si OnStartDrag ne démarre que lorsque l'utilisateur déplace la souris. J'ai Mouse.DragImmediate: = faux ensemble mais je reçois toujours le StartDrag déclenché dès que je clique sur un élément dans la zone de liste.
J'utilise Delphi 7 pour ce projet, mais je vois le même comportement en Delphi 2007.