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 :

TWordApplication : ajouter du texte sans effacer


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut TWordApplication : ajouter du texte sans effacer
    Bonjour

    Même avec la FAQ qui se trouve à côté ds Delphi, je n'arrive pas à ajouter une table sans effacer mon texte précédent.

    ce qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    WordApplication1->Connect();
    WordApplication1->Visible=true;
    WordDocument1->Connect();
    WordParagraphFormat1->Connect();
    WordRange * MyRange= WordDocument1->Range(EmptyParam, EmptyParam);
    MyRange->InsertAfter(WideString("Mon texte\n"));
    MyRange->InsertAfter(WideString("Mon 2nd texte\n\n"));
    WordParagraphFormat1->set_Alignment(wdAlignParagraphCenter);
    MyRange->InsertAfter(WideString("Mon 3texte\n"));
    MyRange->InsertAfter(WideString("Mon 4 texte\n"));
    MyRange->Font->Name = WideString("Arial");
    MyRange->Font->Size = 8;
    Si j'essaye de rajouter sous forme de paragraphe ça marche mais il fait tjrs partie du texte du haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MyRange->InsertParagraphAfter();
    MyRange->InsertAfter(WideString("Le 2eme\n"));
    WordDocument1->Paragraphs->Add(EmptyParam);
    de sorte que qd je lui change les apparences, tout change
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyRange->Font->Name = WideString("Verdana");
    MyRange->Font->Size = 10;
    cela reste normal car MyRange s'occupe de tout ce que j'ai rentré

    Apres j'essaye de rajouter une table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Table * T1;
    
    WordApplication1->Selection->EndKey(EmptyParam,EmptyParam);
    T1 = WordDocument1->Tables->Add( ????, 1, 3, EmptyParam, EmptyParam);
    WordParagraphFormat1->ConnectTo(T1->Cell(1, 1)->Range->ParagraphFormat);
    WordParagraphFormat1->Alignment=wdAlignTabCenter;
    ???? : je n'arrive pas à mettre autre chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WordDocument1->Range(EmptyParam, EmptyParam)
    qui m'ecrase mon 1er texte

    Avez vous une idée ou un bon tuto pour C++/Builder qui permet de trouver une alternative ?
    J'ai trouvé le fichier Vbawd10.chm mais qui utilise VBA :-(

    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 LotfiB:
    Tu utilise un composant de la barre d'outils BCB "Office2k"?

  3. #3
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    oui bien sûr, ce sont les 3 composants pour dialoguer avec Word
    j'ai BDS 2006, mais y a les meme en BCB6

  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
    Je ne connais pas ces composants, je peu t'aider mais en utilisant OleWord qui ne demande aucun composants sur la fiche.
    Il n'existe pas de DOC pour utiliser ces composants il y a dans la FAQ C++BUILDER des exemples pour Excel pas encore pour Word.
    Si tu est interresse par la gestion OleWord dis le je te passerais un bout de code pour ouvrir Word, inserrer du texte, fermer Word.

  5. #5
    Membre confirmé Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    je voudrai le faire en C++ avec le composant et les appels sont rudimentaires

    j'ai beau cherché sur internet, je tombe que sur du Delphi ou alors les gens ne font que du truc local
    je cherche un exemple de qqun qui est arrivé à remplir tte une page avec du texte, puis change de police / format puis met un tableau, l'encadre, puis mette une image etc...

  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
    Je te passe le code pour inserer du texte, changer laFont, inserer un tableau, et fermer Word tu ne doit pas utiliser le composant et supprimer l'appel #include <office_2k.hpp >
    a la place il faut inserer #include <utilcls.h>.
    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
     
    vMSWord = Variant::CreateObject("Word.Application");
    vMSWord.OlePropertySet("Visible", true);
    try
    {
        vMSWord = Variant::GetActiveObject("Word.Application");
    } catch(...)
    {
        vMSWord = Variant::CreateObject("Word.Application");
    }
    vWDocuments = vMSWord.OlePropertyGet("Documents");
    // ici on ouvre le document avec une feuille vierge
    //vWDocument = vWDocuments.OleFunction("Add");
    //
    vFileName = "c:\\test_word.doc"; // date , book1
    vLink = Unassigned;
    vReadOnly = false; // lecture seule
    vFormat = Unassigned;
    vReadPass = "MotDePasse"; // mot de passe du document
    vWDocuments = vMSWord.OlePropertyGet("Documents");
    // ici on charge un document sur la feuille
    vWDocument = vWDocuments.OleFunction("Open", vFileName, vLink, vReadOnly, vFormat, vReadPass);
     
    // on prepare la Font du texte
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name", "Arial");
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", "8");
     
    // on insere du texte
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", "insertion de texte");
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", "insertion de texte1");
    vMSWord.OlePropertyGet("Selection").OleProcedure("TypeText", "insertion de texte2");
     
    // on fait un passage a la ligne suivante
    vMSWord.OlePropertyGet("Selection").OleFunction("TypeParagraph");
     
    // on insere un tableau deux lignes six colonnes
    vWDocument.OlePropertyGet("Tables").OleFunction("Add", vMSWord.OlePropertyGet("Selection").OlePropertyGet("Range"), 2, 6);
     
    // on selectionne tout le tableau
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Tables").OleFunction("Item", "1").OleProcedure("Select");
     
    // on prepare la Font du tableau
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Name", "wingdings 3");
    vMSWord.OlePropertyGet("Selection").OlePropertyGet("Font").OlePropertySet("Size", "18");
    //----------------------------------
    //----------------------------------
    // on ferme Word
    // on ferme le document
    vWDocuments.OleFunction("Close");
    // on ferme Word
    vMSWord.OleFunction("Quit");
    // on libere les Variants
    vMSWord = Unassigned;

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

Discussions similaires

  1. [XL-2003] Modifier/Ajouter texte dans fichier .Txt sans effacer
    Par toukii dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/06/2009, 09h21
  2. ajouter des éléments a un select multiple sans effacer le contenu
    Par ziad251 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/05/2008, 15h11
  3. Ajouter du texte dans une ListBox sans sauter de ligne
    Par walid_kerkoub dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/03/2008, 15h42
  4. Réponses: 10
    Dernier message: 01/01/2006, 17h20
  5. Réponses: 2
    Dernier message: 04/12/2005, 20h07

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