Problème de dimensionnement d'une TextBox

Résolu
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017 - 1 oct. 2011 à 18:05
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 4 oct. 2011 à 13:01
Bonjour,

Dans une form j'ai l'instruction : Set NAM2 = Nom de la Form

Dans un Module j'initialise la hauteur d'une textbox comme comme indiqué ci-dessous.
Après avoir lancé le traitement je vérifie le résultat immédiatement après l'exécution de chaque instruction .(Affichage du résultat avec l'espion de Visual Basic)

Le résultat obtenu est étonnant.
De 0 à 817 , la hauteur de la Textbox est toujours chargée à la valeur 825
Ce n'est qu'à partir de 818 que le chargement se déroule correctement.

NAM2.Text1(2).Height = 0 ' ? --> 825
NAM2.Text1(2).Height = 100 ' ? --> 825
NAM2.Text1(2).Height = 200 ' ? --> 825
NAM2.Text1(2).Height = 300 ' ? --> 825
" " "
" " "
NAM2.Text1(2).Height = 800 ' ? --> 825
NAM2.Text1(2).Height = 817 ' ? --> 825
--------------------------------------------
NAM2.Text1(2).Height = 818 ' 818
NAM2.Text1(2).Height = 819 ' 819
NAM2.Text1(2).Height = 820 ' 820
NAM2.Text1(2).Height = 821 ' 821
NAM2.Text1(2).Height = 822 ' 822


Avez vous une idée sur la raison de ce chargement anarchique (Pourquoi 825 ?......)

Par avance Merci.


Ps: Je n'ai pas d'instruction du style: Private Sub Text2_Change(Index as integer)

15 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
1 oct. 2011 à 19:52
Bonjour,

Les TextBox ont une hauteur Minimale (Comme les combobox), la largeur, tu peux gérer, mais la hauteur a des contrainte.

Je ne sais pas si la taille de la police est prise en compte pour la hauteur minimale.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
3
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
1 oct. 2011 à 18:09
Bonjour,

Tu es sûr d'être en VBA ?
Sinon, c'est peut être la hauteur minimale qui est verrouillée.

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
1 oct. 2011 à 19:12
Bonjour,

Sinon, c'est peut être la hauteur minimale qui est verrouillée


Peux-tu m'indiquer comment initialiser la hauteur minimale d'une TextBox. Je ne savais pas que
cela existait.

Si tu parles de la propriété Width qu'il est possible d'initialiser au moment de la conception.... alors, le problème ne vient pas de là.

Merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2011 à 20:12
Bonjour, NHenry
Je ne sais pas si la taille de la police est prise en compte pour la hauteur minimale

Elle l'est.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

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

Posez votre question
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
1 oct. 2011 à 21:35
Salut

VBA avec des composants indexés, ce n'ai pas possible.
Déjà, avant de poursuivre, il faut savoir avec quoi tu travailles.

"Set NAM2 = Nom de la Form"
NAM2 est dimensionné comment ? De quel objet s'agit-il ?

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

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2011 à 21:45
Bonsoir, Jacck

Ajoutons que même si, comme je l'espère, on a déclaré publique MAM2 as Form, on gaspille de la mémoire pour rien, alors qu'il suffit de passer le Form en question en paramètre de la procédure qui va le traiter.
Mais c'est encore un autre aspect.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 oct. 2011 à 22:00
Je voudrais à tout hasard ajouter deux petites choses (je dis bien à tout hasard).
Lorsque l'on "resize" en fonction de résolutions différentes et qu'on le fait par la méthode (que je ne cesserai de contester en raison de ses nombreux défauts) de redimensionnement et repositionnement de chaque contrôle d'un container (par application d'un coefficient k), il faut d'abord modifier la taille de la police du contrôle concerné PUIS redimensionner le contrôle lui-même. Avec, bien évidemment, quelques surprises résultant du seul fait que toutes les polices ne passeront pas d'une taille à celle exacte souhaitée par application du coefficient k. Lorsqu'il n'y aura pas de correspondance exacte, il y aura : dans certains cas : aucune modif de la taille et dans d'autres : attribution de la taille la plus proche (et quelquefois très écartée de la taille souhaitée).
Mais je m'égare peut-être et il ne s'agit finalement pas de ce que je crois deviner.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Cjvg Messages postés 330 Date d'inscription mercredi 6 décembre 2000 Statut Membre Dernière intervention 26 octobre 2017
2 oct. 2011 à 11:11
Bonjour NHenry,

