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

C++Builder Discussion :

Dimensionnement dynamique d'un Tmemo


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Retraité
    Inscrit en
    Octobre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2003
    Messages : 14
    Par défaut Dimensionnement dynamique d'un Tmemo
    Bonjour à tous,

    Je cherche à ajuster les dimensions d'un composant Memo en fonction de la longueur de la/des ligne(s) à afficher.
    Pour cela, j'utilise la méthode TextExtent (propriété Canvas d'un objet TForm), qui renvoie les dimensions en pixels de la chaîne.
    Le problème est que cette méthode considère le caractère tabulation ("\t")comme un seul caractère au lieu de l'étendre à N espaces.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    taille = Form1->Canvas->TextExtent("Petite chaine");
    taille = Form1->Canvas->TextExtent("Petite\tchaine");
    renvoient tous deux 104 pixels en Courier 10, alors qu'à l'affichage la seconde chaîne sera évidamment plus longue.

    Je n'ai pas trouvé dans l'aide de l'API Windows la valeur par défaut du nombre d'espaces correspondant à une tabulation.

    Quelqu'un a une idée ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Par défaut
    Bonjour,

    Regarde dans la doc de l'Api, le message EM_SETTABSTOPS. Ce message est envoyé au contrôle pour définir la taille d'une tabulation.
    Par défaut la tabulation est équivalente à 32 unités dialog.

    Regarde aussi la fonction GetDialogBaseUnits()

  3. #3
    Membre averti
    Profil pro
    Retraité
    Inscrit en
    Octobre 2003
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2003
    Messages : 14
    Par défaut
    Bonjour,

    EM_SETTABSTOPS permet de positionner les tabulations à des valeurs par défaut, mais pas de relire les valeurs actuelles.

    Néanmoins, en cherchant dans l'aide de l'API Windows autour de EM_SETTABSTOPS, j'ai trouvé écrit noir sur blanc que la valeur par défaut est de 8 caractères (ce que j'avais pu constater de manière empirique).
    Maintenant je sais que le composant Tmemo ne modifie pas cette valeur par défaut et je peux calculer la longueur de la chaîne à partir de cette donnée.

    Merci de ton aide, preuve en est qu'il suffit souvent de modifier l'angle d'attaque pour résoudre un problème.

    Longue vie

  4. #4
    Membre éprouvé
    Homme Profil pro
    VP of Research and Innovation
    Inscrit en
    Mai 2002
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Canada

    Informations professionnelles :
    Activité : VP of Research and Innovation

    Informations forums :
    Inscription : Mai 2002
    Messages : 84
    Par défaut
    Bonjour,

    Effectivement le message EM_SETTABSTOPS permet de spécifier la taille des tabulations.
    Je ne sais pas si dans ton cas c'est important, mais ton calcule sera faux si la taille de tabulation est modifiée.
    Je n'ai pas trouvé de fonction/message pour lire la taille des tabulations.

    A noter aussi que pour une police à pas variable (type True Type), il faut regarder à quoi correspond la taille de 8 caractéres. Est ce la taille de 8 espaces, ou 8 fois la taille du plus grand caractére (le W le plus souvent) ?
    A voir ...

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

Discussions similaires

  1. [VBA]Tutoriel sur le dimensionnement dynamique
    Par celiaaa dans le forum VBA Access
    Réponses: 4
    Dernier message: 09/06/2012, 23h47
  2. Comment dimensionner dynamiquement mon JInternalFrame ?
    Par moustaf_26 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 25/08/2011, 16h37
  3. Dimensionnement dynamique de tableaux
    Par rems033 dans le forum Langage
    Réponses: 1
    Dernier message: 15/06/2008, 01h41
  4. [VBA]dimensionnement dynamique des controles
    Par celiaaa dans le forum VBA Access
    Réponses: 1
    Dernier message: 14/04/2007, 12h59
  5. [HTML] IFRAME Dimensionnement dynamique
    Par markeno dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/06/2006, 09h18

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