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 :

[D7] Images dans un TListView


Sujet :

Delphi

  1. #1
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 471
    Par défaut [D7] Images dans un TListView
    Bonjour,

    j'ai chargé des images dans un TListView. Je voudrais afficher l'image sélectionner dans un TImage.

    Pour ajouter des images : Add, mais pour en récupérer une ?

    Merci
    A+
    Charly

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 979
    Par défaut
    Tu veux dire ça MakeImageList pour afficher un dossier entier par exemple ?

    Ce n'est que la correction d'un exemple Embarcadero pour un TButtonedEdit élargi à une TListView, après tout ce qui compte c'est la TImageList en réalité !


    Pense que TImageList contient les images, pour récupérer une image au click je dirais un truc genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListView.LargeImages.GetImage(Item.ImageIndex, BMP);
    Image.Picture.Bitmap.Assign(BMP);


    D'ailleurs un TWebBrowser peut aussi faire le job pour afficher les images d'un dossier avec une seule ligne de code à voir le même sujet ici soit un Navigate, une fois le Navigate Completed, en réalité, c'est une SysListView32 (celle d'explorateur Windows) que l'on peut manipuler et modifier.
    Cela date de Windows 2000 et XP mais ça doit pouvoir encore fonctionner.
    Tu peux voir pour utiliser un TShellListView si tes images sont sur le disque ou un TJvThumbNail aussi

    Cela a été fait en D5 perso puis D6 pro pour la version TWebBrowser et en D7 pour la version TListView
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 471
    Par défaut
    Merci Shai,

    GetImage n'existe pas chez moi. Pour récupérer la premiere image du ListView, j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TForm2.Button3Click(Sender: TObject);
    var
      Bmp: TBitmap ;
    begin
      Bmp := TBitmap.Create;
      try
        ListView1.LargeImages.GetBitmap(0, BMP);
        Image1.Picture.Bitmap.Assign(BMP);
      finally
        Bmp.Free;
      end;
    end;
    Mais j'ai une violation d'accès !

    A+
    Charly

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 979
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 979
    Par défaut
    Faudrait savoir où la violation d'accès !

    Imaginons que tu as une ImageList1 et Image1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
    Mais depuis hier, je suppose que tu as résolu ton problème

    D'ailleurs, tu vas peut-être vouloir charger l'image d'origine et non la vignette, pour cela on manque d'info sur la sources des images.
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 565
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    comme j'ai encore D7 d'installé j'ai utilisé ma machine à remonter le temps. (c'est là on l'on voit l'évolution du produit, je me demande comment j'ai pu travaillé toutes ces années avec D3-D7 sans péter un cable)

    bref, ceci fonctionne, j'y ai mis bretelles et ceinture suite à ton message indiquant des violations d'accès
    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
    procedure TForm1.ListView1Click(Sender: TObject);
    var abitmap : Tbitmap;
    begin
    if assigned(listview1.LargeImages) AND (Listview1.ItemIndex>=0)  // bretelles
     then begin
       abitmap:=tbitmap.Create;
       try   
       Listview1.LargeImages.GetBitmap(listview1.ItemIndex,abitmap);
       if assigned(abitmap)  // ceinture
           then  image1.Picture.Bitmap.Assign(aBitmap);
        finally
         abitmap.Free;
        end;
     end;
    end;
    reste que ce n'est pas vraiment juste, car j'utilise itemindex de la liste et non l'imageindex de l'item
    [Edit] Grillé plus élégament par ShaiLeTroll
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 471
    Par défaut
    Merci à tous les 2, mais je vais tester tout ça. Mais je ne pourrai le faire que dans quelques jours

    A+
    Charly

  7. #7
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 471
    Par défaut
    Merci beaucoup, je garde la procedure de Serge qui fonctionne, mais avec SmallImages :

    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
    { ======================================================================== }
    procedure TForm2.Button3Click(Sender: TObject);
    var abitmap : Tbitmap;
    begin
    if assigned(listview1.SmallImages) AND (Listview1.ItemIndex>=0)  // bretelles
     then begin
       abitmap:=tbitmap.Create;
       try
       Listview1.SmallImages.GetBitmap(listview1.ItemIndex,abitmap);
       if assigned(abitmap) Then  // ceinture
             image1.Picture.Bitmap.Assign(aBitmap);
        finally
         abitmap.Free;
        end;
     end;
    end;
    { ======================================================================== }
    A+
    Charly

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

Discussions similaires

  1. Image dans le titre d'une TListView
    Par zemeilleurofgreg dans le forum Composants VCL
    Réponses: 13
    Dernier message: 03/04/2008, 20h09
  2. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  3. Image dans le designer
    Par kainor dans le forum JBuilder
    Réponses: 3
    Dernier message: 19/03/2003, 14h24
  4. Smiley (image dans un RichEdit)
    Par Waxayaz dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/02/2003, 14h32
  5. [VB6] [Excel] Insérer une image dans une feuille
    Par mathias dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 09/10/2002, 07h44

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