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 :

couleur de texte différentes dans un listbox


Sujet :

Delphi

  1. #1
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut couleur de texte différentes dans un listbox
    bonjour,

    j'aimerais savoir si il est possible de modifier la couleur du text dans un listbox selon l'item... par exemple une ligne sur deux?

    une méthode consiste à écrire directement sur la canvas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); 
                            begin 
                            ListBox1.Canvas.FillRect(Rect); //Remplit le rectangle spécifié du canevas avec le  pinceau en cours
                            ListBox1.Canvas.Font.Color:=clBlue; //Choix de la couleur
                            ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);  //Ecrit une chaîne dans le canevas aux coordonnées (X,Y)
                            end;
    Mais ce que je veux pouvoir faire c'est ecrire dans la Listbox directement pour pouvoir utiliser à nouveaux les chaines entrées.
    En fait, c'est surtout que mon listbox est normalement déjà rempli, et je dois changer la couleur du texte selon une condition.

    merci

    ludo

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Salut,

    J'ai une suggestion ... je ne sais pas si cela va te convenir :

    Tu fais une boucle de i au nombre d'item, et à chaque fois que i est impair, tu changes de couleur.

    Pour ce faire, tu utilises Odd(i) qui renvoie true si i est impair.

    J'espère que ca te conviendra.

  3. #3
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    En fait ce n'est pas la recherche de l'item qui m'interresse ici, puisque cela je le fait selon une condition ( membre connecté ou non), mais plutôt la fonction (ou propriété) qui me permettra de changer la couleur du texte de un item.

    Merci pour ta réponse en tout cas...

    ludo

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Points : 4 935
    Points
    4 935
    Par défaut
    Ok!

    Bon, alors pour mettre en bleu un index, il faut appeler l'événement DrawItem.

    J'ai fait un truc vite fait ... je redessine la ligne si elle est impaire ... juste pour tester...

    Voici le 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
    15
    16
    17
    18
    19
    procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    begin
    ListBox1.Canvas.Font.Color:=clBlue; //Choix de la couleur de font
    ListBox1.Canvas.Brush.Color:=clRed; //Choix de la couleur d'arrière plan
    ListBox1.Canvas.FillRect(Rect); //Remplit le rectangle spécifié du canevas
    ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[Index]);
    end;
     
    procedure TForm1.ListBox1Click(Sender: TObject);
    var
    i:integer;
    begin
    for i:=0 to ListBox1.Count-1 do
    begin
      if Odd(i) then
      ListBox1DrawItem(ListBox1,i,ListBox1.ItemRect(i),[odDefault]);
    end;
    end;
    C'est un petit début...

    PS:

    En ce qui concerne le paramètre TOwnerDrawState il faut lire l'aide de Delphi... Personnellement, j'ai pas trop testé

  5. #5
    Membre confirmé Avatar de TryExceptEnd
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    501
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 501
    Points : 574
    Points
    574
    Par défaut
    Comme ceci ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.ListBox1DblClick(Sender: TObject);
    var i:integer; Rect:TRect;
    begin
    ListBox1.Style:=(lbOwnerDrawFixed);
    for i:=0 to ListBox1.Count-1 do begin
      ListBox1.Canvas.Brush.Color:=clBlue;//Couleur du fond
      Rect:=ListBox1.ItemRect(i);
      ListBox1.Canvas.FillRect(Rect); //Remplit le rectangle spécifié du canevas avec le  pinceau en cours
      ListBox1.Canvas.FrameRect(Rect);
      ListBox1.Canvas.Font.Color:=clWhite; //Choix de la couleur de la font
      ListBox1.Canvas.TextOut(Rect.Left, Rect.Top, ListBox1.Items[i]);  //Ecrit une chaîne dans le canevas aux coordonnées (X,Y)
     end;
    end;
    Tu n'as plus qu'a intégrer ta condition
    Si vous êtes libre, choisissez le Logiciel Libre.

  6. #6
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    ces solution utilisent le canvas... C'est le petit bout de prog que j'ai écrit dans le premier post. Moi je voulais éviter d'utiliser le canvas... Mais apparemment il n'y a pas d'autres solution... Autant pour un listbox entier, une propriété permet de changer la couleur, autant je voulais me servir d'une fonction semblable pour choisir la couleur à chaque item...

    Merci tout de même pour vos posts!

    ludo

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

Discussions similaires

  1. changer couleur et texte affichés dans cmd
    Par zezitinho dans le forum C++
    Réponses: 2
    Dernier message: 22/10/2007, 09h31
  2. couleurs de texte différentes dans une cellule
    Par mali29 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 14/09/2007, 12h38
  3. Changer la couleur d'une ligne dans une listbox
    Par BoyzInDaProject dans le forum MFC
    Réponses: 2
    Dernier message: 01/06/2007, 10h23
  4. Changer la couleur d'une ligne dans une ListBox
    Par Leray dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 16/07/2006, 14h44
  5. Formats du texte différents dans un label
    Par sunvialley dans le forum IHM
    Réponses: 2
    Dernier message: 28/06/2006, 13h34

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