Accueil > Forum > > > > [Conseils] Faire fonctionner correctement une ImageList
[Conseils] Faire fonctionner correctement une ImageList
vendredi 1 septembre 2006 à 16:21:46 |
[Conseils] Faire fonctionner correctement une ImageList

violent_ken
|
Violent Ken
Bonjour, j'aimerais avoir des précisions sur le contrôle ImageList. Rassurez vous, j'ai déjà recherché (en vain) des infos sur le forum...
Voilà ce que j'aimerais savoir :
-comment "initialiser" une ImageList (j'obtiens parfois le message "Le contrôle ImageList doit être initialisé avant utilisation" erreur 35613), et quand ?
-comment effacer ses éléments et quand ?
Comment, parce que pour les effacer, j'obtiens le message "Le contrôle ImageList ne peut pas être modifié tant qu'un autre contrôle est dépendant de lui-35917". Quand est-ce que le lien a t-il été créé ? Avec quel(s) composant(s) ? Comment enlever ce lien ? Comment le remettre ? A quoi sert-il ?
Et quand, parce que je me retrouve souvent avec le message "Clé non unique dans la collection -35602".
-dois je utiliser un contrôle ImageList par ListView/TreeView ? Ou bien un seul suffit pour tous ? Dois-je "dédier" un ImageList par composants ListView/TreeView ? Doivent-ils être sur la même form ?
Pour le détail de ce que je veux faire : j'ai plusieurs Listview/TreeView (listview qui fonctionnent en mode détail avec des icones) et une seule ImageList (le tout éparpillé dans plusieurs form). Je stocke toutes mes images dans cette ImageList, et il m'arrive plusieurs problèmes : -clé non unique -impossible de modifier le contrôle ImageList -il faut initialiser le contrôle ImageList Donc je ne maitrise pas :(
Cà fait beaucoup de questions, mais actuellement mon code n'est pas propre ; il arrive que mes ListViews/TreeViews soient vides à cause des ImageList, il arrive que les icones n'apparaissent pas, et je dois metter plusieurs horribles On error Resume Next pour parvenir à les remplir plus ou moins correctement.
Bref, HELP, et un grand merci à celui qui m'aidera dans la compréhension et l'usage du composant ImageList. (d'ailleurs, ces mêmes questions on déjà été posées et restent encore en attente ^^)
Merci bien, @+
|
|
vendredi 1 septembre 2006 à 16:50:28 |
Re : [Conseils] Faire fonctionner correctement une ImageList

Renfield
|
Initialisé => doit contenir des images Modifier ses elements => si aucun controle ne lui est associé. Ce lien vers un TreeView, un ListView, etc permettent a ces derniers d'afficher des icones.
Renfield Admin CodeS-SourceS- MVP Visual Basic
|
|
vendredi 1 septembre 2006 à 16:51:56 |
Re : [Conseils] Faire fonctionner correctement une ImageList
|
mardi 19 septembre 2006 à 01:15:13 |
Re : [Conseils] Faire fonctionner correctement une ImageList

rvblog
|
Réponse acceptée !
Salut violent_ken, salut Renfield,
juste un peu plus de détails (je m'ennuie, alors je m'occupe :)) :
Ton 1er message ""Le contrôle ImageList doit être initialisé avant utilisation" erreur 35613" n'est pas émis par le contrôle ImageList mais par le TreeView/ListView que tu utilises. Dans ce message, ImageList est le nom d'une de leurs propriétés, et le message dit que tu ne peux pas ajouter un Node/ListItem sans renseigner cette propriété avant.
Mais à quoi sert cette propriété? C'est tout simplement le fameux lien entre le contrôle ImageList et le TreeView/ListView. Elle te permet d'ajouter un Node/ListItem en donnant en argument la clé de l'image du contrôle ImageList, sans avoir à écrire un truc du genre "ImageList1.ListImage(LaCle).Picture....".
Le 2ème message "Le contrôle ImageList ne peut pas être modifié tant qu'un autre contrôle est dépendant de lui-35917" dit que tu ne peux pas modifier contrôle ImageListsans désactiver ce lien. Il existe alors 2 écoles :
- tu peux, en mode conception, ajouter des images dans le contrôle ImageList, en leur donnant une clé unique, et faire le lien avec le TreeView/ListView. La banque d'image sera toujours la même, en exécution, mais tu pourras remplir/vider/modifer le contenu du TreeView/ListView à loisir (dans la mesure des images disponibles).
- tu peux, pendant l'exécution ajouter des images à un contrôle ImageListnon lié, en leur donnant une clé unique à chacune. Une fois ceci fait, tu peux, toujours en code, faire le lien : Me.TreeView1.ImageList = Me.imglstLargeIcons, et enfin remplir/vider/modifier le contenu du TreeView/ListView à loisir (dans la mesure des images disponibles). Si tu veux à nouveau charger des images, tu dois défaire le lien avant, et veiller à n'utiliser que des nouvelles clés uniques (à moins de supprimer les images que tu veux remplacer, et ré-utiliser les clés qu'elles portaient).
J'ai suffisament parlé de clé unique d'image pour ne pas avoir à expliquer le 3ème message "Clé non unique dans la collection -35602". Dans l'objet ImageList, tout comme dans le TreeView/ListView, les propriétés, respectivement ListImage, Nodes et ListItems sont des collections, dont chaque élément ajouté se doit d'avoir une clé unique (une chaine de caractères quelconque, mais unique dans la collection), et grâce à cela, on peut écrire, par exemple : Me.TreeView1.Nodes("root").EnsureVisible
Enfin, pour tes dernières questions, je fais un package. Tout cela relève de critères de conception (ou d'architecture, de modélisation...). Le concepteur, c'est toi. Tu utilises certainement des tableaux dans ton application. Certains sont peut-être différents, mais de même contenu, d'autres centralisent peut-être des données fonctionnellement incompatibles. Comment as-tu décidé de combien de tableaux, et où les déclarer? Il s'agit là de choix réféléchis, adaptés à un contexte que tu es le seul (architecte) à maitriser, j'entends là, ton application.
Pour ma part, une banque d'image, c'est une base de données, dont chaque image est unique. Là où certains chipotent pour une String à la place d'un Variant, alors qu'on a 2Go de RAM, pour les images, c'est diablement plus important d'éviter de les dupliquer pour rien. Mais suivant le cas d'utilisation, la duplication peut être nécessaire.
Par exemple, pour gérer l'affichage du ListView, je crée une banque SmallIcons et une LargeIcons, d'autant d'image chacune, avec la même liste de clé dans chacune. Il me suffit de dire au ListView de changer de type de vue, et lui, il change de banque d'image (le code pour le remplir reste le même, puisque les clés sont identiques).
Autre exemple, pour un TreeView/ListView qui aurait pour charge de m'afficher des vignettes d'images contenues dans un répertoire, j'aurais besoin de remplir la base d'images au fur et à mesure du parcours du contenu du répertoire, faire le lien, et remplir le TreeView/ListView.
Encore un dernier, j'ai un formulaire qui reprend, avec un TreeView/ListView, les fonctionnalités d'Outlook (dossier groupes de contacts, dossier boite de reception, dossier courrier non lu...), et quand je double-clique la pièce jointe d'un message, j'ouvre un formulaire qui présente, avec un TreeView/ListView, le contenu de mes disques durs (comme l'Explorateur), pour cibler l'enregistrement du fichier. Si je mets toutes les icones dans une banque centralisée, ça marchera bien, mais quand je voudrais récupérer le formulaire type Explorateur pour l'intégrer dans une autre application, il va falloir aller récupérer les images qu'il utilise, et elles seules. S'il avait eu sa banque, ce serait plus ré-utilisable.
Maitriser n'est rien, la solution, c'est se faire plaisir. Trop de tout, sinon rien. Mais t'as déjà bien avancé.
J'espère que ces explications vont plus t'aider que t'ennuyer.
à+
rvblogn Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
|
|
mardi 19 septembre 2006 à 13:34:05 |
Re : [Conseils] Faire fonctionner correctement une ImageList

violent_ken
|
Violent Ken Salut à toi ! Vraiment, merci pour toutes ces explications si détaillées et précises. Concernant mon programme, il s'agit (entre autres) de récupérer les icones 16² de divers fichiers (processus, modules de processus...). Merci, cela permet la crétion d'un programme fonctionnel propre. Et c'est vraiment une chance pour vbfrance.com d'avoir une réponse aussi claire : j'avais déjà trouvé plusieurs topics dans le même sujet mais sans réponse convaincante, ton post aidera très certainement les personnes qui, comme moi, avaient cherché (en vain) les réponses aux questions déjà existantes. Merci encore, @+
|
|
mardi 19 septembre 2006 à 13:40:52 |
Re : [Conseils] Faire fonctionner correctement une ImageList

rvblog
|
Salut violent_ken, je t'en pries, relèves-toi :)tu t'en doutes, ça m'a fait plaisir. à+ rvblogn Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
|
|
vendredi 12 septembre 2008 à 02:53:13 |
Re : [Conseils] Faire fonctionner correctement une ImageList

jamesan
|
Merci pour cette explication très claire.
|
|
lundi 15 septembre 2008 à 14:32:07 |
Re : [Conseils] Faire fonctionner correctement une ImageList

rvblog
|
De rien, de rien, même 2 ans après ça me fait toujours plaisir!
à+
rvblog
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
|
|
Cette discussion est classée dans : message, contrôle, listview, imagelist, correctement
Répondre à ce message
Sujets en rapport avec ce message
Utilisation du contrôle ImageList associé à 1 ListView! [ par Nico ]
Lorsque je veux ajouter une ligne au ListView, je recois un msg d'erreur qui me dit:"ImageList doit être initialisé avant de pouvoir être utilisé.". J
icone dans Listview [ par steph44 ]
Je veux mettre des icones sur les lignes d'une Listview. Lorsque je veux associer le contrôle "ImageList" ( qui contient des icones ) dans le contrôle
Excel -- message d'erreur: le contrôle n'a pas été créé parce qu'il n'est pas correctement licencié [ par sophiapolas ]
Bonjour Je suis confronté à un nouveau problème sur une application excel. En effet j'ai le message "le contrôle n'a pas été créé parce qu'il n'est p
Alterner deux couleurs des lignes du contrôle Listview [ par bonagad ]
bonjour, j'aimerais alterner de deux couleurs les lignes d'un contrôle Listview lorsque je charge les données depuis une table de base de données. mer
ImageList & ListView (alignement) [ par drof ]
Bonjour a tous! J'ai un petit soucis sur Vista & 7. Mon appli comporte une ListView qui charge le contenue d'une ImageList. Jusqu'ici tous est ok..
Image dans listview [ par milo2009 ]
Salut, J'utilise, dans mon appli vb.net 2003, une ImageList contenant mes icone pour ma listview. Tout fonctionne cependant, je voudrais mettre dans
ImageList fait disparaîre mes icones!!! [ par Jonef ]
Bonjour, je développe une appli qui ouvre un ListView alimenté par une ImageList, jusqu'ici aucun souci. Mon problème est que lorsque j'ouvre une nouv
Listview avec vignettes en dehors du contrôle... [ par misterN ]
Bonjour, Les vignette de mon listview sont alignée sur une ligne et dépassent du contrôle. Même en utilisant la commande ".Arrange" lvwNone = ne réa
listview [ par steph44 ]
Je développe un nouveau programme dans lequel souhaite mettre dans images dans une listview sous forme report en utilisant le control "imagelist". J'a
ajouter un controle dans une listview [ par lilj ]
Bonjour, est-il possible d'ajouter un contrôle dans une colonne d'une listview? j'entends par contrôle une checkbox, un numericupdown ? si oui comment
Livres en rapport
|
Derniers Blogs
ASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHEASYNC/AWAIT: COMPRENDRE COMMENT CA MARCHE par fathi
Tout le monde est unanime pour dire que la programmation multi-thread et asynchrone est en train de devenir un sujet incontournable. Beaucoup de choses sont arrivées avec le framework 4 pour le code parallèle (TPL, PLinq,.) et bientôt, on va avoir l...
Cliquez pour lire la suite de l'article par fathi PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS !PAS D'INTELLITRACE SUR MON SITE WEB DANS IIS ! par Etienne Margraff
J'ai récemment eu un problème pour obtenir l'intelliTrace sur un site web dans IIS. Il n'y avait pas de message d'erreur, rien dans le journal d'évènement Windows, et après 3 appels à une voyante, 2 visites chez un marabou, j'ai failli me résign...
Cliquez pour lire la suite de l'article par Etienne Margraff OFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONSOFFICE 365 - SHAREPOINT ONLINE, QUELQUES LIMITATIONS par junarnoalg
De nombreuses entreprises font le choix de SharePoint Online, service fourni au travers de l'offre de Microsoft Office 365. S'il est vrai que ce choix apporte un grand nombre d'avantages; rapidité de mise en œuvre, disponibilité, large couvertu...
Cliquez pour lire la suite de l'article par junarnoalg PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|