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

Langage Delphi Discussion :

[D7] Copier un richedit dans un paragraphe d'un doc word


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut [D7] Copier un richedit dans un paragraphe d'un doc word
    Bonjour à tous,

    Voila je vous expose mon problème : je construit un document word via delphi par une liaison OLE, et je souhaiterais copier le contenu d'un richEdit dans ce document pour en faire un paragraphe.

    Je sais que ce sujet a déja été abordé mainte et mainte faois, mais les solutions qui sont proposées consistent essentiellement à copier le texte formater dans un nouveau document (c'est du moins ce que j'en ai compris), alors que moi je souhaiterais le faire apparaitre au milieu d'un doc déja existant. Je ne peux donc pas utiliser quelque chose du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichEdit.Lines.SaveToFile
    Voila merci d'avance pour vos suggestions

    Vince

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Mon sujet ne semble pas inspirer beaucoup de monde.
    Pour l'instant la solution que j'ai trouvé consiste à enregistrer le texte formaté dans un doc word
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RichEdit.Lines.SaveToFile
    puis de couper cette ligne et de la coller dans l'autre doc word que je construit....
    Vous serez d'accord pour admettre que ce n'est pas vraiment une solution optimisée.... Donc si quelqu'un d'autre en a une autre à proposer il est le bienvenu

    Merci d'avance

    Vince

  3. #3
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    regarde cette piste, elle utilise l'interface IDataObject mais je n'ai pas eu le temps de vérifier.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Merci beaucoup je vais regarder.

    Vince

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Salut,
    Alors j'ai essayé la piste que tu m'as soumise. Au départ il me faisait une erreur du style : mémoire insuffisante. J'ai regardé de plus près la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    while (not Found) and (Formats.Next(1, TempFormat, nil) = S_OK) do
        begin
          pFormatName := AllocMem(255);
          GetClipBoardFormatName(TempFormat.cfFormat, pFormatName, 254);
          if (string(pFormatName) = 'Rich Text Format') then
          begin
            RTFFormat := TempFormat;
            Found := True;
          end;
          FreeMem(pFormatName);
        end;
    qui se trouve dans la fonction
    et en fait il ne remplissait jamais la condition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (string(pFormatName) = 'Rich Text Format')
    En ragardant les valuers que prend pFormatName j'ai remarqué qu'il y avait Format Texte riche j'ai donc modifié le code en concéquence mais maintenant il me dit :
    FORMATECT non valide
    C'est bete ca a tout l'air d'etre une erreur du à la langue utilisée...
    Est ce que quelqu'un a une idée ou une piste pour faire fonctionner ce code?

    Merci d'avance

    Vince

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Dans ce cas utilise directement les fonctions du presse-papier de Delphi et de Word (GetFromClipboard).

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Salut,

    Bon je viens de tester la méthode que tu préconises :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RichEditTampon.CopyToClipboard;
                        Word.selection.GetFromClipboard;
    Et j'obtiens une erreur :
    La méthode getfromClipboard n'est pas supportée par l'objet automation
    ...
    Je continu sur cette piste.
    Si quelqu'un a une idée pour régler l'erreur, il est le bienvenu.

    Merci d'avance

    vince

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 128
    Points : 73
    Points
    73
    Par défaut
    Yahooooooooo!!! ca marche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    RichEditTampon.SelectAll;
    RichEditTampon.CopyToClipboard;
    Word.selection.paste;
    Tout simplement.

    Merci Laurent Dardenne pour ton aide

    Vince

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/05/2014, 23h19
  2. [XL-2010] Bug dans macro qui reunit plusieurs doc word en 1 seul
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2012, 11h23
  3. Copier le contenu d'un RichEdit dans le presse papier
    Par gillou026 dans le forum Débuter
    Réponses: 3
    Dernier message: 03/07/2011, 18h35
  4. Copier un RichEdit dans un autre
    Par rsc dans le forum Langage
    Réponses: 3
    Dernier message: 24/09/2010, 17h25
  5. Enregistrer un RichEdit dans un .Txt
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 06/08/2002, 11h52

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