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

Delphi Discussion :

Lien OLE dans un RichEdit


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Lien OLE dans un RichEdit
    Bonjour,

    Je me bat avec la ligne suivante qui fonctionne avec les fichier pdf, word, jpeg, ... mais pas avec les fichiers DWF (Autocad) (il y a une exception du ViewerDWF de chez Autodesk).
    Enfin cela fonctionne sur les machines qui ont Autocad Mechanical, mais sur celles qui ont juste le ViewerDWF.
    Par contre si je créer le lien sur une machine avec Mechanical et que j'enregistre mon TRichEdit, puis que j'ouvre mon fichier sur une machine qui n'a que le Viewer cela fonctionne.

    Donc j'ai un problème lors de la création de l'objet OLE avec les fichier DWF.

    J'ai essayé de mettre des valeur dans le paramètre FormatETC, mais je n'arrive au résultat.

    Voici le code qui est tiré des source d'Alexandre le Grand (merci à lui)

    FillChar(ReObject, SizeOf(TReObject), 0);
    For I := 0 To Files.Count - 1 Do
    Begin
    FilePath := Files[I];
    If GetRichOleInterface(REdit, RichEDitOle, OleClientSite) Then // Récupère IRichEDitOle et IOleClientSite
    Begin
    Storage := Nil;
    Try
    CreateIStorage(Storage); // Crée un espace d'accueil
    If Linked Then
    OleCheck(OleCreateLinkToFile(OleCopyPasString(FilePath), IOleObject, OLERENDER_DRAW, Nil, OleClientSite, Storage, OleObject))
    Else
    OleCheck(OleCreateFromFile(CLSID_NULL,OleCopyPasString(FilePath), IOleObject, OLERENDER_DRAW, Nil, OleClientSite, Storage, OleObject));

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2006
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Pour information j'utilise les liens OLE, afin de pouvoir fournir aux utilisateurs un traitement de texte dans lequel il y a des "pièces jointes".

    Cette solution me permet d'avoir tout dans un seul fichier.

    J'ai aussi essayé de contourner mon pb avec les fichier DWF en insérant des lien hypertextes (+ ShellExecute lors du clique) dans un TrxRichEdit, mais il y a le problème que des utilisateurs peuvent supprimer/modifier une partie du chemin du lien par erreur (donc lien HS sans que l'utilisateur sans rende tant qu'il n'a pas cliqué dessus, alors qu'un lien OLE : si l'utilisateur supprime l'icône il s'en appercevra et il ne pourra pas le modifier).
    De plus les fichiers ne sont plus dans le fichier, mais ce n'est pas trop grave.

    Sinon j'ai essayé de mettre le contenu de mon RichEdit dans idMessage (de Indy) : là il n'y a pas de problème pour les pièces jointes, mais je perd tout le formatage du texte (ainsi que les images).


    Donc si quelqu'un aurai un autre type de solution permettant de :
    avoir un traitement de texte formatté (rtf ou autre) avec images
    avoir des liens avec tous types de fichiers enregistrés dans le texte. Et que ces liens ne puissent pas être tronqués (soient ils sont OK, soient ils sont supprimés, mais partiellement tronqués/modifiés comme les lien hypertexte).


    Merci pour toutes réponses

Discussions similaires

  1. [AC-2007] Changer le lien d'un objet OLE dans une table
    Par r.louis dans le forum IHM
    Réponses: 2
    Dernier message: 02/02/2010, 10h26
  2. Insérer un lien hypertexte dans un RichEdit
    Par alili mostafa dans le forum Débuter
    Réponses: 4
    Dernier message: 11/04/2008, 14h01
  3. Lien dans un RichEdit
    Par AT dans le forum Débuter
    Réponses: 4
    Dernier message: 26/12/2007, 09h37

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