Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : images dans un TListView [ Archives / J'AI BESOIN D'AIDE !!!! :O ] (BlouMan)

jeudi 24 mars 2005 à 14:38:50 | images dans un TListView

BlouMan

bonjour les gens,

je voudrais savoir s'il est possible (et a quel cas comment on fait) d'insérer des images sur lesquelles on peut ensuite cliquer à l'intérieur d'une TListView?

pour vous donner une idée ça devrait (au niveau du rendu) s'approcher de la colonne "classement" dans la bibliothèque multimédia de Windows Média Player. Y'a des petites étoiles et quand la souris survole la case 5 petites étoiles "vides" s'affichent on clique alors sur l'une d'elle pour dire si le morceau est classé parmi les bons ou les mauvais et si on a cliqué sur la 3ème quand on retire la souris de la case il y a 3 étoiles "pleines" et les autres ne sont plus visibles.

merci beaucoup d'avance pour votre quantité incroyable de réponses.... ;)



BLOU BLOU POWAA

jeudi 24 mars 2005 à 20:50:21 | Re : images dans un TListView

WhiteHippo

Membre Club

N.B. ce qui suit à été fait en 2 coups de cuillères à pot, et ce n'est qu'un exemple purement didacticiel fait rapidement. Bref ce n'est qu'une trame à améliorer et compléter.

Ceci étant dit, voilà comment j'ai procédé :

D'abord 3 étoiles :     (Je sais c'est une capture de celles du lecteur windows media player :oP, mais j'ai précisé au dessus que j'ai fait ça rapido... pas le temps de faire les miennes)
Tu ajoutes 3 Tbitmap à ta fiche pour chacune de ces etoiles, avec la propriété transparent=true.
puis une listview, avec 4 colonnes, et 3 éléments (Juste pour tester)

La méthode consiste à utiliser les evenement OnCustomDraw de la listview.


Voici la fiche :

