2016-07-25 3 views
1

Dans une arborescence Dolphin smalltalk, je voudrais utiliser une icône personnalisée, en fonction de l'état de l'élément affiché, (état différent, icône différente) Comment puis-je faire cela?Comment utiliser une icône personnalisée dans un treetalk dolphin smalltalk?

Je n'arrive pas vraiment à comprendre comment utiliser une icône «mon». J'ai créé une classe "connection", avec une variable d'instance "connected" et deux méthodes de classe "connectedIcon et unconnectedIcon qui retourne des images d'icônes Puis une instance" icone "qui renvoie l'une ou l'autre image basée sur le état de connexion.

Je peux ajouter des instances de cette classe à une vue arborescente et voir le nom des connexions. Mais comment montrer mes icônes?

j'ai essayé de le substituer la getImageBlock de mon point de vue du présentateur avec le expression suivante [: obj | obj icon] mais cela ne fonctionne pas (rien ne semble se produire)

cela est fait dans mon présentateur initialize:

initialiser super initialiser. Vue treePresenter getImageBlock: [: obj | icône d'obj]

quel est le problème avec elle? meilleures salutations Maurizio

Répondre

3

Lorsque vous modifiez un TreeView, l'une des propriétés est getImageBlock. Par défaut ce n'est pas vraiment un bloc mais un autre objet qui comprend le message # 'value:' (la classe IconicListAbstract). Vous pouvez remplacer cette propriété par un bloc de code (ou un autre objet qui comprend # 'valeur:') et répondre à l'image que vous voulez afficher.

+0

Merci, j'ai trouvé aussi utile les tutoriels du blog Dolphin "using icons" et "Beauty with less Beast". Je vais expérimenter ... –

+0

Je ne peux pas vraiment comprendre comment utiliser une icône "mon". J'ai créé une classe "connection", avec une variable d'instance "connected" –

+0

On dirait que le bloc défini dans getImageBlock devrait renvoyer un index numérique: (que je suppose être l'index de mon image) si, par exemple , J'ai mis le bloc à [: obj | 1] tous les éléments de la liste affichent une icône interne si je mets le bloc à [: obj | 2] tous les éléments de la liste affichent une autre icône, et ainsi de suite. La question est: où devrais-je mettre mes icônes, et comment obtenir l'index associé? Btw, je définis le bloc dans la méthode createSchematicWiring de mon présentateur. Est-ce le bon endroit ? Maurizio –

1

Dans Microsoft Windows, les icônes sont généralement stockées dans une DLL. Vous devriez être capable d'utiliser un explorateur d'icônes ou un outil d'édition pour voir les icônes dans une DLL. Par exemple, obtenez IconExplorer de http://www.mitec.cz/iconex.html et essayez d'ouvrir DolphinDR7.dll. Est-ce que les icônes et les chiffres correspondent à ce que vous voyez lorsque vous renvoyez un numéro dans votre application?

Pour déterminer (ou remplacer) la bibliothèque de ressources utilisée, consultez SessionManager >> # 'defaultResLibPath'.

Généralement, getImageBlock est défini à l'aide de l'éditeur de propriétés dans l'éditeur graphique, mais la définition du code peut également fonctionner.

0

Wonderful Dolphin Smalltalk!

J'ai eu deux problèmes

1) comment et où modifier la méthode getImageBlock de mon Treepresenter. 2) où placer les icônes et comment obtenir l'imageindex de chaque icône.

C'est la solution:

1), il est pas nécessaire. L'arborescence envoie un message #iconImageIndex "à mon modèle ceci est géré par la méthode par défaut (dans la classe Object) qui envoie à mon objet le message #icon et au résultat de ce message (une icône) le message # iconIndex Ce message est compris à partir de l'icône qui répond avec son propre iconIndex.

La seule méthode que je dois impement est #icon dans ma classe Connexion que je mis en œuvre comme suit:

icône ouvert ifTrue: [^ connectedIcon de connexion] ifFalse: [^ Connexion unconnectedIcon]

Dans la classe elle-même, les deux icônes sont importées dans l'image en évaluant createIconMethod, comme expliqué dans l'article de blog 'Beauty with less Beast'.

Donc mes problèmes sont résolus.

Merci à tous. Maurizio.