Tu es la seule personne à avoir répondu correctement à ma question. Effectivement, la taille d'une textbox ne peut-être inférieure à la taille de la police. Dans l'exemple que je donne, la taille de la police est 8 et, par conséquence sa hauteur ne peut être inférieure à 285. (J'aurais du le préciser dans ma question)

Cela n'explique donc pas le problème puisque l'erreur se produit avec une hauteur allant de 0 à 817. Au delà c'est Ok

Merci Nhenry.

-------------------------------------------------------------------------------------------------
Réponses totalement à coté de la Plaque.

- J'espère, on à déclaré publique MAM2 as Form --> (Au delà de 817, le traitement est Ok))
- on gaspille de la mémoire pour rien (A écouter, il ne faut pas utiliser ?..........)
- que je ne cesserai de contester en raison.....(Merci encore au spécialiste qui est le meilleur)

- Je ne parlerais pas de la suite du message qui est incompréhensible. (Trop de Blabla)

Ce genre de réponse faite par des "spécialistes" qui n'ont rien à faire que de donner des conseilles stupides devrait s'abstenir de parler pour ne rien dire.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2011 à 11:20
Ah ?
En ce qui concerne le dimensionnement de NAM2, c'est à Jack, que je répondais (il se posait la question).
Au delà de 817, le traitement est Ok))

Et l'une des causes possibles a été donnée (la police de ce contrôle et sa taille)
Mais bon ...
Débrouille-toi !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
2 oct. 2011 à 11:23
Dépose donc sur un site ad hoc un petit projet exemple et tu vas voir en combien de temps (moins d'une minute) on va la découvrir, la raison


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 oct. 2011 à 18:29
Juste pour le cas où d'autres seraient également intéressés (c'est le principe même d'un forum) :

Voici une petite démo dont le propos est de mettre en exergue ce dont je parlais plus haut et qui montre à quel point les choses peuvent varier, d'une police à l'autre et d'une taille à l'autre.
Sur un Form : une textbox nommée Text1 et avec sa propriété BorderStyle = 0, pour ne pas avoir à calculer, en plus, d'autres facteurs du fait des bordures.
Et un bouton de commande Command1 avec ce code :
 Private Sub Command1_Click()
  Me.ScaleMode = vbPixels
  mes_polices = Array("Courier", "MS Sans Serif", "Times New Roman", "System")
  For ma_police = 0 To UBound(mes_polices)
    MsgBox "voyons avec la police " & mes_polices(ma_police)
    For taille = 4 To 20
      Text1.FontName = mes_polices(ma_police)
      Text1.FontSize = taille
      Me.Font = Text1.Font
      Me.FontSize = Text1.FontSize
       Text1.Height = TextHeight("Voyons donc un peu !")
      MsgBox "                     Avec la police  " & Text1.FontName & ":" & vbCrLf & _
      "nous avons voulu une taille de      " & taille & "      et nous en avons finalement une effective de ===>>>       " & Text1.FontSize & vbCrLf & _
      "va nécessiter au moins (sans compter les éventuelles bordures d'un contrôle)     " & TextHeight("Voyons donc un peu !") & "      pixels de hauteur" & vbCrLf & _
      " soit :   " & TextHeight("Voyons donc un peu !") * Screen.TwipsPerPixelY & "   twips de hauteur) "
    Next
  Next
End Sub


Cette démo permet de constater plusieurs aspects que je vous laisse découvrir.
PS : d'où l'intérêt de choisir avec le plus grand soin la police que l'on va utiliser. Observez dans cette démo la nette plus grande souplesse de Times New Roman.
Il faut également bien comprendre que certaines polices peuvent occuper une hauteur très nettement supérieure à celles utilisées dans cette démo.

Voilà ! J'ai voulu cette démo pour tous ceux qui (pas uniquement le demandeur dans cette discussion) s'intéresseraient à ce genre de choses.



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
4 oct. 2011 à 09:55
Bonjour ucfoutu,

Par pure curiosité, j'ai essayé ton code et on en apprends de bonnes.
Mais à la réflexion et sauf erreur de ma part, il vaut mieux se cantonner aux seules polices TTF puisque TimesNewRoman est la seule à bien se comporter.


Calade
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 oct. 2011 à 10:14
Bonjour, Calade,

C'est certain
Le seul problème est que cela n'est pas toujours possible.
On voit mieux, par ailleurs, à quelles difficultés on s'expose lorsque l'on veut redimensionner harmonieusement des contrôles. On peut souvent s'"arranger" quelque peu pour ses propres applis, mais on prend d'énormes risques en ce qui concerne celle des autres.
On voit bien là une des raisons (une, car ce n'est pas la seule, loin de là) pour lesquelles les "resizers" professionnels ne procèdent pas du tout par redimensionnement, mais totalement autrement (comme pour le zoom d'Excel).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 oct. 2011 à 12:59
Ah !
Très intéressant !
Je crois toutefois, Cjvg, que tu as raté quelque-chose, si tu tentais par là de :
Dépose donc sur un site ad hoc un petit projet exemple

On ne voit aucun lien et nous ne possédons donc pour l'instant que ce que tu as bien voulu nous déclarer .
C'est dommage.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 oct. 2011 à 13:01
Mais apparemment mon dernier message n'a plus lieu d'être. Il venanit en réponse à un message sans teneur aucune, qui a maintenant disparu.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Rejoignez-nous