分类
Flash

ILOG DiagramEditor的一个Bug

ILOG很强大,不过我最近发觉它的DiagramEditor有一个Bug。正常状态前面添加的节点始终位于后面添加的节点之上,这当然没问题。但在选择编辑状态下当前选择的节点应该位于其它节点的上面,不然当前节点有可能会被遮挡,不方便查看编辑。ILOG安装目录下的所有与DiagramEditor相关的实例都存在这个问题,可能官方不把这视为一个Bug吧。

分类
Flash

Flex弹出菜单与工具提示重叠

最近项目中遇到一个问题:按钮的工具提示与弹出菜单重叠。原来工具提示由ToolTipManager管理,而弹出菜单由PopUpManager管理,它们的层次都是由SystemManager管理。默认情况下,工具提示层会比弹出菜单层高,这就会导致工具提示总在弹出菜单的上面。可使用PopUpManager的bringToFront方法来交换弹出菜单与工具提示的层次从而避免重叠。

分类
Flash

缺失的Flex Spark组件

在Flex SDK中,有些Flex MX组件找不到相对应的Flex Spark组件。有个罗马尼亚的牛人分享了他开发的Spark组件,包括Alert、ColorPicker、HDivider、VDivider、Menu、 MenuBar和ProgressBar。详见:https://github.com/badu/SparkComponents

分类
Flash

让Spark DataGrid支持拖放

List、Tree和 DataGrid等MX list-based控件提供了对拖放操作的内置支持,而在Spark组件中,目前只有Spark List控件还提供这一特性,Spark DataGrid不再基于ListBased而是基于SkinnableContainerBase,虽然方便了自定义外观,然而其拖放功能却大大削弱了。不过我们还是可以定义GridEvent事件处理函数,为Spark DataGrid手动添加拖放支持的。

什么是内置支持?在MX list-based控件中,通过设置dragEnabled=true可以将项目拖出此控件并放到其它控件上,设置dropEnabled=true可以将所拖动的项目放到目标控件上,设置dragMoveEnabled=true可以在拖放操作过程中移动控件中的项目,设置draggableColumns=true允许通过拖动标题单元格重排列。内置支持很方便地实现拖放操作,然而Spark DataGrid却不支持这些特性。下面我们就通过自定义Spark DataGrid,让其实现类似功能。

分类
Flash

自定义Spark FormItem外观

Spark Form容器的一个新特性就是支持Layout,因此我们很容易实现整个Form的水平布局,这是MX Form容器无法实现的。但在这种布局下,如果发生验证错误,子容器往往会超出整个表单。

默认下,如果发生验证错误,Flex会在出现问题的组件周围绘制红色线框,当用户移动到其上方时,会显示错误信息。这对MX组件及Spark组件都适用,但有一个例外,Spark Form容器的错误信息会出现在Form容器帮助区域,而不必移到组件的指针。虽然这种体验更好,但如果Spark Form容器的宽度固定,错误字符串又很长的话,会导致布局混乱。怎么解决这一问题呢?