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 :

Mettre des image dans un TIMageList


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Par défaut Mettre des image dans un TIMageList
    Bonjour
    Avec ce code code j'arrive enfin a lire un flux blob (image bmp)
    Comment placer ce flux dans un collection d'image (TImageList)

    Me données viennent de requête SQL ou il peut y avoir plusieurs champ image
    comment déclarer ce composant ?

    Comment afficher les images faut en plus un autre composant TImage ouTDbImage ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    TStream  *pStlu=pDs->CreateBlobStream(pDs->Fields->Fields[i],bmReadWrite);   
     // on lit dans le memoire
     TMemoryStream *pMs =new TMemoryStream;
     pMs->LoadFromStream(pStlu);
     
     j++;
     pMs->SaveToFile("TEST"+IntToStr(j)+".bmp");
    delete pMs;
    merci par avance

  2. #2
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Le code suivant n'est pas complet, c'est une piste qu'il faut l'adapter à votre code.

    .h
    .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
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormCreate(TObject *Sender)
    {
    listimg = new TList();
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::FormDestroy(TObject *Sender)
    {
    while (listimg->Count > 0)                // parcours de toute la liste d'image pour la vider
          {
          delete (TImage *)listimg->Items[0]; // libération de la mémoire allouée aux images
          listimg->Delete(0)                  // suppression du pointeur de l'image traité de la liste
          }
    delete listimg;                           // libération de la mémoire allouée à la liste d'image
    }
    Et ensuite dans votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TStream  *pStlu=pDs->CreateBlobStream(pDs->Fields->Fields[i],bmReadWrite);
    TImage *imgtemp = new TImage(0);
    listimg->Add(imgtemp);                    // Sauvegarde du pointeur pour accéder à l'objet plus tard et pouvoir le supprimer
    imgtemp->Parent = Form1;                  // Remplacer par l'objet sur lequel il va être affiché
    imgtemp->Picture->Bitmap->LoadFromStream(pStlu); // chargement de l'image depuis de stream (valable pour un bmp)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Par défaut
    Bonjour
    je compte stocker le pointeur sur le memorystream
    est ce que cela va prendre beaucoup en ressource système ?
    (il y aura pas d'image par la suite....)

    Est ce mieux d'utiliser Tlist ou TlistImage ?

    Concernant le blob je compte a voir de blobl teste et blob image
    est ce que il y a unn moyen de detecter "la nature" du contenu
    d'un blob ?

    merci encore

  4. #4
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Pour toutes ces questions, je n'ai aucune réponse claire à vous donner, je ne sais pas.

    Je pense que cela dépend du nombre d'images et de leur poids. (pour les ressources)

    Le TList a l'avantage de pouvoir stocker n'importe quel pointeur. Je n'ai jamais utiliser le TImageList, si cette liste permet de stocker et manipuler les images, il faut le prendre, sinon, le TList est suffisant. Surtout si les images ne doivent plus être affichées par la suite.

    Pour le type de blob, vérifiez le début du flux. Il me semble qu'un fichier BMP commence par une suite bien définie (vraiment pas sur) et je ne sais pas si cette partie est stockée dans le blob.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Par défaut
    Bonjour et merci de votre aide.

    J'ai un problème initialisation , je risque d'avoir plusieurs image sur une ligne d'enregistrement

    D'ou le déclaration d'un tableau de TList
    Les dimensions ne seront connues qu'au moment de l'exécution de la requête
    SQL

    Cette initialisation sera dans la méthode ToCache(...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    TList **TabList;
    TabList[0]=new TList;
    J'ai un problème de violation

    du coup de prototype de ma procédure ressemblerais a ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool __fastcall TIbSgbd::ToCache(TIBClientDataSet * pCache, TIBQuery * pQuery,TList **TabList,int *Dim1)
    IBClientDataSet * pCache =le cahce pour le donnée

    TIBQuery * pQuery sour ce de ma requête SQL

    TList **TabList Tableau de liste d'image allouées via memorytream
    dans la procédure

    int *Dim1 paramètre entre/sortie donnant le nombre de liste

    Dim2 a mon avis n'est pas neccesaire vu qu'il ya la methode count()

    Comment bien initialiser mon tableau de liste ?
    Comment appeler au niveau de la méthode ToCache() TList** ?
    et bien desallouer?

    en vous remerciant encore

  6. #6
    Membre éclairé
    Homme Profil pro
    Consultant technique
    Inscrit en
    Juillet 2002
    Messages
    519
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 519
    Par défaut
    Ca en peut pas fonctionner. Déja, TList sert à gérer une liste, je ne comprend pas l'utilité de s'en faire un tableau.

    Ensuite, on n'utilise pas de cette manière un TList.
    Votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TList **TabList;
    TabList[0]=new TList;
    La syntaxe est plutôt de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TList *TabList = new TList(); // ne pas oublier "()"
    TList *temp = new TList();
    TabList->Add(temp);
     
    Et pour y accéder : (TList *)TabList->Items[0];

Discussions similaires

  1. [D6] Mettre des PNG dans un TImageList
    Par fab56 dans le forum Delphi
    Réponses: 4
    Dernier message: 02/03/2007, 19h12
  2. Mettre des images dans une liste déroulante
    Par PrinceMaster77 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 01/12/2006, 15h35
  3. Mettre des images dans une base
    Par ecarbill dans le forum Access
    Réponses: 4
    Dernier message: 22/08/2006, 15h59
  4. [Debutant] Mettre des images dans une Toolbar
    Par Beleim dans le forum Windows
    Réponses: 11
    Dernier message: 02/03/2006, 23h31
  5. Possibilité de mettre des images dans un DrawGrid?
    Par tactical dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/07/2005, 17h38

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