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 :

ListBox et couleurs


Sujet :

Delphi

  1. #1
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut ListBox et couleurs
    Bonjour,

    J'ai un ListBox avec 5 éléments et j'ai 1 bouton aussi.
    Je voudrais qu'en cliquant sur le bouton, l'élément 2 et 3 semettent en rouge.
    Apparemment c'est pas onDrawItem qui marche bien.
    Voilà mon 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
    procedure TForm1.FormShow(Sender: TObject);
    begin
        ListBox1.Items.Add('valeur1');
        ListBox1.Items.Add('valeur2');
        ListBox1.Items.Add('valeur3');
        ListBox1.Items.Add('valeur4');
        ListBox1.Items.Add('valeur5');
        ListBox1.Items.Add('valeur6');
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        //quoi mettre???
    end
    Merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Par défaut
    Bonjour,

    en principe c'est bien on drawnItem.

    Aide Delphi 7 en français
    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
    Se produit lorsqu'un élément d'une boîte liste dessinée par le propriétaire doit être réaffiché.
     
    Syntaxe Delphi :
     
    propertyOnDrawItem:TDrawItemEvent;
     
    Syntaxe C++:
     
    __ propertyTDrawItemEventOnDrawItem ={read=FOnDrawItem,write=FOnDrawItem};
     
    Description
     
    Utilisez l'événement OnDrawItem pour coder un gestionnaire dessinant les éléments des boîtes liste avec les valeurs de Style àlbOwnerDrawFixed,lbOwnerDrawVariable ou lbVirtualOwnerDraw.OnDrawItem se produit lorsque la boîte liste a besoin d'afficher un élément.OnDrawItem n'a lieu que dans les boîtes liste dessinées par le propriétaire.
     
    La taille du rectangle contenant l'élément est déterminée soit par la propriétéItemHeight pour les boîtes liste dessinées par le propriétaire de hauteur fixe ou par la réponse àl'événement OnMeasureItem pour les boîtes liste de hauteur variable.
    La question que je me pose en premier concerne le style de votre TListBox. Est il dans les valeurs que delphi indique comme correcte ?

    Nota: L'aide donne aussi un exemple simple pour dessiner le text. Voir 'Exemple Delphi' en haut de l'écran, a coté de 'Voir aussi'.

  3. #3
    Membre expérimenté
    Avatar de mohamed
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 217
    Par défaut
    Merci
    Mais le pbleme est que onDrawitem se produit quand la listbox est en train de dessiner alors que moi je voudrais que la couleur change après le clic sur le bouton.


    PS:J'utilise comme style de mon listbox : lbOwnerDrawVariable

  4. #4
    Expert confirmé
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Par défaut
    Salut,

    Je pense qu'il suffit de demander un repaint du contrôle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      ListBox1.Repaint; // ou Refresh
    @+

  5. #5
    Membre émérite
    Avatar de denokan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2002
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2002
    Messages : 434
    Par défaut
    lbOwnerDrawVariable permet de définir une ListBox pour laquelle les éléments ont des hauteurs variables, ce n'est donc pas forcément nécessaire dans ton cas. de plus il n'existe pas de propriété colors qui permettrai d'affecter une couleur différente par ligne, tu va donc devoir gérer toi-même une liste des couleurs à utiliser, ou alors la deviner à partir du contenu de ton ListBox. pour cela tu peux utiliser l'objet TList dans lequel tu peux stoquer des TColor.

    ci joint un petit exemple pour te montrer
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [Débutant] Listbox avec couleurs
    Par Quinox dans le forum C#
    Réponses: 2
    Dernier message: 01/07/2012, 21h41
  2. [XL-2003] ListBox et couleur
    Par SSOOAADD dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/08/2011, 15h15
  3. Dans une ListBox, une couleur par ligne
    Par molo2003 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 13/02/2010, 12h17
  4. ListBox Scrollbar Couleur
    Par gobgob dans le forum Delphi
    Réponses: 9
    Dernier message: 29/05/2007, 11h12
  5. [Canvas] Listbox, couleur et multiselect
    Par rbag dans le forum Composants VCL
    Réponses: 3
    Dernier message: 25/09/2002, 13h02

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