Passer du richedit à un document word

Résolu
ledoc93 Messages postés 12 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 10 février 2006 - 5 oct. 2004 à 20:36
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 8 oct. 2004 à 14:15
Bonjour,
Voila mon probleme.
Je developpe un logiciel médical dans lequel le médecin saisit dans un richedit du texte formaté, avec la possibilité d'utiliser les polices, les couleurs, l'indentation....
Je souhaite que ce texte soit imprimé sous Word..mais sans perdre les caractéristiques du texte (couleur, police...)
Quelqu'un sait-il comment faire transiter le texte.
J'ai deja utilisé le pilotage OLE à partir de delphi mais ce ne rapatrie que le texte.
Merci de votre aide

Ledoc

6 réponses

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
6 oct. 2004 à 10:44
Salut.

Pourkoi tu n'utilises pas dans ce cas directement word pour saisir le texte en utlisant un composant TOleContainer.

Ainsi la personne rélalise directement son document sous word.

Si tu veux dans les exemple de delphi (version 6 pour moi) tu en as un sympa :
C:\Program Files\Borland\Delphi6\Demos\ActiveX\OleCtnrs

Si tu n'as pas cette démo contact moi et je te l'enverai pas mail.

En esperant avoir pu t'aider.

Bonne prog,
JMP.
3
ledoc93 Messages postés 12 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 10 février 2006
7 oct. 2004 à 07:42
Merci JMP77 de m'avoir répondu.
En fait je ne peux pas utiliser Word directement car je veux conserver le texte dans les données du patient. C'est pour ca que je passe par un DBRichedit.
J'ai trouvé la solution en bidouillant un peu, en passant par le presse papier. C'est pas très élégant mais ca fonctionne.
Il suffit de faire dans Delphi un Richedit.selectall puis copytoclipboard.
Ouvrir word par un execute suivi de l'extension /mNomDeLaMacro et dans la macro de word, mettre un selection.paste
Et le tour est joué.
Merci encore de ton aide
Ledoc
3
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
7 oct. 2004 à 08:42
Et bien je suis heureux de savoir que tu as pu trouver et que ça fonctionne.

N'oublie pas de cliquer sur réponse acceptée pour fermer ta demande.

Bonne prog,
JMP.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
7 oct. 2004 à 23:50
LeDoc93, je ne comprends absolument pas ce qui t'arrive.
Je viens de vérifier en créant un texte, en le mettant en forme et en le sauvegardant (RichEidt.Lines.SaveToFile('nomdufichier.rtf'). La sauvegarde se fait bien au format RTF. Le texte rechargé sous Word fait apparaître la mise en page et les enrichisssements indiqués dans mon application Delphi.

Aurais-tu modifié quelque chose dans les propriétés du TRichEdit ? (propriété PlainText, par exemple)
Est-ce que tu manipules la propriété Text du TRichEdit quand tu fais la sauvegarde ?
Peux-tu nous donner le code réalisant la sauvegarde du contenu de ton TRichhEdit ?

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 oct. 2004 à 14:15
Je demandais le code pour réaliser la sauvegarde du contenu du composant TRichEdit utilisé.
Mais si tout est rentré dans l'ordre, alors ce n'est plus nécessaire.
Bonne continuation à tous les deux.
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
May Delphi be with you
3
ledoc93 Messages postés 12 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 10 février 2006
8 oct. 2004 à 09:32
Bonjour Delphiprog,
En réponse a ta question, voila la proc que j'utilisais... Avec une propriété Plaintext à True..

procedure TForm1.FormCreate(Sender: TObject);
var fichier : AnsiString;
vbookmark,vbookmarks,vcontent : variant;
begin
Word := CreateOleObject('Word.Application');
word.visible:=true;
fichier:='c:\temp\test.rtf';
vwdocuments:=word.documents;
vwdocument:=vwdocuments.Open(fichier);
vbookmarks:=vwdocument.bookmarks;
if vbookmarks.exists('signet1') then
vbookmark:=vbookmarks.item('signet1');
vbookmark.select;
vcontent:=vbookmark.range;
vcontent.insertafter(richedit1.Lines[0]+#13);
vcontent.insertafter(richedit1.Lines[1]);
end;

Merci encore de votre aide a tous
Ledoc
0
Rejoignez-nous