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 :

Copie d'images dans le presse papier


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut Copie d'images dans le presse papier
    Bonjour,

    je rencontre un petit problème avec la gestion du presse papier.
    Je veux charger le presse papier avec une liste d'images avant d'ouvrir word à partir de mon application. Je boucle sur ma liste d'images et appel la fonction Clipboard->Assign( ... ) à chaque itération. Mais une fois Word ouvert, quand je regarde dans le presse papier Office, il n'ya que la dernière image de ma liste. En regardant l'aide de Builder sur le Assign je ne suis pas plus avancé. En effet, l'aide me dis qu' Assign permet d'ajouter une liste d'objet au presse papier, et en même temps qu'a chaque ajout d'objet Assign commence par effacer le presse papier !!!

    Si quelqu'un pouvait m'indiquer une solution.
    Bonne journée

  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 Tiwaz.
    Si tu fait les copies dans une boucle chaque copie ecrase la precedente, je pense qu'il te faut selectionner toutes les images et seulement apres les copier.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Bonjour Blondelle, merci de t'interesser à ce sujet.

    Je comprends bien ce que tu me dis mais j'ai du m'al m'exprimer !! Pour plus de clarté je post un bout du code ou en fait pour chaque itération je vais créer une image différentes. lImage est une TstringList comportant les chemins des images à copier.

    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
     
          lImage = CreerListeImage( pSession , m_sId );
          for ( int i = 0; i < lImage->Count; i++ )
          {
            TImage *Image = new TImage(NULL);
            try
            {
              Image->Picture->LoadFromFile(lImage->Strings[i]);
              Clipboard()->Assign(Image->Picture);
            }
            catch (...)
            {
              ShowMessage("Ne peut copier l'image dans le presse-papiers !");
            }
          }
    Qu'en penses-tu? Sinon est ce que tu sais si on peut passer une liste dans le Assign de Clipboard?

    Merci

  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
    Si je comprend bien tu prend l'adresse de ton image dans un StringGrid et tu veu coller l'image dans Word?
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    En fait la fonction CreerListeImage(Session ,id) va charger des images de la bdd, en fonction de l'id, copier ces images sur le disque dur et renvoyer une TStingList contenant les chemins pour accéder à chaques images copiées sur disque.

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Pourquoi n'utilise tu pas Ole pour piloter directement ta copie dans Word.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Je ne veux pas forcement copier toutes les images dans word. Je veux proposer des images candidates à la copie. Ensuite l'utilisateur peut ou non les intégrer.
    En plus je ne crois pas que les composants TWordApplication ou TWordDocument n'aient de propriété Clipboard, enfin ça il faut que je le vérifie...

  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
    Tiwaz a ecrit:
    Je ne veux pas forcement copier toutes les images dans word. Je veux proposer des images candidates à la copie. Ensuite l'utilisateur peut ou non les intégrer.
    En plus je ne crois pas que les composants TWordApplication ou TWordDocument n'aient de propriété Clipboard, enfin ça il faut que je le vérifie...
    Raison de plus pour utiliser Ole je suppose que tu ouvre Word avec BCB donc tu peu inserer directement une image avec son chemin pas besoin de passer par le presse papier tu n'a rien en memoire et tu gagne le temps de passage par le presse papier.
    Je te joind le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        // Cette procedure permet d'insérer une image à partir d'un emplacement déterminé
        // Procedure InsererImage LinkToFile:=False, SaveWithDocument:=True
     
        Variant vFileName;
     
        vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\
        041227165954_31.jpg";
     
        vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes").
        OleProcedure("AddPicture", vFileName, LinkToFile:=False, SaveWithDocument:=True);
        ou
        vMSWord.OlePropertyGet("Selection").OlePropertyGet("InlineShapes").
        OleProcedure("AddPicture", vFileName, false, true);
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Desolé de revenir si tardivement sur ce post.
    Blondelle,
    1 - je comprends bien comment copier les images dans un document word.
    2 - le temps de chargement n'est pas primordial pour moi.

    Le truc c'est que j'ai une collection d'image que je veux faire apparaitre pour que l'utilisateur puisse les copiés dans word. Je ne veux pas les copier toutes dans word d'un coup car si l'utilisateur n'en veut aucune il est obligé de toute les effacer.

    j'espere avoir été plus clair !?
    Si quelqu'un a une idée merci
    A+

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Tiwaz.
    Pourquoi ne pas utiliser directement ta base de donnee, quand tu clique sur un chemin tu simule un copier via le presse papier.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Salut Blondelle,

    je vois pas trop ce que tu entends par simuler une copie par le presse papier, car moi je veux réellement que les images apparaissent dans le presse papier!!!
    Et là on arrive au coeur du problème, le fait de copier une image dans le presse papier efface les précédentes, donc si j'essaye de copier 10 images dans le presse papier, il n'y aura que la dernière de présente. C'est là que je cherche un moyen pour ne pas vider le presse papier quand on ajoute un élément dedans

    to be continued....

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Tiwaz:
    Si tu a des images dans le presse papier tu ne peut pas les voir comment selectionne tu celle qu'il te faut?
    Ce que je ferais soit une liste de noms d'images, soit de miniatures.
    Quand je cliquerais sur soit un nom soit une miniature je prendrais le chemin de l'image correspondante et j'utiliserais la copie d'image par OleWord que je t'ai passe dans un poste precedent.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  13. #13
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Salut,
    je vois en fait que je n'ai pas été très clair dans les termes que j'ai employé précédement. Je voulais parler du presse papier Office, qui permet d'avoir des miniatures ...

  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
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut Tiwaz.
    Je suis desole mais je ne voie pas d'autre facon de t'aider de plus l'aide en ligne Word ne donne aucune indiquation sur la copie multiple.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  15. #15
    Membre à l'essai
    Inscrit en
    Août 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci quand même Blondelle d'avoir pris du temps pour me répondre.
    Je me rabat actuellement sur msdn ou j'ai trouvé une classe Clipboard avec peut être des fonctions utiles à mon problème.
    Cette classe appartient à .net framework sdk. Le seul truc qui me soucie c'est que builder à l'air faché avec .net, j'arrive pas a appellé les classes.
    On verra bien ....

  16. #16
    Membre expérimenté
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Points : 1 427
    Points
    1 427
    Par défaut
    Citation Envoyé par Tiwaz
    Cette classe appartient à .net framework sdk. Le seul truc qui me soucie c'est que builder à l'air faché avec .net, j'arrive pas a appellé les classes.
    On verra bien ....
    Builder ne sait pas gérer les composants .Net.
    Il va falloir trouver une autre solution (que je ne connais malheureusement pas...)
    + + +

  17. #17
    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
    Tiwaz a ecrit:
    Merci quand même Blondelle d'avoir pris du temps pour me répondre.
    Je me rabat actuellement sur msdn ou j'ai trouvé une classe Clipboard avec peut être des fonctions utiles à mon problème.
    Cette classe appartient à .net framework sdk. Le seul truc qui me soucie c'est que builder à l'air faché avec .net, j'arrive pas a appellé les classes.
    On verra bien ....
    Je te joind un bout de programme avec deux options de choix d'image soit par une liste de nom soit par des images.
    Sur la meme Forme tu a les deux possibilites.
    Le .cpp
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
     
    //---------------------------------------------------------------------------
     
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
     
    Variant vFileName;
     
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::ListBox1Click(TObject *Sender)
    {
    int test;
     
    // on recupere le numero de la ligne correspondant a l'image selectionnee
    test = ListBox1->ItemIndex;
            switch (test)
            {
            case 0:
            Label1->Caption = test;
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_30.jpg";
            Label2->Caption = vFileName;
            break;
            case 1:
            Label1->Caption = test;
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_31.jpg";
            Label2->Caption = vFileName;
            break;
            case 2:
            Label1->Caption = test;
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_32.jpg";
            Label2->Caption = vFileName;
            break;
            case 3:
            Label1->Caption = test;
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_33.jpg";
            Label2->Caption = vFileName;
            break;
    }
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TForm1::Image1Click(TObject *Sender)
    {
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_30.jpg";
            Label2->Caption = vFileName;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image2Click(TObject *Sender)
    {
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_31.jpg";
            Label2->Caption = vFileName;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image3Click(TObject *Sender)
    {
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_32.jpg";
            Label2->Caption = vFileName;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Image4Click(TObject *Sender)
    {
            vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Mes images\\041227165954_33.jpg";
            Label2->Caption = vFileName;
    }
    Le .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
     
    //---------------------------------------------------------------------------
     
    #ifndef Unit1H
    #define Unit1H
    //---------------------------------------------------------------------------
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    #include <Forms.hpp>
    #include <ExtCtrls.hpp>
    #include <Graphics.hpp>
    #include <jpeg.hpp>
    //---------------------------------------------------------------------------
    class TForm1 : public TForm
    {
    __published:	// IDE-managed Components
            TListBox *ListBox1;
            TLabel *Label1;
            TLabel *Label2;
            TImage *Image1;
            TImage *Image2;
            TImage *Image3;
            TImage *Image4;
            void __fastcall ListBox1Click(TObject *Sender);
            void __fastcall Image1Click(TObject *Sender);
            void __fastcall Image2Click(TObject *Sender);
            void __fastcall Image3Click(TObject *Sender);
            void __fastcall Image4Click(TObject *Sender);
    private:	// User declarations
    public:		// User declarations
            __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif
    Avec de la chaine vFileName tu te serts du bout de programme de copie OleWord que je t'ai deja passe.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/07/2008, 14h39
  2. Copie valeur champs dans le presse papier
    Par leaprovence dans le forum VBA Access
    Réponses: 2
    Dernier message: 19/04/2008, 20h28
  3. Mettre une image dans le presse papier
    Par cyrilleG dans le forum Tcl/Tk
    Réponses: 4
    Dernier message: 06/02/2008, 22h28
  4. Copie de texte dans le press papier
    Par intelcore dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/08/2007, 21h50
  5. Comment copier une image dans le presse papier.
    Par cprogil dans le forum Langage
    Réponses: 7
    Dernier message: 09/09/2003, 15h54

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