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 :

Calculer la longueur d'une ligne en pixel dans un TRichEdit


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut Calculer la longueur d'une ligne en pixel dans un TRichEdit
    Bonjour,

    Je cherche à calculer la longueur en pixel d'une ligne de mon TRichEdit.

    De la position de la souris, j'ai déjà déduit l'index du caractère dans le TRichedit, et de cet index de caractère j'en ai déduit l'index de la ligne .

    J'ai bien trouvé un message EM_LINELENGTH à poster au composant mais il me donne la longueur en nombre de caractères et non pas en pixel.

    Comment peut on faire ?

  2. #2
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Ben en fait, j'ai fait comme ça finalement :

    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
    20
    21
    22
     
    function TRichItemEdit.IsOver(CharIndex, X: Integer): Boolean;
    var
      FirstCharIndex: Integer;
      pFin, pDebut: Pointer;
    begin
      pFin := AllocMem(SizeOf(_POINTL));
      pDebut := AllocMem(SizeOf(_POINTL));
     
      FirstCharIndex := Perform(EM_LINEINDEX, GetRow(CharIndex), 0);
     
      Perform(EM_POSFROMCHAR, Integer(pDebut), FirstCharIndex);
      Perform(EM_POSFROMCHAR, Integer(pFin), FirstCharIndex + Perform(EM_LINELENGTH, CharIndex, 0) - 1);
     
      If (X >= _POINTL(pDebut^).x) and(_POINTL(pFin^).x >= X) then
        result := True
      else
        result := False;
     
      FreeMemory(pDebut);
      FreeMemory(pFin);
    end;
    Au lieu de récupérer la longueur de ma chaine, j'ai récupéré les coordonnées X, Y du premier et du dernier caractère de ma chaine.

    J'ai le même résultat

    Merci quand même pour la réponse, je me la met de coté

  4. #4
    Membre chevronné
    Avatar de Droïde Système7
    Homme Profil pro
    Inscrit en
    Septembre 2003
    Messages
    2 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 2 262
    Points : 1 928
    Points
    1 928
    Par défaut
    je me la met de coté
    Merci, moi également

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/04/2007, 18h59
  2. find / grep : comment diminuer la longueur d'une ligne en sortie
    Par gifffftane dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/04/2007, 15h10
  3. [FLASH 8] Longueur d'une ligne -> bug et limitation
    Par Lorenzo77 dans le forum Flash
    Réponses: 3
    Dernier message: 08/01/2007, 18h38
  4. Réponses: 5
    Dernier message: 31/07/2006, 15h42
  5. Calculer la longueur d'une variable de type entier
    Par juliendeparis dans le forum C
    Réponses: 13
    Dernier message: 08/06/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