object Form1: TForm1
  Left = 200
  Top = 107
  Width = 452
  Height = 384
  Caption = 'WhiteHippo OnCustomDraw ListView Demo'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Image1: TImage
    Left = 401
    Top = 4
    Width = 12
    Height = 13
    AutoSize = True
    Picture.Data = {
      07544269746D61700A020000424D0A0200000000000036000000280000000C00
      00000D0000000100180000000000D40100000000000000000000000000000000
      0000F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0
      F3EAE0F3EAE0F3EAE0E1E1E0CCB29DCCC7C1F3EAE0F3EAE0F3EAE0F3EAE0CCC7
      C1CCB29DE1E1E0F3EAE0F3EAE0E8E5E2D6AA89F9E2D1C8AC96F3EAE0F3EAE0C8
      AC96F9E2D1D6AA89E8E5E2F3EAE0F3EAE0F3EAE0CCAB92F7E0CEEED4BFCAA386
      CAA386EED4BFF7E0CECCAB92F3EAE0F3EAE0F3EAE0F3EAE0D2D5D4D3AA8CECCF
      BAEDD3BEEDD3BEECCFBAD3AA8CD2D5D4F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0CA
      9C7AF1D7C4E6C8B2E6C8B2F1D7C4CA9C7AF3EAE0F3EAE0F3EAE0F3EAE0CFD3D4
      C0926FD2AC8EFBE5D5F4DCC9F4DCC9FBE5D5D2AC8EC0926FCFD3D4F3EAE0B9A6
      95CA9A78FEEFE6FEF3ECFEF8F6FEF8F6FEF8F6FEF8F6FEF3ECFEEFE6CA9A78B9
      A695D4A98AEBD5C9D5AC8ED4AA8CD6B196FEF4EEFEF4EED6B196D4AA8CD5AC8E
      EBD5C9D4A98AF3EAE0F3EAE0F3EAE0F3EAE0D7B092FEF4EEFEF4EED7B092F3EA
      E0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0C5BFB5F9EEE7F9EEE7C5
      BFB5F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0DEDFDFECD0BC
      ECD0BCDEDFDFF3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EA
      E0E6C1A5E6C1A5F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0}
    Transparent = True
  end
  object Image2: TImage
    Left = 413
    Top = 4
    Width = 12
    Height = 13
    AutoSize = True
    Picture.Data = {
      07544269746D61700A020000424D0A0200000000000036000000280000000C00
      00000D0000000100180000000000D40100000000000000000000000000000000
      0000F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0
      F3EAE0F3EAE0F3EAE0F1E8E3CCC2BBE3DAD4F3EAE0F3EAE0F3EAE0F3EAE0E3DA
      D4CCC2BBF1E8E3F3EAE0F3EAE0EFE7E2D1C7C1E4DBD6D8CFC9F3EAE0F3EAE0D8
      CFC9E4DBD6D1C7C1EFE7E2F3EAE0F3EAE0F3EAE0C3B9B2F3EAE0ECE4DFD3C9C3
      D3C9C3ECE4DFF3EAE0C3B9B2F3EAE0F3EAE0F3EAE0F3EAE0DFD5D0DCD3CDF3EA
      E0F3EAE0F3EAE0F3EAE0DCD3CDDFD5D0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0CF
      C5BEF3EAE0F3EAE0F3EAE0F3EAE0CFC5BEF3EAE0F3EAE0F3EAE0F3EAE0EAE1DC
      C9BFB8ECE4DFF3EAE0F3EAE0F3EAE0F3EAE0ECE4DFC9BFB8EAE1DCF3EAE0C4BA
      B3DDD4CEF3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0DDD4CEC4
      BAB3D1C7C1D1C7C1D1C7C1D1C7C1ECE4DFF3EAE0F3EAE0ECE4DFD1C7C1D1C7C1
      D1C7C1D1C7C1F3EAE0F3EAE0F3EAE0F3EAE0CDC3BDF3EAE0F3EAE0CDC3BDF3EA
      E0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0D0C6C0F3EAE0F3EAE0D0
      C6C0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0EEE6E1D8CEC8
      D8CEC8EEE6E1F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EA
      E0D0C6C0D0C6C0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0}
    Transparent = True
  end
  object Image3: TImage
    Left = 425
    Top = 4
    Width = 12
    Height = 14
    AutoSize = True
    Picture.Data = {
      07544269746D61702E020000424D2E0200000000000036000000280000000C00
      00000E0000000100180000000000F80100000000000000000000000000000000
      0000F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0
      F3EAE0F3EAE0F3EAE0E1E2E257A8D690C2DCF3EAE0F3EAE0F3EAE0F3EAE090C2
      DC57A8D6E1E2E2F3EAE0F3EAE0E8E5E32EA1DC2EDFF055A5D5F3EAE0F3EAE055
      A5D52EDFF02EA1DCE8E5E3F3EAE0F3EAE0F3EAE050A8D82ED4F82EC1ED479FD5
      479FD52EC1ED2ED4F850A8D8F3EAE0F3EAE0F3EAE0F3EAE0C5D8E12EADDF2EC5
      F82ECEF42ECEF42EC5F82EADDFC5D8E1F3EAE0F3EAE0F3EAE0F3EAE0F3EAE033
      A7DB2EE4F92ECBF92ECBF92EE4F933A7DBF3EAE0F3EAE0F3EAE0F3EAE0C9D7DF
      41A1D62EB4DB2EF9F92EEAFA2EEAFA2EF9F92EB4DB41A1D6C9D7DFF3EAE066B1
      D92EA1DCC1F8F8C9FBFAFDFBFAFDFBFAFDFBFAFDFBFAC9FBFAC1F8F82EA1DC66
      B1D932A6DF92D9F032ABDF32A7DF2EB4DF2EFBFA2EFBFA2EB4DF32A7DF32ABDF
      92D9F032A6DFF3EAE0F3EAE0F3EAE0F3EAE047A6D82EFBFA2EFBFA47A6D8F3EA
      E0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE07DBBDAB4EBF6B4EBF67D
      BBDAF3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0DDE1E251C1E7
      51C1E7DDE1E2F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EA
      E02EADDF2EADDFF3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3
      EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0F3EAE0}
    Transparent = True
  end
  object ListView1: TListView
    Left = 0
    Top = 0
    Width = 399
    Height = 350
    Align = alLeft
    Columns = <
      item
      end
      item
      end
      item
        MaxWidth = 66
        MinWidth = 66
        Width = 66
      end
      item
      end>
    HotTrack = True
    HoverTime = 1
    Items.Data = {
      770000000300000000000000FFFFFFFFFFFFFFFF030000000000000002413102
      4231013502443100000000FFFFFFFFFFFFFFFF03000000000000000241320242
      32013202443200000000FFFFFFFFFFFFFFFF0300000000000000024133024233
      0130024433FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
    RowSelect = True
    ParentShowHint = False
    ShowHint = True
    TabOrder = 0
    ViewStyle = vsReport
    OnCustomDraw = ListView1CustomDraw
    OnCustomDrawItem = ListView1CustomDrawItem
    OnCustomDrawSubItem = ListView1CustomDrawSubItem
  end
end

Ensuite le code de la fiche :

unit Demo;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    ListView1: TListView;

    procedure ListView1CustomDraw(Sender: TCustomListView;
      const ARect: TRect; var DefaultDraw: Boolean);
    procedure ListView1CustomDrawItem(Sender: TCustomListView;
      Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
    procedure ListView1CustomDrawSubItem(Sender: TCustomListView;
      Item: TListItem; SubItem: Integer; State: TCustomDrawState;
      var DefaultDraw: Boolean);
  end;

var
  Form1: TForm1;

implementation

uses
  CommCtrl;

{$R *.DFM}

procedure TForm1.ListView1CustomDraw(Sender: TCustomListView;
  const ARect: TRect; var DefaultDraw: Boolean);
begin
  Sender.Canvas.Brush.Color := clWhite ;
  Sender.Canvas.fillrect(ARect);
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView;
  Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  DefaultDraw := True;
  if not odd(item.Index) then
    sender.Canvas.Brush.Color := $00CECEFF
  else
    Sender.Canvas.Brush.Color := clwhite;
end;

procedure TForm1.ListView1CustomDrawSubItem(
  Sender: TCustomListView; Item: TListItem; SubItem: Integer;
  State: TCustomDrawState; var DefaultDraw: Boolean);
var
  T,L : integer ;
  UnRect : TRect ;

  procedure DessinerClassement ( const T,L,Valeur : Integer; const survole : boolean ) ;
  var
    R : TRect ;
  const
    LARGEUR_ETOILE = 13 ;

    procedure DessinerEtoile ( const x,y : integer ; const s, v : boolean );
    begin
      if      ( s and v ) then Sender.Canvas.Draw(x,y,Image3.Picture.Graphic)  // survole
      else if ( v ) then Sender.Canvas.Draw(x,y,Image1.Picture.Graphic)  // valide
                    else Sender.Canvas.Draw(x,y,Image2.Picture.Graphic); // vide
    end ;

    procedure DessinerVide ( const x,y : integer ; const b : boolean );
    begin
      Sender.Canvas.Draw(L+LARGEUR_ETOILE*0,T,Image3.Picture.Graphic)
    end ;

  begin
    R := Rect(L,T,L+LARGEUR_ETOILE*5+1,T+LARGEUR_ETOILE+1);
    Sender.Canvas.FillRect(R);
    DessinerEtoile (L+LARGEUR_ETOILE*0,T,Survole,( Valeur >=1 ) );
    DessinerEtoile (L+LARGEUR_ETOILE*1,T,Survole,( Valeur >=2 ) );
    DessinerEtoile (L+LARGEUR_ETOILE*2,T,Survole,( Valeur >=3 ) );
    DessinerEtoile (L+LARGEUR_ETOILE*3,T,Survole,( Valeur >=4 ) );
    DessinerEtoile (L+LARGEUR_ETOILE*4,T,Survole,( Valeur >=5 ) );
  end ;

begin
  DefaultDraw := True;
  if not odd(item.Index) then
    sender.Canvas.Brush.Color := $00CEFFFF
  else
    Sender.Canvas.Brush.Color := clwhite;
  ListView_GetItemRect( Sender.Handle,Item.Index,UnRect, 0);

  if ( SubItem=2) then // 2 = Colonne du classement où l'on affiche les étoiles
  begin
    DefaultDraw := false ;
    T := UnRect.Top ;
    L := ListView_GetColumnWidth( Sender.Handle, 0 )
       + ListView_GetColumnWidth( Sender.Handle, 1 ) ;
    DessinerClassement( T, L, Item.Index, cdsFocused in State ) ;
  end ;

end;

Voilà j'espere que cela répond à tes attentes.

Cordialement.


lundi 28 mars 2005 à 00:27:23 | Re : images dans un TListView

WhiteHippo

Membre Club

Bon, mon code a pas l'air de t'inspirer beaucoup Blouman :oP

Cordialement.

 


lundi 11 avril 2005 à 13:36:31 | Re : images dans un TListView

BlouMan

si si  mais je suis en train de le tester... je validerais quand je saurais si ça marche bien... ;) 



BLOU BLOU POWAA

lundi 11 avril 2005 à 14:28:12 | Re : images dans un TListView

BlouMan

y'a un probleme... c'est quoi ça :

ListView_GetItemRect( Sender.Handle,Item.Index,UnRect, 0);

ListView_GetColumnWidth( Sender.Handle, 0 );



c'est toi qui l'a implémenté?





BLOU BLOU POWAA


lundi 11 avril 2005 à 19:03:16 | Re : images dans un TListView

WhiteHippo

Membre Club
Y'a pas de problème  si tu incorpore l'unité CommCtrl (voir la clause uses sous la section implementation). C'est dans cette unité qu'elles sont définies.

Cordialement.



Cette discussion est classé dans : images, case, souris, tlistview, étoiles


Répondre à ce message

Sujets en rapport avec ce message

CheckBoxes dans un TListView [ par tao ] Bonjour,J'utilise un TListView avec l'option CheckBoxes à 'TRUE' de manière à avoir une case à cocher devant chaque ligne.Je voudrais n'avoir qu'une s Les TreeView auront ma peau :'( [ par John Dogget ] Bonjour à tous.J'essaie depuis quelques temps d'utiliser un TreeView avec des cases à cocher.Je pensais en premier utiliser un composant de la JVCL, m Icone dans une TTooBar [ par lguez ] Dans le TTOOLBAR on peut afficher une image differente si la souris passe sur une icone de la ToolBar ou non en renseignant les champs Images et HotIm Images dans un Tlistview [ par alexis2015 ] G Delphi 7 studio et j'aimerai insérer d'un part une image dans une listview ( comme un log ) d'autre part un progessbar. Comment puis-je procéder ?Me Détecter souris hors d'un Timage [ par JackTheRipp3r ] Salut @ tous !Voilà, je suis en train de créer une application dont le design est totalement modifié, et là j'en suis aux boutons agrandissement quitt Glisser/Deposer des images [ par Ricolabricot ] Bonjour,suis un peu dans la galere, pour un projet je dois faire un sorte ke lorsque je clik sur une image (ki est en fait une icone) et ke je depose Déplacer avec la souris un composant 'Tshape' [ par orelien ] Bonjour,J'aimerais déplacer avec la souris un composant 'Tshape' à l'exécution.Quelqu'un peut-il m'aider ?J'ai tenté ceci mais en vain :const SC_DragM TListView et éléments sélectionnés [ par Coolapix ] Bonsoir à tous !Euh... Le poseur de questions à la noix est de retour...Alors voilà...Dans un TListView, comment puis-je faire pour récupérer le texte Edition d'images [ par Fly57 ] Bonsoir,je developpe un éditeur d'images comme projet pour la fac (delphi biensur), et j'aurais quelques questions par rapport à ça : tout d'abord je Comment ajouter des ressources (images, textes) à une DLL ? [ par rguef ] Bonjour,Je cherche à ajouter des images et textes à une DLL.Comment faire ?WezzaR


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,624 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.