IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Sélection des cellules dans un TStringList [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut Sélection des cellules dans un TStringList
    Bonjour ,

    est-il possible de sélectionner, par logiciel, une cellule précise d'un TStringList, comme on peut la sélectionner en cliquant dessus avec la souris. En gros, je voudrais me déplacer dans la grille avec les touches fléchées et/ou passer automatiquement à la cellule suivante en appuyant sur la touche <ENTER>. J'ai cherché une fonction du genre TStringList.SelectCell[X,Y] mais je n'ai rien trouvé. Et je n'arrive pas à trouver une astuce pour le faire .

    Si quelqu'un a une idée, merci d'avance pour sa réponse.

    Amicalement,

    naute.

  2. #2
    Membre Expert

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Par défaut
    Bonjour,

    Je suppose que tu parles de TStringGrid et non de TStringList.
    A vrai dire, je ne comprends pas ta question, pcq le TStringGrid réagit aux flèches de direction et touche Enter, à condition évidemment que le StringGrid soit focalisé !
    La touche Enter a un comportement différent selon les options du grid.
    Fais un test en modifiant les options : goEditing, goAlwaysShowEditor, goDrawFocusSelected...

    Que veux-tu faire exactement ?

    Cordialement
    Thierry

  3. #3
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par ThWilliam Voir le message
    Bonjour,
    Je suppose que tu parles de TStringGrid et non de TStringList.
    Oui, bien sûr. Il commençait à se faire tard!
    Citation Envoyé par ThWilliam Voir le message
    A vrai dire, je ne comprends pas ta question, pcq le TStringGrid réagit aux flèches de direction et touche Enter, à condition évidemment que le StringGrid soit focalisé !
    La touche Enter a un comportement différent selon les options du grid.
    Fais un test en modifiant les options : goEditing, goAlwaysShowEditor, goDrawFocusSelected...
    goEditing, goAlwaysShowEditor, goDrawFocusSelected sont toutes les trois à True.
    Les touches fléchées me permettent de me déplacer dans la colonne, mais pas dans la rangée. En haut = à gauche et en bas = à droite. Je peux monter et descendre, mais pas aller à droite ou à gauche. La touche <Enter> n'a aucun effet.
    Mon TStringGrid est celui du paquet "Solution" (TLSStrinGrid) fourni par Code Typhon mais il est directement dérivé de celui fourni par Lazarus. Je l'utilise parce qu’il fournit quelques fonctionnalités supplémentaires, notamment la suppression d'une ligne de la grille.
    Citation Envoyé par ThWilliam Voir le message
    Que veux-tu faire exactement ?
    Thierry
    J'aimerais que la saisie, dans chaque cellule, ne nécessite pas l'utilisation de la souris. J'ai, par exemple, des CheckBox(s) dans ma grille, et j'aimerais pouvoir y accéder avec les touches fléchées et les positionner avec la touche <Enter>.

    Citation Envoyé par OR34a
    L'accès à une cellule d'un stringGrid est possible par l'instruction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrGrid_Rapp.Cells[i , j] ;
    C'est vrai pour lire ou écrire une valeur dans la cellule, mais pas pour sélectionner la cellule et pour y saisir une valeur. Enfin, sauf erreur.

    Citation Envoyé par Jipété
    Truc mnémotechnique : utiliser c, r pour column, row
    Oui, et d'ailleurs, quand j'ai écrit TStringList.SelectCell[X,Y], j'aurais du écrire TStringList.SelectCell[aCol,aRow]: ça aurait fait plaisir à Stéphane (Collaro) (pas sûr de l'orthographe ).

    Merci beaucoup pour vos réponses,
    amicalement,

    naute

  4. #4
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 130
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 130
    Par défaut
    Citation Envoyé par naute Voir le message
    goEditing, goAlwaysShowEditor, goDrawFocusSelected sont toutes les trois à True.
    goEditing suffit pour que <Enter> active l'éditeur dans la cellule sélectionnée.

    Citation Envoyé par naute Voir le message
    Les touches fléchées me permettent de me déplacer dans la colonne, mais pas dans la rangée. En haut = à gauche et en bas = à droite. Je peux monter et descendre, mais pas aller à droite ou à gauche. La touche <Enter> n'a aucun effet.
    Le TStringgrid de base de mon Lazarus 1.4.0 posé sur une bête form, F9 et en avant, les 4 flèches pour se déplacer dans les 4 directions, et <Enter> pour activer l'éditeur, après avoir passé goEditing à True et hop !, ça le fait.

    Citation Envoyé par naute Voir le message
    Mon TStringGrid est celui du paquet "Solution" (TLSStrinGrid) fourni par Code Typhon mais il est directement dérivé de celui fourni par Lazarus. Je l'utilise parce qu’il fournit quelques fonctionnalités supplémentaires, notamment la suppression d'une ligne de la grille.
    J'aimerais que la saisie, dans chaque cellule, ne nécessite pas l'utilisation de la souris. J'ai, par exemple, des CheckBox(s) dans ma grille, et j'aimerais pouvoir y accéder avec les touches fléchées et les positionner avec la touche <Enter>.
    Ah ben vi, si tu compliques les choses, on va pas y arriver

  5. #5
    Rédacteur

    Avatar de naute
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2009
    Messages
    708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2009
    Messages : 708
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Ah ben vi, si tu compliques les choses, on va pas y arriver
    Eh oui! Je crois encore au Père Noël. Ce n'est pourtant pas la première fois que je me fais avoir avec un composant exotique.
    Je n'arrive pas à comprendre pourquoi, lorsqu'on dérive un composant pour y ajouter des fonctionnalités, on en enlève d'autres. Ou alors une bête erreur, peut-être, dans la publication des procédures? Mais, en même temps, si on ne veut pas les changer, il n'y a qu'à pas y toucher. Cela prouve, en tout cas (ou en tous cas, c'est selon ) que le composant n'a pas (ou mal) été testé.
    J'ai effectivement mis un TStrinGrid standard et, évidemment , ça fonctionne!
    Je vais donc bricoler une routine pour supprimer des lignes puisque la fonction n'existe pas dans TStringGrid.
    C'est dommage car TLSStringGrid offre des fonctionnalités supplémentaires réellement intéressantes, notamment en ce qui concerne la présentation. Cela peut paraître secondaire, mais quand on peut améliorer l'esthétique, pourquoi s'en priver?

    Par contre, je ne sais toujours pas comment sélectionner une cellule particulière par logiciel. C'est forcément possible puisqu'un click de la souris sur une cellule la sélectionne, et il ne fait que déclencher un évènement qui lance une routine. C'est le principe de cette routine que j'aimerais bien connaître, si elle n'est pas trop complexe.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je viens de faire un test avec le composant TLSStringGrid et cela semble fonctionner correctement : aussi bien les flèches de directions (les 4) qui permettent de se déplacer de cellule en cellule dans la grille (haut + bas + gauche + droite) que la touche "Enter" qui fait se déplacer sur la cellule suivante.

    Dans les options, j'ai mis goRowSelect à False et goAlwaysShowEditor + goDrawFocusSelected + goEditing à True.

    Peut-être est-ce dû à l'option goRowSelect qui est resté à True ?

    J'utilise CodeTyphon Version 5.4

    Cdt

    Laurent

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 206
    Par défaut
    Citation Envoyé par naute Voir le message
    Bonjour ,

    est-il possible de sélectionner, par logiciel, une cellule précise d'un TStringList, comme on peut la sélectionner en cliquant dessus avec la souris. En gros, je voudrais me déplacer dans la grille avec les touches fléchées et/ou passer automatiquement à la cellule suivante en appuyant sur la touche <ENTER>. J'ai cherché une fonction du genre TStringList.SelectCell[X,Y] mais je n'ai rien trouvé. Et je n'arrive pas à trouver une astuce pour le faire .

    Si quelqu'un a une idée, merci d'avance pour sa réponse.

    Amicalement,

    naute.
    Bonjour,

    L'accès à une cellule d'un stringGrid est possible par l'instruction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    StrGrid_Rapp.Cells[i , j] ;
    ou
    StrGrid_rapp est le nom du Stringrid concerné.
    La propriété Cells permet l'accès au tableau constitué par les diverses cellule du Stringrid
    i est le numéro de colonne
    j est le numéro de ligne

    Attention la première ligne ou colonne portent le n° 0

    Généralement il faut gérer tout cela dans une boucle sur i - j pour parcourir le tableau .

    J'espère que cette réponse vous sera utile.

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 130
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 130
    Par défaut
    Salut,
    Citation Envoyé par OR34a Voir le message
    i est le numéro de colonne
    j est le numéro de ligne
    Truc mnémotechnique : utiliser c, r pour column, row

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 27/02/2014, 21h29
  2. [XL-2002] Sélection des cellules visibles d'une colonne dans un filtre
    Par pitoumad dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/06/2010, 11h33
  3. [C# 1.1] Comment fusionner des cellules dans un datagrid ?
    Par absolute_beginner dans le forum ASP.NET
    Réponses: 5
    Dernier message: 09/11/2006, 16h45
  4. Désignation des cellules dans une routine
    Par houadglaz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/09/2006, 21h26
  5. Positionner des cellules dans une page
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/10/2005, 10h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo