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

OpenOffice & LibreOffice Discussion :

Largeur d'une zone de texte de formulaire [OpenOffice][Texte]


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 110
    Points : 2 212
    Points
    2 212
    Par défaut Largeur d'une zone de texte de formulaire
    Bonjour tout le monde,

    Je suis en train de créer un modèle de courrier, il comporte pour la salutation deux zones de texte de formulaire (dans le document) que j'envisage d'alimenter par macro avec le contenu d'une liste combinée déroulante.

    Le transfert du contenu se fait bien, à présent se pose le problème d'ajuster la largeur de la zone de texte à celle du texte affiché, sinon ça laisse un blanc énorme suivi d'une virgule, franchement pas terrible.

    Apparemment, la question se subdivise en deux sous-questions :

    Largeur de la zone de texte
    J'ai pu sélectionner une zone de texte comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       maPage = thisComponent.DrawPage
       oForm = maPage.Forms.getByName("Formulaire")
       ctrlTxt1 = oForm.getByName("txtSalutation1")
    Problème : cet objet n'a pas de propriété Width, alors que l'interface utilisateur permet bien de la modifier -cette manoeuvre n'est au demeurant pas enregistrée par l'enregistreur de macros.

    Largeur du texte
    Le texte étant affiché en police à espacement variable, il s'agit de déterminer la largeur correspondant au texte.
    J'ai bien des pistes mais sur d'autres plateformes, donc je doute qu'il soit utile d'insister par là.

    Pour le premier point j'ai bien pensé à passer par un objet Shape :
    https://wiki.openoffice.org/wiki/Working_with_Shapes
    mais l'exemple donné ne permet pas de modifier un objet existant.

    Est-ce que ça inspire quelqu'un ?

  2. #2
    Rédacteur

    Avatar de zoom61
    Homme Profil pro
    ...
    Inscrit en
    Janvier 2005
    Messages
    9 429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : ...
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 9 429
    Points : 58 612
    Points
    58 612
    Billets dans le blog
    11
    Par défaut
    Salut,

    Voir avec les commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Size.Width = 500
    Size.Height = 500
    ctrlTxt1 = Size
    N'oubliez pas le Tag afin de faciliter la recherche, et en votant cela permet de mieux la cibler.

    Je ne réponds pas aux messages privés s'ils sont liés à une question technique

  3. #3
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 110
    Points : 2 212
    Points
    2 212
    Par défaut
    D'accord, par exemple avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim size As New com.sun.star.awt.Size
    ?

  4. #4
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 110
    Points : 2 212
    Points
    2 212
    Par défaut
    Finalement l'idée de passer par Shape semble une bonne piste.


    Adapté de https://forum.openoffice.org/en/foru...p?f=20&p=57216 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        Sub Image_OriginalSize
           Dim size As New com.sun.star.awt.Size
           oDocument = thisComponent
           page = oDocument.drawPage   
           nNumShapes = Page.getCount()
           For i = 0 To nNumShapes - 1
                oShape = Page.getByIndex( i )
                ShapeWidth = 1500 'oShape.actualSize.Width
                ShapeHeight = 500 'oShape.actualSize.Height   
                size.Width = ShapeWidth
                size.Height = ShapeHeight   
                oshape.setSize(size)
           next i
        End Sub
    On passe de l'objet txtSalutation? à Shape par l'index, est-ce que de Shape on sait fournir le nom de l'objet initial, cmbSalutation, txtSalutation1, txtSalutation2 ? Pour cette utilisation-là ce n'est pas un problème, mais à l'occasion ça doit rendre service ...

    A part ça il ne reste plus qu'à finaliser proprement, donc je peux dire que je tiens la solution pour la première sous-question, merci.

    Une idée pour la deuxième ?

  5. #5
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Février 2008
    Messages
    2 110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2008
    Messages : 2 110
    Points : 2 212
    Points
    2 212
    Par défaut
    Bonjour,

    Bon, je vais fractionner le fil, ça sera plus lisible.

    Je marque comme celui-ci comme résolu au titre de la première sous-question (largeur d'affichage d'un contrôle de formulaire de saisie de texte), et je vais ouvrir un autre fil pour la deuxième sous-question (évaluation de la largeur nécessaire pour afficher un texte donné -sachant qu'en plus des valeurs prévues la liste combinée permet aussi de saisir des valeurs personnalisées).


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub LargeurControles(lalargeur)
       Dim size As New com.sun.star.awt.Size
       oDocument = thisComponent
       page = oDocument.drawPage   
       nNumShapes = Page.getCount()
       For i = 1 To nNumShapes - 1
            oShape = Page.getByIndex( i )
            ShapeWidth = lalargeur 'oShape.actualSize.Width
            ShapeHeight = 500 'oShape.actualSize.Height   
            size.Width = ShapeWidth
            size.Height = ShapeHeight   
            oshape.setSize(size)
       next i
    End Sub

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

Discussions similaires

  1. [XL-2002] Modifier la largeur d'une zone de texte dynamiquement
    Par DJ_972 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/06/2011, 15h39
  2. modifier la largeur d'une zone de text
    Par kamclasse dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 13/08/2008, 13h02
  3. Réponses: 3
    Dernier message: 13/12/2007, 17h58
  4. [VB6] largeur d'une zone de liste d'une combobox
    Par Nick13 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 28/08/2004, 12h30
  5. Réponses: 9
    Dernier message: 26/04/2004, 21h51

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