以下只是简单的给出个例子,如果有不合理的地方,请及时指出。
在BMIDE中设置通过属性值变换Item显示的图标:这里的图标变换,其实是用一个图标覆盖在原来的图标之上。
1.在BMIDE创建一个业务对象C5MyItem.
2.将图标文件加入到icon文件夹下。选中iconsà右键à添加业务对象图标。
3.添加“属性渲染器”。在“扩展”à“属性渲染器”à“新建属性渲染器…”
4.输入渲染器名称,渲染器定义的内容,点击完成。渲染器定义的内容决定业务对象的图标变换规则。
以上面例子为例,解释xml含义,解释不合理的地方请及时指出:
primaryIcon 节点:指定的是主图标或叫原始图标,由参数source来指定图标文件,可以指定为之前添加到icons文件下的图标文件。
overlayIcon 节点:指定的是覆盖图标,source参数指定为一个属性,如“object_desc”,然后通过mapName去找到propertyMap节点,然后通过propertyMap节点下的key和value指定覆盖图标。
propertyMap节点:可以理解为存放覆盖图标的容器,通过key和value来指定图标。
Key: 指定object_desc的属性值,不能为中文。
Value:指定的是在icons下的图标文件。
上面的xml的含义就是:设置主图标为C5_orange.png
,覆盖图标通过object_desc属性的值来指定,当对象的object_desc属性值为“1234”时,使用C5_blue.png
覆盖在原图标之上。当对象的object_desc属性值为“4321”时,使用C5_black.png
覆盖在原图标之上。
5. 将属性渲染器附加到C5MyItem,在以下的第5步选择属性的时候必须选择object_string。
6. 保存,部署BMIDE。
7. 效果如下:
原始图标C5_orange.png
将object_desc属性值设置为:1234,C5_blue.png
覆盖在原图标之上。
将object_desc属性值设置为:4321,显示C5_black.png
覆盖在原图标之上
以下提供几个渲染器的例子供参考:
1).根据一个属性的不同的值来显示不同的图标。
<propertyMap name="ObjectDescMap"> <item key="ControlPoint" value="C5PCCtrl.png"/> <item key=" " value="C5PCActivity.png"/> </propertyMap> <primaryIcon source="C5PCActivity.png"> <overlayIcon source="object_desc" mapName="ObjectDescMap"/> </primaryIcon>
2)只有当current_desc属性值等于overlay时,再根据checked_out属性的不同的值来显示不同的图标。
<propertyMap name="CheckedOutMap"> <item key="Y" value="A5_small_green_dot.png"/> <item key="N" value="A5_small_red_dot.png"/> <item key=" " value="A5_small_blue_dot.png" /> </propertyMap> <primaryIcon source="A5_draw.png"/> <overlayIcon source="checked_out" mapName="CheckedOutMap" > <visibleWhen> <with variable="current_desc"> <equals value="overlay" /> </with> </visibleWhen> </overlayIcon>
3)当object_desc属性值等于ControlPoint时,覆盖图标。
<primaryIcon source="C5PCActivity.png" > <overlayIcon source="C5PCCtrl.png"> <visibleWhen> <with variable="object_desc"> <equals value="ControlPoint" /> </with> </visibleWhen> </overlayIcon> </primaryIcon>
领取专属 10元无门槛券
私享最新 技术干货