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

Langage Delphi Discussion :

Longueur d'une string et nombre de pixels correspondant


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 12
    Points
    12
    Par défaut Longueur d'une string et nombre de pixels correspondant
    Hello tout le monde

    J'ai une TListBox d'une largeur donnée et j'aimerais verifier si les strings que j'y ajoute rentrent dans cette TListBox. J'ai pensé d'emblée me servir de Length(NouvelleString) mais ca retourne un Integer qui est le nombre de caracteres dans NouvelleString, non pas sa dimension en pixels (comme la propriété Width de la TListBox). Y'a-t-il moyen de faire une équivalence entre un nombre de caracteres et l'espace que ces caracteres prennent en pixels??

    Merci

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2005
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 11
    Points : 12
    Points
    12
    Par défaut
    Pour tous ceux qui, comme moi, feront une recherche trop sommaire pour trouver, voici la reponse :

    Delphi -> Menu Help -> Index -> 'TextWidth'

    TextWidth donne la largeur en pixels d'une ligne ou d'un item d'un component contenant du texte. C'est donc exactement ce dont j'avais besoin.

    Merci et desole!!!

    "L'oisivité est mère de tou(te)s les v(ertues)ices."

  3. #3
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 54
    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
    Hé bien non !
    TextWidth ne te renverra, tout comme TextHeight, qu'une approximation !

    Si tu avais fait une recherche sur le forum, tu serais tombé sur ce thread :
    http://www.developpez.net/forums/vie...937&highlight=

    pour rappel, voicile code qu'on avait trouvé :
    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
    23
    24
    25
    26
    27
     
    function TextSize(Phrase:string;police:TFont=nil):TPoint;
    var
      DC: HDC;
      X: Integer;
      Rect: TRect;
      C : TBitmap;
    begin
      C := TBitmap.create;
    try
      if police <> nil then  C.canvas.Font := police;
     
        Rect.Left := 0;
        Rect.Top:=0;
        Rect.Right:=0;
        Rect.Bottom:=0;
        DC := GetDC(0);
        C.Canvas.Handle := DC;
        DrawText(C.Canvas.Handle, PChar(Phrase), Length(Phrase), Rect, (DT_EXPANDTABS or DT_CALCRECT));
        C.Canvas.Handle := 0;
        ReleaseDC(0, DC);
        result.X:=Rect.Right;
        result.Y:=Rect.Bottom;
    finally
      C.Free;
    end;
    end;

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

Discussions similaires

  1. évaluer une string en nombre
    Par robert_trudel dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2009, 20h53
  2. Réponses: 3
    Dernier message: 26/09/2007, 16h28
  3. Réponses: 2
    Dernier message: 11/07/2006, 14h52
  4. pb de longueur avec une string
    Par salseropom dans le forum C
    Réponses: 6
    Dernier message: 13/02/2006, 16h36
  5. longueur d'une string
    Par superted dans le forum 2D
    Réponses: 2
    Dernier message: 07/02/2006, 23h29

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