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 :

Insertion d'image avec OLE ds Word


Sujet :

C++Builder

  1. #1
    Membre régulier Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 75
    Points
    75
    Par défaut Insertion d'image avec OLE ds Word
    Bonjour
    Je voudrai "traduire" du code C++ builder qui pilote Word à l'aide des composants office XP (TWordApplication...) vers du code directement en Ole
    exple apres le commentaire pour inclure une "3.jpg" mais l'équivalent en OleFunction ne marche pas


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    // InlineShape * Shape=WordApplication1->Selection->InlineShapes->AddPicture( WideString(FilePath+"3.jpg"),
    //                                       (OleVariant)false, (OleVariant)true, EmptyParam);
     vMSWord.OlePropertyGet("Selection").OleFunction("InlineShapes",WideString(FilePath+"3.jpg"),
                        (OleVariant)false, (OleVariant)true, EmptyParam);
    // Shape->LockAspectRatio = msoTrue;
    // if (Shape->Height!=0) ratio=200.0/Shape->Height;
    //     else      ratio=1;
    // Shape->Height *=ratio;
    // Shape->Width *=ratio;
    (exple visible sur http://www.baghli.com/bcb_ole.php)

    Merci pour tte aide

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut LotfiB:
    Normalement la fonction qui suit insere une image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Variant vFileName;
    //vMSWord.OlePropertyGet("Selection").OleFunction("TypeParagraph");
        vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_31.jpg";
        vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes").OleProcedure("AddPicture", vFileName, false, true);

  3. #3
    Membre régulier Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    merci
    AddPicture marche bien

    reste le scale ;-)
    c'est vraiment dur de trouver la syntaxe en Ole !
    voici celle de TWordDocument, enfin... le mix

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
      Variant Shape=vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes");
     Shape.OleProcedure("AddPicture", WideString(FilePath+"3.jpg"), false, true);
    // Shape.OlePropertySet("LockAspectRatio", 1);   // msoTrue
    // Height=Shape.OlePropertyGet("Height");
    // Width=Shape.OlePropertyGet("Width");
    // if (Height!=0) ratio=200.0/Height;
    //     else      ratio=1;
    // Height *=ratio;
    // Width *=ratio;
    // Shape.OlePropertySet("Height", Height);   
    // Shape.OlePropertySet("Width",  Width);
    tu as une idée, pouquoi déjà
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shape.OlePropertySet("LockAspectRatio", 1);
    ça bloque
    ciao

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Je ne parvien pas a faire fonctionner la fonction.
    en cherchant dans la Faq Delphi j'ai trouve ceci
    auteur : bidou
    Les images insérées dans le texte sont membres de la collection InlineShapes
    Var Shape:InlineShape; FileName:OleVariant; LinkToFile:OleVariant; SaveWithDocument:OleVariant; begin FileName:='C:\developpez\logo_developpez.gif'; LinkToFile:= False; SaveWithDocument:= True; Shape := WordApplication1.Selection.InlineShapes.AddPicture( FileName, LinkToFile, SaveWithDocument, EmptyParam); With Shape Do Begin LockAspectRatio := msoTrue; Height := Height * 0.5; Width := Width * 0.5; End;end;
    Ce code insère une image et la réduit de moitié.
    Tous les essais que j'ai fait "LockAspectRatio" provoque une erreur

  5. #5
    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
    Points : 3 766
    Points
    3 766
    Par défaut
    Je viens de trouver
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_31.jpg";
     Variant Shape = vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes").OleFunction("AddPicture", vFileName, false, true);
    Shape.OlePropertySet("LockAspectRatio", true);
    Ce qui permet d'avoir toujours des dimensions proportionnelles de l'image

  6. #6
    Membre régulier Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    tu sais pourquoi ?
    parce qu'avant, on avait la collections des shape et non pas la shape que l'on vient d'ajouter...
    la on manipule le seul objet...
    voilà donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Variant Shape=vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes").OleFunction("AddPicture", WideString(FilePath+"3.jpg"), false, true);
      Shape.OlePropertySet("LockAspectRatio", msoTrue);   // msoTrue
    de plus, Shape.OlePropertySet("LockAspectRatio", prefre true (ou msoTrue) à 1

  7. #7
    Membre régulier Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    OK

    c'est bon, voici également pour le redimensionnenment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Height=Shape.OlePropertyGet("Height");
     Width=Shape.OlePropertyGet("Width");
     if (Height!=0) ratio=200.0/Height;
         else      ratio=1;
     Height *=ratio;
     Width *=ratio;
     Shape.OlePropertySet("Height", Height);
     Shape.OlePropertySet("Width",  Width);
    je publie la comparaison entre l'utilisation des composants Office XP de Builder et directement le pilotage OLE (sur : http://www.baghli.com/bcb_ole.php).

  8. #8
    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
    Points : 3 766
    Points
    3 766
    Par défaut
    Je suis content que tu ai reussi ce que tu voulais.
    A+

  9. #9
    Membre régulier Avatar de LotfiB
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 75
    Points
    75
    Par défaut
    tu peux le reprendre ds ta FAQ que tu prepares, je pense que c'est un bon exemple pour que le sgens apprennent OLE Word !

    ciao

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

Discussions similaires

  1. Path d'un window.open et insertion d'images avec un innerHTML
    Par hacksi dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/08/2009, 13h42
  2. Insertion d'images avec MySQL
    Par metwa dans le forum Débuter
    Réponses: 5
    Dernier message: 15/06/2009, 19h06
  3. VBA Excel 2007 - Insertion d'images avec Enregistreur de Macros
    Par PhilC dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 26/10/2007, 02h05
  4. Pb d'insertion d'image avec une macro sur Excel 2007
    Par tigrou42 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 30/05/2007, 00h48

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