2016-07-25 42 views
1

在一个Dolphin Smalltalk树视图中,我想使用自定义图标,具体取决于显示的项目状态(不同状态,不同图标) 我该怎么做?如何在dolphin smalltalk treeview中使用自定义图标?

我真的不明白如何使用“我的”图标。 我创建了一个类“连接”,实例变量“connected” 和两个类方法“connectedIcon和unconnectedIcon返回图标图像。 然后,一个实例函数”图标“,返回一个或另一个图像基于连接状态。

我这个类的实例添加到树视图,查看连接的名称。 但如何显示我的图标?

我试图sustitute我与演示者视图的getImageBlock下面的表达式[:obj | obj icon]但它不起作用 (似乎没有任何事情发生)

这是在我的演示者初始化:

初始化 超初始化。 treePresenter视图getImageBlock:[:obj | obj icon]

它有什么问题? 最好的问候 Maurizio

回答

3

当你编辑一个TreeView时,其中一个属性是getImageBlock。默认情况下,它不是一个块,而是另一个理解消息#'value:'(类IconicListAbstract)的对象。你可以用一个代码块(或者其他理解#'value:'的对象)代替这个属性并回答你想要显示的图像。

+0

谢谢,我发现海豚博客教程“使用图标”和“美少带兽”也很有用。我要去试验...... –

+0

我真的不明白如何使用“我的”图标。 我创建了一个类“连接”,实例变量“connected” –

+0

似乎getImageBlock中定义的块应该返回一个数字索引: (我认为必须是我的图像的索引) 例如,如果,我将该块设置为 [:obj | 1]如果我将块设置为[:obj | 1],则列表中的所有元素都会显示一个内部图标 。 2]列表中的所有元素都显示另一个图标,依此类推。 问题是:我应该在哪里放置图标,以及如何获取关联的索引? 顺便说一下,我在演示者的createSchematicWiring方法中设置了该块。这是正确的地方吗? Maurizio –

1

在Microsoft Windows中,图标通常存储在DLL中。您应该能够使用图标浏览器或编辑工具来查看dll中的图标。例如,从http://www.mitec.cz/iconex.html获取IconExplorer并尝试打开DolphinDR7.dll。图标和数字是否与您在应用程序中返回数字时看到的内容相符?

要确定(或覆盖)使用的资源库,请参阅SessionManager >>#'defaultResLibPath'。

通常,使用GUI编辑器中的属性编辑器设置getImageBlock,但通过代码设置它也可以。

0

Wonderful Dolphin Smalltalk!

我有两个问题

1)如何以及在哪里修改我Treepresenter的getImageBlock方法。 2)在哪里放置图标和如何获取每个图标的图像索引。

这是解决方案:

1)不需要。 树形视图向我的模型 发送#iconImageIndex消息,这是通过发送给我的对象消息#icon 和该消息(图标)消息的结果的默认方法(在对象类中)处理的消息# iconIndex。 通过使用自己的iconIndex回答的图标可以理解此消息。

所以我需要impement的唯一方法是#icon在我的课连接 我实现如下:

图标 打开ifTrue:[^连接connectedIcon] ifFalse:[^连接unconnectedIcon]

在课程本身中,通过评估createIconMethod, ,在博客文章“Beauty with less Beast”中解释了这两个图标。

所以我的问题解决了。

感谢所有。 Maurizio。

相关问题