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

Delphi Discussion :

Sélection d'une cellule dans un TStringGrid par double click


Sujet :

Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Sélection d'une cellule dans un TStringGrid par double click
    bonjour
    je suis debutant en delphi

    je voudrais selectionner une cellule d un StringGrid par doubleclic de la souris.
    j ai consulté la FAQ et je n ai rien trouvé sur ce theme

    je precise que je parviens tres bien à selectionner une cellule d un StringGrid par simple clic associé à l evenement OnSelectCell.

    Si j utilise l evenement OnDblClick, je ne vois pas comment pas recuperer la position du rang et de la colonne selectionnée.

    Si j utilise l evenement OnMouseUp, La variable Shift n est pas servi(l ensemble est à vide:Shift[] ) et le test
    "if ssDouble in Shift (double clic) n est jamais positif,en conséquence.


    Merci de vos reponses.

  2. #2
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Jettes un oeil à la méthode MouseCoord de ton TStringGrid
    Bidouilleuse Delphi

  3. #3
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Ca marche pas des masses.

    J'ai essayé un truc style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GetCursorPos(P) ;
     StringGrid1.MouseToCell(P.X, P.Y, Acol, ARow);
    Ca marche pas mieux: pour les deux cas, j'ai des indices de cellules à -1

    Bizarre...
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Citation Envoyé par Cpt Anderson
    Ca marche pas des masses.

    J'ai essayé un truc style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GetCursorPos(P) ;
     StringGrid1.MouseToCell(P.X, P.Y, Acol, ARow);
    Ca marche pas mieux: pour les deux cas, j'ai des indices de cellules à -1

    Bizarre...
    Presque ! (et je n'ai pas eu le temps de te le dire ), il faut d'abord que tu transforme les coordonnées de ta souris, qui sont des coordonnée écran (l'origine est le coin supérieur gauche de ton écran), en coordonnées clientes de ton contrôle (l'origine est le coin supérieur gauche) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TForm1.StringGrid1Click(Sender: TObject);
    var P:TPoint;
        ACol,ARow:integer;
    begin
      P:=Mouse.CursorPos;
      P:=StringGrid1.ScreenToClient(P); //<--- ICI
      StringGrid1.MouseToCell(P.X,P.Y,ACol,ARow);
      Label1.Caption:=IntToStr(ACol)+'/'+IntToStr(ARow);
    end;
    Bidouilleuse Delphi

  5. #5
    Membre émérite Avatar de Cpt Anderson
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 624
    Points : 2 477
    Points
    2 477
    Par défaut
    Punaise, je connaissais pas. Je serais moins con ce soir.

    Merci.

    donc pour la reponse pour etienne, tu fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    procedure TForm1.StringGrid1DblClick(Sender: TObject);
    var
     P :  TPoint ;
     ACol, ARow: integer ;
    begin
     GetCursorPos(P) ;
     P:=StringGrid1.ScreenToClient(P);
     StringGrid1.MouseToCell(P.X, P.Y, Acol, ARow);
     ShowMessage(StringGrid1.Cells[Acol, ARow]);
    end;
    et le tour est joué.
    Voici la méthode de mon chef:

    copy (DateTimeToStr(Now),7,4)+
    copy (DateTimeToStr(Now),4,2)+copy (DateTimeToStr(Now),1,2)+copy (DateTimeToStr(Now),12,2)+
    copy (DateTimeToStr(Now),15,2)+copy (DateTimeToStr(Now),18,2)

    Je lui ai dit que FormatDateTime irait surement mieux


  6. #6
    Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    merci de votre reponse
    votre code me convient tres bient

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

Discussions similaires

  1. [XL-2003] Sélection d'une cellule dans une plage de cellule
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/03/2011, 16h47
  2. Sélection d'une cellule dans uitable avec clic droit
    Par Pierrot92320 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 14/05/2009, 14h40
  3. Sélection d'une cellule dans un dbgrid
    Par LuckyLuke56 dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2009, 14h35
  4. Slection d'une cellule dans une Flexgrid
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 29/08/2006, 13h44

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