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

Composants FMX Delphi Discussion :

Comment obtenir les coordonnées absolue d'une cellule de TStringGrid ?


Sujet :

Composants FMX Delphi

  1. #1
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut Comment obtenir les coordonnées absolue d'une cellule de TStringGrid ?
    **Delphi 10.1 update 2 / Firemonkey **

    Bonjour,

    TStringGrid.CellRect renvoie bien les coordonnées d'une cellule mais par rapport à quoi ?
    Moi, je les voudrais par rapport à la fiche.

    Exemple
    J'ai une grille de deux colonnes qui comporte un header.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      rect:=StringGrid1.cellRect(1,0);
      pt.x:= rect.left;
      pt.y:= rect.top;
      ptr:=StringGrid1.LocalToAbsolute(pt);
    Après execution, Rect.top = 0 donc pt.y = 0
    et donc ptr sera décalé de la hauteur du header.
    Il semblerait que les coordonnées des cellules soient données par rapport à la colonne mais la propriété de StringColumn2.Top est égal à zéro !!

    Donc je ne vois pas comment connaitre la position verticale de la cellule par rapport à la fenêtre ??

    Si je pouvais connaitre la hauteur du header je pourrais l'ajouter mais comment la connaitre ?


    Merci
    Franck

  2. #2
    Membre expérimenté
    Avatar de retwas
    Homme Profil pro
    Développeur Java/Delphi
    Inscrit en
    Mars 2010
    Messages
    698
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Java/Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 698
    Points : 1 608
    Points
    1 608
    Billets dans le blog
    4
    Par défaut
    Tu peux récupérer le Header avec le style, peut être qu'il existe plus simple ? en tout cas ça retourne bien la bonne hauteur dans mon cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    procedure TForm2.StringGrid1SelectCell(Sender: TObject; const ACol,
      ARow: Integer; var CanSelect: Boolean);
    var
       Header : THeader;
       Rect   : trect;
       Pt     : TPoint;
       Ptr    : tpointf;
    begin
       Pt.Y   := 0;
       Header := THeader((StringGrid1).FindStyleResource('header'));
     
       if Assigned(Header) then
          Pt.Y := Round(Header.Height);
     
       Rect   := StringGrid1.CellRect(ACol, ARow);
       Pt.X   := Rect.Left;
       Pt.Y   := Pt.Y + Rect.Top;
       Ptr    := StringGrid1.LocalToAbsolute(Pt);
    end;

  3. #3
    Membre averti Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Points : 443
    Points
    443
    Par défaut
    Merci Retwas,

    C'est une solution effectivement.

    j'avais trouvé cet artifice en attendant mieux:
    HeaderHeigh := StringColumn2.AbsoluteRect.top - StringGrid1.AbsoluteRect.top;

    Il faut avoué que tout cela est bien compliqué...

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

Discussions similaires

  1. Comment obtenir les coordonnées d'une cellule?
    Par Antoine505 dans le forum Excel
    Réponses: 1
    Dernier message: 23/10/2013, 11h55
  2. Réponses: 1
    Dernier message: 30/09/2011, 09h55
  3. Réponses: 2
    Dernier message: 19/07/2007, 18h35
  4. Comment récupérer les coordonnées sur le bureau d'une form ?
    Par fma2112 dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 22/02/2006, 23h43
  5. Réponses: 5
    Dernier message: 19/07/2005, 21h54

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