Taille d'une chaine

Résolu
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016 - 7 nov. 2006 à 19:43
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 12 nov. 2006 à 15:07
Salut,



   Pour créer la propriété autosize d'un controle, j'ai besoin de connaitre la taille d'une chaine (en pixel ou twips) dans une police spécifiée. Est-ce possible ?


Vince

14 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 nov. 2006 à 11:40
Ouille !
Correction de ce que j'ai dit plus haut à propos de l'utilisation d'un Label invisible (une autre fois inutile) : Seule la propriété Autosize à True, Wordwrap devant être à False.
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 nov. 2006 à 19:54
Salut
Oui, il faut utiliser la méthode TextWidth ou TewtHeight des objets Form ou Picture :
Tu places une PictureBox (que tu rends invisible lors du Run) sur ta forme.
Pour connaitre la taille en Twips (ou Pixel, tout dépend du ScaleMode), il te suffit d'affecter la même police et la même taille à ce PictureBox
maPicture.Font = monLabel.Font
et tu récupères la taille avec
Taille = maPicture.TextWidth(monLabel.Caption)
ou
Taille = maPicture.TextWidth("Troulala itoo")

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 nov. 2006 à 21:17
Nul besoin d'une pictureBox invisible pour celà !

With font
  .fontname = monlabel.fontname
  .size = monlabel.fontsize
  'etc... (style, etc...)
end with
Taille = maPicture.TextWidth(monLabel.Caption)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 nov. 2006 à 23:31
lol !
Et maPicture, c'est quoi ?
Et Font, c'est quoi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 nov. 2006 à 23:45
Font ? c'est un objet
Par défaut : la Font applicable à la Form
Ma picture ? un copier coller mal fait :
lire :

With font
  .fontname = monlabel.fontname
  .size = monlabel.fontsize
  'etc... (style, etc...)
end with
Taille = TextWidth(monLabel.Caption)

et lire l'objet Font

Mais le mieux, jack, est encore de faire tourner ensemble ton code et le mien et de voir : même résultat.
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 nov. 2006 à 00:08
Holà Ami Jack !

C'est pire !

Voilà le test :
Ma taille bouge bien mais... pas avec ton code, ami !

Essaye donc

Private Sub Form_Activate()
  monlabel.Caption = "Voilà bien la preuve de ce que je dis"
End Sub




Private Sub Command1_Click()
  For i = 8 To 20
    monlabel.FontSize = i
    testefont monlabel
  Next
End Sub


Sub testefont(etiq)
  '=============mon code============
  With Font
    .Name = etiq.FontName
    .Size = etiq.FontSize
    .Bold = etiq.FontBold
    taillejmf = TextWidth(etiq.Caption)
  End With

 '============le tien=============
  Picture1.Font = etiq.Font
  taillejack = Picture1.TextWidth(etiq.Caption)
' et le résultat des courses
  MsgBox taillejmf & " " & taillejack
End Sub




 
0
lemoret Messages postés 37 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 11 mars 2007
8 nov. 2006 à 09:33
mdr

Allez va, avant que Jack ne te découpes en morceau, je te donne un truc ami jmfmarques

Picture1.Font = etiq.Font

n'est pas équivalent à

Set Picture1.Font = etiq.Font

La dans ton code, tu ne recopies que le nom de la police alors bien sur la taille ne change pas
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 nov. 2006 à 11:12
Je veux bien que Jack me découpe en morceau (ou m'éventre dans la plus pure tradition d'un autre Jack)
Mais :
1) voilà ce qui était écrit et que j'ai repris (voir le code de Jack plus haut... ce n'est pas moi qui l'ai écrit...)
maPicture.Font = monLabel.Font
2) Il n'est, je le répète, nul besoin de passer par un subterfuge (picturebox invisible). TextWidth et TextHeight fonctionnent directement avec l'objet Font (ne pas confondre avec la propriété Font). Il n'existe qu'un seul OBJET font et  textwidth et Textheight se fondent sur ses définitions en cours.
3) S'il fallait à tout prix donner la préférence à l'utilisation d'un objet tiers (complètement inutile), il suffisait alors d'utiliser un Label invisible (moins lourd qu'une picturebox) avec ses propriétés Autosize et WordWrap à True, d'y "envoyer" le texte et d'en mesurer la nouvelle taille..., non ? Mais, une autre fois, ce chemin détourné n'est nullement nécessaire et alourdirait inutilement l'application
4) Je n'ai rien inventé. Je n'ai fait qu'appliquer VB
5) voilà plus de 10 ans que j'utilise textwidth et textheight à des fins précises dont l'une, longtemps commercialisée (assez cher) , est un activeX de redimensionnement en fonction de la résolution de l'écran client.

Alors de Jacques (bibi) à Jack : Pardonne-moi et essaye ce que j'ai exposé (tu y gagneras).
0
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
8 nov. 2006 à 12:13
Salut,



   Super les gars merci à tous mais nulle éventration n'était nécessaire.


Vince
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 nov. 2006 à 12:17
salut,
c'est beau de perdre du temps non....

Jack a écrit : "Oui, il faut utiliser la méthode TextWidth ou TewtHeight des objets Form ou Picture" et a donné l'exemple avec Picture

jmfmarques tu dis que c'est faux, et fait de même avec Form (beh oui, Font.Name n'est autre que Me.Font.Name)...

bref, pas besoin de surenchérir.
++
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 nov. 2006 à 13:10
Euh ...
quid de l'inutilité absolue de gérer via un contrôle invisible rajouté et alourdissant ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 nov. 2006 à 13:31
pas pire qu'un label.
VinceVG a une réponse qui lui convient donc au risque de me répéter : pas besoin de surenchérir !

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 nov. 2006 à 13:35
Pour être tout-à-fait précis, :
Lesméthodes TextWidth et Textheight de VB appellent tout simplement la fonction GetTextExtentPoint32 de la librairie GDI32.dll de Windows
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 nov. 2006 à 15:07
voici 40299 ici une méthode....
++

<hr size ="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Rejoignez-nous