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

IHM Discussion :

Centrer verticlament un texte dans une zone de texte d'un état Access


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Centrer verticlament un texte dans une zone de texte d'un état Access
    Bonjour,

    J'ouvre à nouveau ce sujet parce que je n'ai pas trouvé la réponse.

    J'ai réalisé une base de données sur des films.
    J'ai un formulaire de saisie des films qui est assorti d'un bouton qui me permet d'ouvrir l'état (jaquette à imprimer).

    Dans cette état, il y a une zone de texte contenant le résumé du film (appelée RE).
    Bien entendu, les résumés sont variables et je souhaite centrer verticalement le contenu de ma zone de texte dans mon état.
    J'ai bien lu les conseils ici : http://starec.developpez.com/tuto/ecriredessineretats/
    (ce qui m'a permis de dessiner un petit cercle sur les interdictions dans mon état, c'est très pratique).

    En revanche, pas moyen de centrer ma zone de texte.
    Sur quel événement faut-il insérer le module ? Au niveau de quelle partie de l'état (celle contenant la zone de texte, je suppose).
    Bref, je patauge.
    Si quelqu'un peut m'aider.
    D'avance merci.

    Salas

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    En revanche, pas moyen de centrer ma zone de texte.
    Peux-tu montrer, avec une capture d'écran par exemple, ce que tu voudrais comme résultat.

    Si elle était auto-extensible, ça ne résoudrait pas le problème ?


    Sur quel événement faut-il insérer le module ? Au niveau de quelle partie de l'état (celle contenant la zone de texte, je suppose).
    Probablement dans l'événement Au formatage de la section qui contient ta zone de texte.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Complément
    Voici un exemple d'une copie de l'écran (contenu du texte non centré dans la zone de texte) : Nom : Jaquette non centrée.png
