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 :

Changer les icones par défaut du composant TDirectoryListBox


Sujet :

Composants VCL Delphi

  1. #1
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Changer les icones par défaut du composant TDirectoryListBox
    Salut à tous,

    Je cherche à changer l'icône par défaut 'dossier' dans un composant TDirectoryListBox (onglet Win 3.1).

    En effet, l'icône du dossier jaune n'est pas des plus sexy et j'aimerais bien le redéfinir.

    Si c'est pas possible de le redéfinir dans l'objet TDirectoryListBox, y'aurait-il moyen que je puisse récupérer un composant faisant la même chose où j'aurais la possibilité de redéfinir cette icône ?

    Cette solution serait la meilleure car elle me permettrait d'améliorer mes compétences dans l'héritage des objets provenant de TCustomListBox dont dérive TDirectoryListBox.

    D'avance, je vous remercie des réponses que vous voudrez bien m'apporter.

    A+

    Philippe.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    D'après l'implémentation que j'ai pu voir à l'intérieur de TDirectoryListBox, il est possible de personnaliser les icônes mais seulement héritant un nouveau composant de ce dernier.

    Le composant actuel gère en protected trois bitmap ClosedBMP, OpenedBMP, CurrentBMP représentant les différents icônes des dossiers suivant l'état de la liste. Ces objets sont créés et leur image chargé dans la méthode ReadBitmaps qui en protected et virtual.

    Dans le nouveau composant hérité il suffit juste de redéfinir ReadBitmaps, de créer les trois objets TBitmat (ou appeler inherited) et changer l'image affectée.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  3. #3
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Cool !
    Cool !

    Merci beaucoup de cette réponse...

    Peux tu me dire comment tu as fait pour accéder aux informations 'protected' de ce composant ? (les 3 bitmaps ClosedBMP, OpenedBMP, CurrentBMP)

    On accéder à ces informations par Delphi ?

    Parce que si je tape sur F1, je n'arrive pas à accéder à ces informations...

    Même question pour la méthode ReadBitmaps et le type des 3 Bitmap (TBitmap) : ce genre d'infos ne peut s'inventer

    En clair, plutôt qu'une solution clé en main, j'aimerais obtenir la démarche qui mène à la solution histoire que je me couche moins bête ce soir

    Merci en tous cas de ces précieuses informations.

    A+

    Philippe.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Ben pour ça je dirais que ça dépend fortement si tu possèdes Delphi en version personnelle ou professionnelle.

    Dans la première tu n'as pas accès aux sources donc rien à faire (ou alors te baser sur l'aide si elle est suffisamment détaillée). Par contre dans la seconde tu as accès aux sources donc un simple CTRL + Clic sur le nom de la classe et hop il t'emmènes à la déclaration et à l'implémentation de la classe.

    Après j'ai cherché au plus bas niveau c'est à dire le dessin du composant pour trouvé où était récupéré l'image, puis à partir de là j'ai cherché où était renseigné cette image et voila le résultat de mes investigations.
    La FAQ - les Tutoriels - Le guide du développeur Delphi devant un problème

    Pas de sollicitations techniques par MP -

  5. #5
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Plus d'infos...
    En voilà une info qu'elle est bonne !

    Merci beaucoup de ces précisions...

    Je viens de faire Ctrl+Clic sur ce composant sous Delphi 7 Entreprise mais rien ne se passe...

    Aurais-je une installation pas assez complète pour avoir le détail de ce composant, ou ai-je besoin d'une autre version pour ce faire ?

    Peux tu me renseigner ?

    Merci en tous cas de toutes ces précisions.

    Philippe.

  6. #6
    Expert éminent sénior
    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 : 61
    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
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par the_clansman Voir le message
    Je viens de faire Ctrl+Clic sur ce composant sous Delphi 7 Entreprise mais rien ne se passe...
    Si tu as fais un Ctrl+Click sur le composant dans la palette effectivement cela ne donne rien. C'est au niveau de l'unité .pas que ceci est fonctionnel.

    Pose un composant sur une fiche, et depuis le code fais un Ctrl+Click sur le nom de la classe TDirectoryListBox. Cela va ouvrir l'unité filectrl.pas et pointer sur la classe en question.

    @+ Claudius

  7. #7
    Inactif
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 97
    Points : 84
    Points
    84
    Par défaut Bien joué ;)
    Salut,

    En fait, j'avais pas tapé ctrl+clic au niveau de la palette, mais j'avais tapé sur le fichier .pas, au beau milieu de nulle part 'TDirectoryListBox'.

    Je voyais bien que le nom se surlignait, mais quand je cliquais dessus, rien ne se passait.

    Je supposais donc que ça ne marchait pas...

    C'est en faisant la manip de Claudius que je me suis rendu compte qu'il fallait cliquer sur le type du composant lors de la déclaration... et là, nickel : le source est apparu !

    Merci donc à tous : je crois que ma requête est résolue... Il ne me reste plus qu'à bosser pour dessiner ce que je veux à la place des icônes standard.

    Bonne continuation.

    Philippe.

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

Discussions similaires

  1. Comment changer les noms par défaut d'un objet ?
    Par zoltix dans le forum PowerAMC
    Réponses: 1
    Dernier message: 06/01/2011, 02h08
  2. Réponses: 3
    Dernier message: 01/03/2008, 14h50
  3. Réponses: 10
    Dernier message: 05/11/2007, 15h46
  4. Comment changer l'icone par défaut ?
    Par Mariussy dans le forum EDI
    Réponses: 3
    Dernier message: 19/09/2005, 20h23
  5. Réponses: 9
    Dernier message: 13/06/2005, 17h56

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