flex弹出对话框示例程序分为两部分:Main.mxml和SimpleTitleWindowExample.mxml,其中Mail.mxml为主程序文件,SimpleTitleWindowExample.mxml为对话框文件,可以通过修改SimpleTitleWindowExample.mxml文件来修改对话框上的组件。
Main.mxml
<?xml version="1.0" encoding="utf-8"?>
<!-- Main application to demonstrate TitleWindow layout container. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" fontSize="12" width="1024" height="768" layout="absolute">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
private function showAlertWindow():void{
var myPanel:SimpleTitleWindowExample = SimpleTitleWindowExample(PopUpManager.createPopUp(this, SimpleTit ......
1. 最简单的警告窗口
你需要先导入Alert类: import mx.controls.Alert;
然后在想要弹出警告的时候使用:
Alert.show(“你确定要退出系统吗?”,“确认”,Alert.YES|Alert.NO,null,logout)
参数说明:第一个参数是要显示的文本,第二个参数是窗口的标题,这两个参数是最经常用的。第三个参数是按钮,默认是两个:YEW 和 NO,当然你也可以自定义,比如Alert.CANCEL,第四个参数是父窗口,默认为null。第五个参数是窗口关闭后调用的函数名,如果你想要在点击确定之后触发什么事件,就需要定义这个参数。这里我要调用logout,请注意,不要在这里写logout()。(没有括号)logout 函数如下:
private function logout(event:CloseEvent):void
{
if(event.detail == Alert.YES)
{
// 具体操作
}
}
因为这个函数是触发的,所以参数是一个CloseEvent 。“event.detail == Alert.YES” 这行代码判断点击的是不是确定按钮。CloseEvent 中的 detail 属性专门判断点 ......
1.如果使用MVC框架,相信这并不是一个问题。而如果没有使用的话,可以用类似的方法设置一个单例,子窗口和父窗口通过这个单例来交互消息,如果需要解耦,请发送自定义事件。总之,只要按照MVC思路来做就可以了。
2.类似JS,在子窗口的构造函数里增加一个参数,将父窗口传参进去。MXML没有构造函数,用一个属性来保存父窗口引用也可以。
3.无论是createPopUp还是addPopUp,他们都有一个返回值,得到子窗口的实例。可以对这个实例监听remove事件,并在这个事件中直接读取子窗口需要返回给父窗口的属性。(记得要将这个事件最终移除)
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Panel x="94" y="178" width="503" height="347" layout="absolute">
<mx:TextInput x="134" y="64" id="tit_usr" text="username"/>
<mx:TextInput x="134" y="125" id="tit_psw" text="password"/>
<mx:Button x="171" y="209" label="Submit" click="mytw_click()"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import mx.containers.TitleWindow ......
package event
{
import flash.events.Event;
public class CustomEvent extends Event
{
public var evObject:Object;
public function CustomEvent(obj:Object, type:String)
{
super(type);
evObject = obj;
}
override public function clone():Event
{
return new CustomEvent(evObject, type);
}
}
}
这个就是一个自定义控件,它和传统的区别在于可以自己传送一个参数过去,比如两个界面的参数传递。
比如这样的一个例子,当datagrid ......
2种方法,
一,利用js读取黏贴版:
var content = clipboardData.getData("Text");
document.getElementById("${application}").getClipboardData(content);
二,直接复制到datagrid
在DataGrid中,当按下Ctrl键时,我们创建一个隐藏的文本(TextField)组件,并将焦点定位给它,这样,我们就可以接受任何通过Ctrl+V粘贴过来的数据。相应的我们也将DataGrid选择行数据以TSV格式拷贝到TextField组件中,并且将所有的文本选择,这样我们使用Ctrl+C操作就可以复制当前行所有数据了。
监听隐藏文件组件的textInput事件。如果有任何数据被粘贴的话,那么在这里数据将被解析,并插入到DataGrid中。
当Ctrl键释放后,移除隐藏的文本组件
看例子代码:
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<!--[CDATA[
import flash.events.KeyboardEvent;
private function dataGridKeyDownHandler(event:KeyboardEvent):void
{
if (event.ctrlKey && !dataGrid.getChildByName("clipboardProxy"))
{
// Add an invisible Te ......
Flex Project Nature/Add Flex Project Nature 执行后出现以下错误,
Severity and Description Path Resource Location Creation Time Id
Server SDK: Directory does not contain a Flex SDK.
需要在工程属性的Flex compiler 里设置Flex SDK.
......