Affichages : 2528
Taille : 57,7 Ko
    (J'ai masqué volontairement les photos et noms des acteurs).
    En fait, le résumé du film apparait en haut de ma zone de texte (qui fait 8,3 cm de haut).

    Je voudrais qu'elle apparaisse centrée à l'image de la pièce jointe suivante : Nom : Jaquette centrée.png
Affichages : 2436
Taille : 46,6 Ko


    Là, j'ai bidouillé en passant des lignes manuellement dans ma zone, bien entendu, ce n'est pas satisfaisant.

    Merci d'avance.

    Salas

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Une piste :
    - dans l’état, la zone de texte n’a qu’une ligne ;
    - cette zone de texte est auto-extensible ;
    - on calcule la hauteur que va prendre la zone de texte une fois remplie ;
    - connaissant sa hauteur, on peut la positionner de sorte qu’elle soit centrée verticalement par rapport au groupe d’images.

    Jette un œil sur cette discussion pour voir comment calculer la hauteur instantanée de la zone de texte : http://www.developpez.net/forums/d14...s/#post7927264
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Suite
    Merci beaucoup,

    Je vais repenser ma façon de faire, je n'étais pas du tout partie sur cela.
    Je pensais à l'utilisation des méthodes ScaleHeight et textHeight.
    Je vous tiens au courant de mes avancées...

    Salas

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour Salas99,
    Ici, le temps est à la pluie voici un article qui devrait faire ton affaire : http://claudeleloup.developpez.com/t...zone-de-texte/

    Il te permet d’obtenir ceci :



    Pour adapter ceci à ton projet

    1 Tu importes dans ta Bdb LaTable et Martyr.




    2 Tu adaptes les deux premiers enregistrements de la table et la largeur du contrôle « LaZdt » pour qu’ils correspondent à ton contexte.

    3 Tu affiches l’état « Martyr » pour récupérer la valeur de tes constantes.

    4 Dans ton état,
    - tu ajoutes un contrôle quelconque, éventuellement non visible, nommé « ZoneDeReference » qui servira de repère pour l’ajustement ;
    - tu ouvres le module de ton état (<Alt + F11>) et tu colles ce code :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Option Compare Database
    Option Explicit
      Const iMaxParLigne = 54 'Nbre de caractères maximun par ligne
      Const iHLigne1 = 249 'Hauteur de la zdt avec une seule ligne
      Const iHLignesSup = 211 'Hauteur additionnelle par ligne au-delà de la 1re
     
    Private Function NbreLignes(Txt As String) As Integer
      Dim Mot() As String
      Dim i As Integer
      Dim CumulCar As Integer
      'On ventile le texte en mots dans un tableau
      Mot = Split(Txt, " ")
      'On boucle sur chaque mot
      For i = 0 To UBound(Mot)
        'Cas d'un mot plus long que la iMaxParLignecité
        '--------------------------------------
        If Len(Mot(i)) > iMaxParLigne Then
            'Si une ligne est en cours, elle se termine.
            If CumulCar <> 0 Then
                NbreLignes = NbreLignes + 1
                CumulCar = 0
            End If
            'On ajoute autant de lignes qu'il y a de portions de iMaxParLignecité
            'et on tronque pour ne garder que le reliquat
            NbreLignes = NbreLignes + Fix(Len(Mot(i)) / iMaxParLigne)
            Mot(i) = Right(Mot(i), Len(Mot(i)) - (Fix(Len(Mot(i)) / iMaxParLigne)) * iMaxParLigne)
        End If
        'On cumule le nombre de caractères
        CumulCar = CumulCar + Len(Mot(i))
        'Si le cumul dépasse la iMaxParLignecité, la ligne était complète
        'après le mot précédant celui-ci.
        'On ajoute une ligne, on remet le cumul à zéro et on recommence
        'le traitement de ce mot-ci...
        If CumulCar > iMaxParLigne Then
            NbreLignes = NbreLignes + 1
            CumulCar = 0
            i = i - 1 'on va donc reboucler avec celui qui a fait déborder
     
          Else
          '... sinon on cumule les caractères du mot et un espace
          'pour autant que ce mot ne soit pas le dernier,
          'auquel cas, « - (i <> UBound(Mot)) » vaut zéro.
            CumulCar = CumulCar - (i <> UBound(Mot))
        End If
      Next i
      'On arrive ici quand on a lu tous les mots
      'Il faut ajouter une ligne pour écrire ce qui reste,éventuellement, dans CumulCar
      NbreLignes = NbreLignes - (CumulCar > 0)
      End Function
     
    Private Function nbreLignesDesParagraphes(Texte As String) As Integer
      Dim TabPara() As String
      Dim i As Integer
      'On ventile les paragraphes dans un tableau
      TabPara = Split(Texte, vbLf)
      'Pour chaque paragraphe, on appelle NbreLignes()
      For i = 0 To UBound(TabPara)
        nbreLignesDesParagraphes = nbreLignesDesParagraphes + NbreLignes(TabPara(i))
      Next i
    End Function
     
    Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
      On Error GoTo GestionErreur
      Dim HauteurZdt As Integer
      'Déterminer la hauteur instantanée de cette zone de liste
      HauteurZdt = iHLigne1 + (nbreLignesDesParagraphes(Me.LaZdt) - 1) * iHLignesSup
      Me.LaZdt.Top = Me.ZoneDeReference.Top + (ZoneDeReference.Height - HauteurZdt) / 2
      Exit Sub
    GestionErreur:
      Select Case Err.Number
        Case 2100 ' pas assez de place pour ajuster
         Me.LaZdt.Top = Me.ZoneDeReference.Top
        Case Else
         MsgBox "Erreur dans Sub Détail_Format ! " & Err.Number & " : " & Err.Description & "."
      End Select
    End Sub
    - tu adaptes les constantes à tes mesures



    - et dans le code, tu replaces partout « Me.LaZdt » par « Me.LeNomDeVotreZdt » (4 occurrences 3 occurrences).

    La BdD est ici : http://claudeleloup.developpez.com/t...ticalement.mdb
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Réponse
    Bonjour,

    J'ai procédé comme tu me l'a si gentiment dit.
    Cela fonctionne, il y a bien un centrage et cela centre correctement par rapport à la zone de texte de référence.
    J'ai eu un petit soucis parce que le paramétrage de la constante du nombre maximum de caractères était légèrement erroné (mais cela luisait au centrage de la zone sur certains enregistrements).
    Maintenant, ce la fonctionne impeccable (il y a un ou deux enregistrements dont l'alignement n'est pas parfait, mais franchement le résultat est convaincant - j'ai remarqué qu'en changeant le nombre de caractères maxi, ces enregistrements qui posaient problème étaient mieux centrés mais c'était moins bien pour les autres...).
    Vraiment UN GRAND MERCI. J'ai bien compris la procédure, mais je vais retravailler les fonctions.
    Au fait, je n'ai trouvé que trois occurrences pour le changement de nom de la zone de texte. Est-ce normal, tu parlais de 4 ?

    PS : aurais-tu un truc pour éviter que lorsque le paragraphe est justifié (aligné à droite et à gauche), Access n'utilise la dernière ligne dans toute sa largeur (même s'il n'y a qu'un mot, Access l'écrit sur l'ensemble de la ligne !


    Encore merci pour ton aide. C'est vraiment formidable.
    Salas

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    J'ai eu un petit souci parce que le paramétrage de la constante du nombre maximum de caractères était légèrement erroné…
    … j'ai remarqué qu'en changeant le nombre de caractères maxi, ces enregistrements qui posaient problème étaient mieux centrés, mais c'était moins bien pour les autres…
    As-tu bien utilisé une police non proportionnelle pour la zone de texte ?





    Au fait, je n'ai trouvé que trois occurrences pour le changement de nom de la zone de texte. Est-ce normal, tu parlais de 4 ?
    C’est un truc d’enseignant pour voir si les élèves suivent…

    Merci de l’avoir signalé, j’ai corrigé l’article.

    P.-S. Aurais-tu un truc pour éviter que lorsque le paragraphe est justifié (aligné à droite et à gauche), Access n'utilise la dernière ligne dans toute sa largeur (même s'il n'y a qu'un mot, Access l'écrit sur l'ensemble de la ligne !
    Ça me semble être la règle aussi dans Word




    et aussi dans PowerPoint

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  9. #9
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut Suite
    Bonjour,

    Effectivement, j'avais choisi "Times new Roman" qui n'est pas proportionnelle.
    J'ai le choix entre un alignement parfait et une police qui rend moins bien ou un alignement quasiment parfait et une police que je préfère...
    Merci encore.

    Pour la justification, je pense que je me suis mal expliqué :

    Sur Word : Nom : Avec Word.png
Affichages : 2328
Taille : 8,3 Ko


    Avec Access : Nom : Avec Access.png
Affichages : 2310
Taille : 8,8 Ko

    Merci encore.

  10. #10
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    J'ai le choix entre un alignement parfait et une police qui rend moins bien ou un alignement quasiment parfait et une police que je préfère...
    On ne peut contenter tout le monde et son père...


    Pour ce qui est de l'alignement, j'ignorais ce problème... et je n'ai pas de solution pour l'éviter.

    Si le sujet te passionne, ouvre donc une nouvelle discussion sur ce thème (éventuellement aussi dans le forum Office.

    Au plaisir de te recroiser.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  11. #11
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 20
    Points : 14
    Points
    14
    Par défaut
    Le résultat que j'obtiens me satisfais pleinement.

    Je vais ouvrir une autre discussion.
    Merci encore.

  12. #12
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Entretemps, je peux te faire une autre proposition : http://claudeleloup.developpez.com/t...te-extensible/

    qui permet de connaître la hauteur instantanée de la zone de texte et ce, quelles que soient les propriétés de la fonte des caractères (police, taille, graisse...).
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

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

Discussions similaires

  1. [AC-2007] Alimentation d'une zone de texte avec une zone de texte déroulante
    Par BRUNO71 dans le forum VBA Access
    Réponses: 3
    Dernier message: 26/12/2010, 19h54
  2. Réponses: 5
    Dernier message: 23/08/2006, 19h42
  3. aligner du texte dans une zone de texte
    Par hammag dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 28/07/2006, 15h56
  4. Réponses: 6
    Dernier message: 15/03/2006, 14h35
  5. incrementation d'un format texte dans une zone de texte
    Par frederic.go dans le forum Access
    Réponses: 6
    Dernier message: 18/10/2005, 14h47

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