如何在dolphin smalltalk treeview中使用自定义图标?

时间:2016-07-25 18:55:58

标签: smalltalk dolphin-smalltalk

在Dolphin smalltalk树形视图中,我想使用自定义图标,具体取决于所显示项目的状态,(不同状态,不同图标) 我怎么能这样做?

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

我可以将此类的实例添加到树视图中,并查看连接的名称。 但是如何展示我的图标?

我尝试使用以下表达式[:obj |来替换我的演示者视图的getImageBlock obj icon]但它不起作用。 (似乎没有发生任何事情)。

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

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

它有什么问题? 最好的祝福 莫里吉奥

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

Wonderful Dolphin Smalltalk!

我有两个问题

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

这是解决方案:

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

所以我需要的唯一方法就是在我的连接类中使用#icon 我实现如下:

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

在类本身中,通过评估createIconMethod在图像中导入两个图标, 正如博客文章“美少生兽”中所解释的那样。

所以我的问题已经解决了。

感谢所有人。 莫里吉奥。