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 :

remplire une ComboBox sous Word a partir de c++ Builder


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut remplire une ComboBox sous Word a partir de c++ Builder
    Bonjour a tous,

    Je realise en ce moment un projet sous BCB permetant de gerer un parc client et de remplire un formulaire Word avec les renseignement de ces clients. J arrive a remplire des zones de texte a partir de mes Edit en utilisant des Signet mais je n arrive pas a remplire un ComboBox. Avec un Signet les lignes s'ecrivent en dessous du ComboBox et non pas a l interieur.

    Si quelqu un peut m aider svp,ca fait des heures que je galere!!
    merci

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Salut Matsa
    Post un peu de code pour voir ce que tu veu exactement

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    salut blondelle

    voici mon code(qui marche) pour ecrire dans un champs grace a un signet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Variant vBookMarks, vBookMark, vContent;
     
    if (vBookMarks.OleFunction("Exists", "signet10"))
    {
    vBookMark = vBookMarks.OleFunction("Item", "signet10");
    vBookMark.OleFunction("Select");
     
     
    vContent = vBookMark.OlePropertyGet("Range");
    vContent.OleFunction("InsertAfter", Edit18->Text.c_str());
    }
    mais quand je fais la meme chose avec un signet pointant sur un Combobox les lignes ne s'ajoutent pas mais s'ecrivent en dessous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (vBookMarks.OleFunction("Exists", "signet11"))
    {
    vBookMark = vBookMarks.OleFunction("Item", "signet11");
    vBookMark.OleFunction("Select");
     
     
    vContent = vBookMark.OlePropertyGet("Range");
    vContent.OleFunction("InsertAfter", ListBox2->Items->GetText());//meme chose a partir d'un Edit
    }

  4. #4
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Regarde dans la Faq, l'ecriture est differente

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    voici le code modifié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (vBookMarks.OleFunction("Exists", "signet11"))
    {
        vBookMark = vBookMarks.OleFunction("Item", "signet11");
        vBookMark.OleFunction("Select");
     
     
        vContent = vBookMark.OlePropertyGet("Range");
        vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", WideString(ListBox2->Items->Strings[0]));
    }
    Je ne sait pas si c'est la bonne ecriture car cela ecrit bien au niveau du signet mais en faisant disparaitre le ComboBox
    dsl je debute dans le pilotage OLE de Word

  6. #6
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par défaut
    Voila ce que j'ai teste
    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
     
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    Variant vBookMarks, vBookMark, vContent;
    vBookMarks = vWDocument.OlePropertyGet("BookMarks");
    if (vBookMarks.OleFunction("Exists", "signet1"))
    {
        vBookMark = vBookMarks.OleFunction("Item", "signet1");
        vBookMark.OleFunction("Select");
        // ...
    vContent = vBookMark.OlePropertyGet("Range");
    //vContent.OleFunction("InsertAfter", "texte");
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", WideString(ListBox1->Items->Strings[0]));
    }
    }
    Je pense que ce n'est pas que le TListBox qui disparait mais la Form complete, si oui c'est Word qui passe au premier plan

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello

    Si j'ai bien pigé ton combobox est un champ de ton document Word ?

    Est-ce que via une macro sous Word tu arrives à modifier ton combobox ??
    Par exemple avec un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.FormFields("Dropdown2").DropDown.ListEntries.Add Name:="321313"
    Sous Builder ça devrait donner quelque chose comme (non testé!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("FormFields").OleFunction("Items", "DropDown2").OlePropertyGet("DropDown").OlePropertyGet("ListEntries").OleProcedure("Add", "xxx", 0);

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    Ma Form sous BCB est bien la,active, et avec tout ce qu'elle contient(Edit,ListBox...).
    Sous Word ma ComboBox ainsi que son signet assossié disparaissent,de meme avec une ListBox.Je les insert en utilisant les controles ActiveX

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    salut totoche76,
    tu as tout pigé mé je n arrive pas a modifié le contenue de mon ComboBox avec tes deux solutions.
    BCB me dit "une exeption c 'est produite " en me pointant cette ligne du fichier sysvari.h
    return OleFunction(name, static_cast<TAutoArgsBase*>(&args));
    Word me dit "erreur d'execution 5941, le membre de la collection n'existe pas"

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Juste pour être sûr, dans mon exemple, "Dropdown2", c'est le nom du bookmark représentant le combobox (j'en avais mis 2 dans un document Word).

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    oui je l'ai bien remplacé par mon signet mais faut il mettre d autres lignes dans la macro, ou celle la sufit?
    Car si c' est le cas de mon coté ca ne compil pas

  12. #12
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Dans Word, sans effectuer de sélection dans le document, l'exemple précédent me donne la même erreur que toi.
    Sans sélection active, ce qui suit fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveDocument.FormFields("Dropdown2").DropDown.ListEntries.Add Name:="154512"

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 7
    Par défaut
    ca ne fonctionne tjrs pas chez moi,et me redonne la même erreur
    mais qu entend tu par "sans selection active".
    dsl j'ai honte je connais pas grand chose

  14. #14
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Dans le document Word, j'ai 2 combobox (Dropdown1 et Dropdown2)
    1. Si la sélection (le curseur) se trouve plus loin dans le document: Erreur 5941
    2. Si je sélectionne les 2 combobox à la souris, la macro fonctionne.

    En remplaçant dans le code de la macro Selection par ActiveDocument, le cas 1 ne produit pas d'erreur.

    Conseil: avant d'écrire le code C++ dans Builder, teste la faisabilité des actions que tu veux exécuter dans une macro directement dans Word ;-)

Discussions similaires

  1. Remplir une combobox à partir d'un listview
    Par Gecoo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/04/2010, 11h33
  2. remplir une combobox à partir d'un fichier .csv
    Par wolverine1987 dans le forum MFC
    Réponses: 24
    Dernier message: 28/04/2009, 11h00
  3. Remplir une combobox à partir de la 2e ligne
    Par wagui26 dans le forum Débuter
    Réponses: 10
    Dernier message: 13/10/2008, 16h49
  4. [Stratégie] Remplir une ComboBox à partir du contenu d'un JTextField
    Par une_tite_question dans le forum Composants
    Réponses: 4
    Dernier message: 01/07/2008, 14h22
  5. Réponses: 1
    Dernier message: 28/11/2007, 09h31

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