在Dolphin smalltalk树形视图中,我想使用自定义图标,具体取决于所显示项目的状态,(不同状态,不同图标) 我怎么能这样做?
我真的不明白如何使用" my"图标。 我创建了一个类" connection",一个实例变量" connected" 和两个类方法" connectedIcon和unconnectedIcon返回图标图像。 然后是一个实例函数" icon"根据连接状态返回一个或另一个图像。
我可以将此类的实例添加到树视图中,并查看连接的名称。 但是如何展示我的图标?
我尝试使用以下表达式[:obj |来替换我的演示者视图的getImageBlock obj icon]但它不起作用。 (似乎没有发生任何事情)。
这是在我的演示者初始化中完成的:
初始化 超级初始化。 treePresenter视图getImageBlock:[:obj | obj icon]
它有什么问题? 最好的祝福 莫里吉奥
答案 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在图像中导入两个图标, 正如博客文章“美少生兽”中所解释的那样。
所以我的问题已经解决了。
感谢所有人。 莫里吉奥。