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

  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;

  7. #7
    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
    merci
    j'essayerai ton ole

    ciao
    Lotfi

  8. #8
    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
    voil� ce que j'ai essay�
    http://c.developpez.com/faq/bcb/?pag...icationrunning

    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
     
    Variant vMSWord, vWDocument, vWDocuments;
    try
    {
    		vMSWord = Variant::GetActiveObject("Word.Application");
    } catch(...)
    {
    		vMSWord = Variant::CreateObject("Word.Application");
    }
    vMSWord.OlePropertySet("Visible", true);
    // cree un nouveau doc
    vWDocuments = vMSWord.OlePropertyGet("Documents");
    vWDocument = vWDocuments.OleFunction("Add");
    Variant vFileName = "c:\\test_word.doc"; // nom fichier
    vWDocuments.OleFunction("Saveas", vFileName);  // ici on sauve un document
     
    vWDocuments.OleFunction("Close");  // on ferme le document
    vMSWord.OleFunction("Quit");   // on ferme Word
    vMSWord = Unassigned;    // on libere les Variants
    bon �a commenc�ait bien mais � l'enregisteement il m'envoit sur les roses :
    EOleSysError : nom inconnu

    tu as la syntaxe de ttes les fonctions OleFunction ?

    merci
    Lotfi

  9. #9
    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
    Un lien sur un tuto
    dit moi sur quelle ligne tu a ton erreur

  10. #10
    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 crois que c'est sur la ligne de sauvegarde il faut ecrire.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     
    // on declare le Variant
    Variant vFileName;
    // on declare le chemin
    vFileName = "c:\\test_word.doc"; // nom fichier
    vWDocument.OleProcedure("Saveas", vFileName);  // ici on sauve un document

  11. #11
    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
    merci, tu m'as vraiment �t� d'une grande aide
    j'avais 2 erreurs � cause d'un copier coller malheureux d'une procedure d'Open. qui utilise vWDocuments et non pas vWDocument
    et OleProcedure � la place de function...
    que des erreurs auxquelles je vais faire attention

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    vWDocument.OleProcedure("Saveas", vFileName);  // ici on sauve un document
    je vais voir s'il y a un help pour ttes ces fonction, j'ai visual studio 2005 install� aussi (� la fac, c'est �a qui est install� via MSDN :-( moi je prefere BDS 2006) y a peut etre de la doc/fichiers hlp dessus

    ciao
    Lotfi

  12. #12
    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:
    Je suis contant que cela marche pour de la Doc il n'y a rien juste des bouts de code.

  13. #13
    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
    j'ai parl� trop vite
    en fait j'ai des difficult� avec les tableaux, comment selectionner 2 lignes, ou bien aller apres le tableau pour inserrer du texte ou un nouveau paragraphe
    et comme tu dis, il n'y a que des bouts de code qui existent de part et d'autres sans qu'il n'y ai de continuit�.
    je confond Range et Selection, y a des fonctions qui sont compatible avec range d'autres avec selection..
    comment fait on pour sortir d'un tableau ???
    ciao
    Lotfi

  14. #14
    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
    Ton post est marque resolu refait en un autre en decrivant tes problemes j'essairais de les resoudre.
    A+

+ 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