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 :

[Composant] TListView en couleur


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut [Composant] TListView en couleur
    Bonjour,
    j'essaye depuis un moment de changer la couleur du ColumnHeader de mon TListView en créant un nouveua composant, hélas je ne vois pas comment m'y prendre car le TListColumn décrivant les en-têtes du TListView sont des TCollectionItems et ça va si loin dans la VCL que je me suis perdu et je ne vois pas comment créer mon composant TXListView avec en-tête en couleur...

    Faut il que je redéfinisse un type personnalisé de tous les descendant de TListColumn, TCollection etc jusqu'a TWinControl ?

    Je suis perdu dans la jungle de la VCL, quelqu'un pourrait il m'ouvrir la route à coup de machette svp ?

    Merci d'avance !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Cela doit être possible en utilisant les evenements déclenchés lors du dessin du listview. Je n'ai pas les noms en tête, regarde sur l'aide du listview.

    Il doit être facile de trouver des exemples d'utilisations sur google.

  3. #3
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Effectivement, je développe ce qu'a dit cpdump , les évenements à implémenter sont :
    :arraow: OnCustomDraw
    ou
    :arraow: OnAdvancedCustomDraw

    Mais dans ce cas, je crainds fortement que tu es tout a dessiner....

    Tu cherches a le faire pour apprendre a faire des composants visuels ? ou bein tu en as besoin ?
    Car si t'en a besoin, il vaut mieux chercher en chercher sur les sites prévus à cet effet !
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  4. #4
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    j'ai une application toute grise à mettre en couleur et on ne doit plus voir un pixel de gris, d'où la nécessité de modifier la quasi totalité des composants de base.

    je ne me vois pas redessiner tout le composant à la mimine, je vais chercher sur Gougoule. ça a forcément déjà dû être fait par un autre développeur plus courageux ou sans délai à tenir

    Merci à vous 2

    je ne mets pas le tag résolu des fois qu'un génie passe par là on sait jamais !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    A mon avis tu as juste à modifier la couleur du backgroud dans l'evenement.

    Sinon, j'ai trouvé cela http://www.delphipages.com/tips/thread.cfm?ID=74

  6. #6
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Bonjour du matin !

    j'ai bien fouilé partout sans résultat hélas, et le OnCustomDraw permet de changer la couleur des objets dans le ListView, mais pas de l'en-tête.

    concernant le lien que tu m'a donné, c'est une exellente piste, hélas la majorité des constantes utilisée dans l'exemple sont introuvables et ne compilent donc pas.

    Apparement il faut récupérer le Handle du ColumnHeader et modifier son Canevas, mais je ne sais pas comment arriver à ce résultat :/

    Merci pour votre soutien moral

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 31
    Points : 27
    Points
    27
    Par défaut
    Salut!

    uses CommCtrl;

  8. #8
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Merci, ça compile bien maintenant

    j'arrive donc grâce à l'exemple à changer le style, mais quant à la couleur, comment savoir quelles constantes appeler ? Cette méthode est assez compliquée à modifier je trouve.

    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
    procedure TForm1.BitBtn1Click(Sender: TObject);
    const
     LVM_GETHEADER = LVM_FIRST + 31;
    var
     hHeader: THandle;
     style: dWord;
    begin
     {to get the header handle for the listview}
     hHeader := SendMessage(ListView1.Handle, LVM_GETHEADER, 0, 0);
     
     {to get the current style attributes for the header}
     style := GetWindowLong(hHeader, GWL_STYLE);
     
     {to toggle the HDS_BUTTONS style}
     style := style xor HDS_BUTTONS;
     
     {to apply the new style}
     SetWindowLong(hHeader, GWL_STYLE, style);
     
     {to invalidate the listview}
     SetWindowPos(ListView1.Handle, Form1.Handle, 0, 0, 0, 0, SWP_NOZORDER
    or SWP_NOSIZE or SWP_NOMOVE or SWP_DRAWFRAME)
    end;

  9. #9
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    A défaut de le faire soi-meme, il existe le TAdvListView de TMS Softaware qui fait exactement ce dont tu as besoin (les headers sont complétement cutomizable) :

    directement : http://www.tmssoftware.com/advlistv.htm
    De plus, le TAdvListView hérite de TListView; que demande le peuple !?

    la flopée d'autres compos :
    http://www.tmssoftware.com/
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  10. #10
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Han ! Mon entreprise utilise déjà les géniallissimes composants de TMS Software, j'ai donc le AdvListView dans ma palette, perdu au milieu des centaines de composants tous aussi géniaux de TMS que j'utilisais déjà !

    Je vais donc dériver de l'AdvListView pour mes besoins, mais oui je vais bien faire comme ça !

    Merci beaucoup de m'avoir montré du doigt ce que j'avais sous le nez NeilBgr !

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

Discussions similaires

  1. Composants palette de couleurs
    Par ThWilliam dans le forum Téléchargez
    Réponses: 9
    Dernier message: 07/01/2015, 08h15
  2. Composant dégradé de couleur
    Par khayyam90 dans le forum Contribuez
    Réponses: 0
    Dernier message: 04/01/2011, 14h24
  3. composant : choix des couleurs du site
    Par JLC83 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 16/08/2010, 15h18
  4. composant pour la couleur dégradé
    Par slim_java dans le forum 2D
    Réponses: 4
    Dernier message: 04/07/2009, 00h00
  5. Ecrire du texte en couleurs dans un composant
    Par wutang dans le forum Composants
    Réponses: 11
    Dernier message: 12/07/2004, 10h55

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