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

Composants VCL Delphi Discussion :

[D7 Listview] Comment afficher une image dans l'entête de colonne ?


Sujet :

Composants VCL Delphi

  1. #21
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    Si je code ça :
    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
    procedure TForm1.SetColumnImage(lv: TListView; Column, Image: Integer; ShowImage: Boolean);
    var Align,hHeader: integer;
      HD: HD_ITEM;
    begin
      hHeader := SendMessage(lv.Handle, LVM_GETHEADER, 0, 0);
      with HD do begin
          case lv.Columns[Column].Alignment of
            taLeftJustify:  Align := HDF_LEFT;
            taCenter:       Align := HDF_CENTER;
            taRightJustify: Align := HDF_RIGHT;
          else
            Align := HDF_LEFT;
          end;
          mask := HDI_IMAGE or HDI_FORMAT;
          pszText := PChar(lv.Columns[Column].Caption);
          if ShowImage then
            fmt := HDF_STRING or HDF_IMAGE or HDF_BITMAP_ON_RIGHT
          else
            fmt := HDF_STRING or Align;
          iImage := Image;
          //hbm := Image1.Picture.Bitmap.Handle ;
      end;
      SendMessage(hHeader, HDM_SETITEM, Column, Integer(@HD));
    end;
     
    procedure TForm1.ListView1ColumnClick(Sender: TObject;
      Column: TListColumn);
    begin
      inherited;
     
      SetColumnImage(ListView1, Column.ID, 0, True) ;
    end;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Bitmap := TBitmap.Create ;
      Bitmap.LoadFromFile('c:\temp\arrow.bmp');
      Image1.Picture.Bitmap.Assign(Bitmap);
    end;
    et que dans ListView1.SmallImages j'affecte ma TListImage ça fonctionne
    Mais si je décommente la ligne hbm := Image1.Picture.Bitmap.Handle ; et commente iImage := Image;
    là il m'affiche aucune image.

    Sur ce site : http://www.winapizone.net/tutorials/...nsortimage.php

    j'ai peut-être trouvé une piste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    hi.mask = HDI_FORMAT | (isCommonControlVersion6 ? 0 : HDI_BITMAP);
    or nous on met HDI_IMAGE, j'essaye demain

  2. #22
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Points : 681
    Points
    681
    Par défaut
    J'ai réussi !!!!!!!!

    Grâce à la doc trouvé sur http://www.softwareonline.hu/art744/...komponens.html

    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
    procedure TForm1.SetColumnImage(lv: TListView; Column, Image: Integer; ShowImage: Boolean);
    var Hditem : THdItem;
        Header : Integer ;
    begin
        Header := SendMessage(lv.Handle, LVM_GETHEADER, 0, 0);
     
        fillchar(hditem,sizeof(thditem),0); //a struktúrát ,,kiürítjük''
        Hditem.Mask:=HDI_FORMAT; //a formátumot kérdezzük le
        Header_GetItem(Header, Column, Hditem);
     
        Hditem.Mask:=Hditem.Mask or hdi_format or HDI_BITMAP;
        //HDI_BITMAP: paraméter a hbm-ben
    //    hditem.hbm:=fcolumnimage.bitmap.Handle; // a kép leírója (handle)
        hditem.hbm := Image1.Picture.Bitmap.Handle ;
    //    hditem.fmt:=Hditem.fmt or hdf_bitmap or integer(ColumnImagePos=ipRight) * hdf_bitmap_on_right;
        hditem.fmt:=Hditem.fmt or hdf_bitmap or hdf_bitmap_on_right;
     
        Header_SetItem(Header,Column,hditem);
    end
    Ce qui est important c'est cette ligne là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Hditem.Mask:=HDI_FORMAT; //a formátumot kérdezzük le
    si on met HDI_IMAGE ou HDI_BITMAP ça ne fonctionne plus.

    ATTENTION
    Si vous faites un composant dérivé de TListView pour avoir la flèche automatiquement, il faut regénérer l'image à chaque clique du header.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Debutant,comment afficher une image dans un Jpanel
    Par dilamax_1 dans le forum Graphisme
    Réponses: 1
    Dernier message: 27/04/2008, 16h05
  2. Comment afficher une image dans une page web
    Par hamma2 dans le forum ASP.NET
    Réponses: 13
    Dernier message: 23/04/2008, 14h34
  3. [HTML] Comment afficher une image dans un mail?
    Par NedaRyme dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 14/02/2008, 13h20
  4. Réponses: 4
    Dernier message: 08/05/2006, 20h12
  5. comment afficher une image dans un jpanel ?
    Par 180degrés dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 18/04/2006, 15h33

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