Bonjour,
dans une StringGrid, j'aimerais obtenir un traitement similaire à Office:
Je sélectionne un groupe de cellules à la souris, relâche son bouton gauche puis immédiatement après cette action, me déplace verticalement avec la roulette de la souris... Evidemment à ce moment, visuellement le bloc "sélectionné" ne s'agrandit pas : il se déplace verticalement dans la feuille.
Or avec Lazarus, une même procédure, produit un bloc continu qui s'allonge avec la MouseWheel... à moins qu'une option de la StringGrid m'ait échappée. J'avais "en attendant" partiellement réglé ce problème dans un composant, en associant la sélection à un array de booleans... et à une image dans la FixedColumn... tout en délaissant ce problème de "SelectedColor" des lignes ou cellules sélectionnées. J'ai un peu de temps pour le retravailler.
Actuellement, avec l'array de booleans, je serais capable de gérer le problème des couleurs, si après une sélection (au clic gauche), je pouvais avant l'usage du OnMouseWheel remettre en quelque sorte le "Flag de sélection à false"... Et là, je ne sais pas faire.
Cette petite vidéo illustre mon problème : le SelectedColor (le vrai) de la SG est clRed alors que mon émulation des lignes sélectionnées est clBlue. Ici, j'opère avec le bouton Ctrl du clavier enfoncé pour pouvoir faire des pseudo-sélections non contigües mais son usage est neutre dans mon problème.
Ce qui est curieux, c'est la différence de traitement pratiquée par Lazarus aussi bien sous Win que sous Nux : après la deuxième ligne bleue pseudo-sélectionnée, j'utilise MouseWheel et cela fonctionne correctement : chaque ligne est sélectionnée (en clRed) une par une. Ma dernière pseudo-sélection est le bloc bleu... et là, l'usage de MouseWheel immédiatement après avoir relâché le bouton de la souris, allonge le bloc de "vraie" sélection (clRed) comme si, la StringGrid était restée en mode sélection et le restait après chaque ligne contrairement à la description précédente... donc en fait, comme si le OnMouseUp n'avait entraîné aucune action à ce niveau.
Cela m'ennuirait quelque peu d'envisager une autre approche que celle de l'array de booleans qui de plus est simple conceptuellement parlant... et reste insensible aux variations du composant de base qui ont été nombreuses depuis la 0.9.28. Et même si sa maintenance l'exigeait, il resterait probablement très facilement adaptable. Mais à défaut...
Cordialement. Gilles
Partager