Désélectionner un StringGrid

Résolu
Signaler
Messages postés
118
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
17 novembre 2009
-
Messages postés
118
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
17 novembre 2009
-
Bonjour à tous,
Une petite question que je n'arrive pas à résoudre...Dans les options d'un StringGrid, quand on a mis à True la sélection de la ligne, lors du premier affichage, la première ligne apparaît comme sélectionnée.
Comment faire pour supprimer cette sélection ? Action identique lorsque l'on Clique sur une ligne, je voudrais la désélectionner par programme....
Attention le StringGrid est un objet complexe puisque lorsque l'on Clique sur une ligne, la précédente sélectionnée redevient normale. J'ai essayé de dériver le code, mais rien......
Merci
A+

4 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
En effet, le fait d'appeler cela dans le OnDrawCell ne peux aboutir qu'à du "flickering". Une solution pourrait être de placer ce code dans l'evenement OnMouseUp. Comme cela tu visualises la ligne sélectionnée mais dès le relachement la sélection disparait.

N.B. Ne pas mettre ce code dans le OnMouseMove sinon ...

P.S. Si cela ne te convient pas, il va falloir alors choisir la solution du OnDrawCell pour redessiner toutes tes cellules dont l'état est "sélectionné".

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonsoir


Au plus simple, du moins ce qui me vient à l'esprit en premier, je dirais :

Dans l'événement OnDrawCell de ton StringGrid, tu ajoutes une sélection nulle.

Const
  SelectionNulle : TGridRect = ( Left : -1 ; Top : -1 ; Right : -1 ; Bottom : -1 ) ;
Begin
  StringGrid1.Selection := SelectionNulle ;
end ;

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein
Messages postés
118
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
17 novembre 2009

Salut,
Ta solution est interressante (je l'ai testé), mais je voudrais éviter justement le OnDrawCell qui necessite l'action RePaint sytématique du StringGrid, qui pour de grosses grilles ralentit le programme.
A+
Messages postés
118
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
17 novembre 2009

Je vais essayé le OnMouseUp (pas OnMouseMove cela ferait désordre).
Malheureusement dans TStringGrid tout tourne autour de OnDrawCell
merci
A+