天天看點

Ext.widgets-Button,SplitButton,CycleButton

Ext.Action

action實作一個脫離了容器的事件,所有它可以在多個容器之間共享,不過好象隻有Ext.Toolbar, Ext.Button 和 Ext.menu.Menu支援action接口:),因為容器要實作下面所有的方法setText(string), setIconCls(string), setDisabled(boolean), setVisible(boolean) and setHandler(function)

方法:

Action( Object config )

構造,config定義為{

 disabled : Boolean,//禁止使用

 handler : Function,//事件句柄

 hidden : Boolean,//隐藏

 iconCls : String,//樣式類

 scope : Object, //handler将在哪個範圍内執行

 text : String //文本

}

disable() : void

enable() : void

setDisabled( Boolean disabled ) : void

禁止/允許

each( Function fn, Object scope ) : void

為每個實作了此action的componet應用fn

hide() : void

show() : void

setHidden( Boolean hidden ) : void

顯示/隐藏

setHandler( Function fn, Object scope ) : void

setIconClass( String cls ) : void

setText( String text ) : void

重新設定config配置的屬性值

示例:

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

var action = new Ext.Action(...{

Ext.widgets-Button,SplitButton,CycleButton

    text: 'Do something',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    handler: function()...{

Ext.widgets-Button,SplitButton,CycleButton

        Ext.Msg.alert('Click', 'You did something.');

Ext.widgets-Button,SplitButton,CycleButton

    },

Ext.widgets-Button,SplitButton,CycleButton

    iconCls: 'do-something'

Ext.widgets-Button,SplitButton,CycleButton

});

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

var panel = new Ext.Panel(...{

Ext.widgets-Button,SplitButton,CycleButton

    title: 'Actions',

Ext.widgets-Button,SplitButton,CycleButton

    width:500,

Ext.widgets-Button,SplitButton,CycleButton

    height:300,

Ext.widgets-Button,SplitButton,CycleButton

    tbar: [

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    //将action做為一個菜單按鈕添加到工具欄

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

        action, ...{

Ext.widgets-Button,SplitButton,CycleButton

            text: 'Action Menu',

Ext.widgets-Button,SplitButton,CycleButton

        //将action做為文本選擇項添加到menu

Ext.widgets-Button,SplitButton,CycleButton

            menu: [action]

Ext.widgets-Button,SplitButton,CycleButton

        }

Ext.widgets-Button,SplitButton,CycleButton

    ],

Ext.widgets-Button,SplitButton,CycleButton

    items: [

Ext.widgets-Button,SplitButton,CycleButton

    //由action構造button,添加到panel

Ext.widgets-Button,SplitButton,CycleButton

        new Ext.Button(action)

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    renderTo: Ext.getBody()

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

// 如果這兒setText.當然button/menu/toolbar中的action文本都變了

Ext.widgets-Button,SplitButton,CycleButton

action.setText('Something else');

Ext.Button

簡單的按鈕類

公有屬性:

disabled : Boolean

允許?

hidden : Boolean

隐藏?

pressed : Boolean

按下?

方法 [繼承來的忽略]

Button( Object config )

構造可選config{

 clickEvent : String,    //handler響應的事件,預設是click

 cls : String,        //樣式

 disabled : Boolean,    //禁止

 enableToggle : Boolean,//允許在按下沒按下之間切換,添加移除x-btn-pressed樣式類

 handleMouseEvents : Boolean,//允許使用移入移出按下事件,預設是真

 handler : Function,    //響應clickEvent定義的事件

 hidden : Boolean,    //隐藏

 icon : String,        //圖示檔案位址,如果修改x-btn-text-icon樣式類可以重定義預設icon

 iconCls : String,    //和icon功能類似,但使用設定了background-image屬性的樣式定義

 menu : Mixed        //如果需要,可以為按鈕定義菜單

 menuAlign : String,    //菜單對齊方式,預設值是tl-bl

 minWidth : Number,    //最小寬度

 pressed : Boolean,    //是否按下

 repeat : Boolean/Object,//是否需要重複定義滑鼠按下事件,也可以是一個Ext.util.ClickRepeater配置對象

 scope : Object,    //handler事件的範圍

 tabIndex : Number,    //table鍵順序

 text : String,        //文本

 toggleGroup : String,    //如果定義一組enableToggle為真且toggleGroup值相同的button對象,這些對象同一時間内将隻有一個處于按下狀态

 tooltip : String/Object, //提示資訊,可以是一個字元串或QuickTips的配置對象

 tooltipType : String,    //可選值"qtip"(預設)或"title"之一

 type : String        //可選值"submit"/"reset"/"button"(預設)之一

focus() : void

//得到焦點

getText() : String

//取得文本

hasVisibleMenu() : Boolean

//有可視的菜單?

hideMenu() : void

//隐藏菜單

initComponent() : void

//初始化容器

setHandler( Function handler, [Object scope] ) : void

//設定事件處理方法

//設定文本

showMenu() : void

//顯示菜單

toggle( [Boolean state] ) : void

//切換按下狀态

Ext.widgets-Button,SplitButton,CycleButton

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Ext.widgets-Button,SplitButton,CycleButton

<html xmlns="http://www.w3.org/1999/xhtml" >

Ext.widgets-Button,SplitButton,CycleButton

<head>

Ext.widgets-Button,SplitButton,CycleButton

    <title>Untitled Page</title>

Ext.widgets-Button,SplitButton,CycleButton

     <link rel="stylesheet" rev="stylesheet" href="/css/ext-all.css" type="text/css" media="all" />

Ext.widgets-Button,SplitButton,CycleButton

     <script type="text/javascript" src="/scripts/adapter/ext/ext-base.js"></script>

Ext.widgets-Button,SplitButton,CycleButton

     <script type="text/javascript" src="/scripts/ext-all.js"></script>

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     <style type="text/css">...

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     /**//*--加入樣式背景好直覺一點*/

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     .x-btn-pressed button{...}{

Ext.widgets-Button,SplitButton,CycleButton

        background-color:red;

Ext.widgets-Button,SplitButton,CycleButton

     }

Ext.widgets-Button,SplitButton,CycleButton

     </style>

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     <script type="text/javascript">...

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     Ext.onReady(function()...{

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

//有菜單的按鈕

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    function onItemCheck(item)...{

Ext.widgets-Button,SplitButton,CycleButton

        Ext.MessageBox.alert("點選事件",String.format("您選擇了{0}",item.text));

Ext.widgets-Button,SplitButton,CycleButton

    }

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

var menu = new Ext.menu.Menu(...{

Ext.widgets-Button,SplitButton,CycleButton

    id: 'mainMenu',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

        ...{

Ext.widgets-Button,SplitButton,CycleButton

            text: 'menu1',

Ext.widgets-Button,SplitButton,CycleButton

            handler: onItemCheck

Ext.widgets-Button,SplitButton,CycleButton

        },

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

            text: 'menu2',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

        }]

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

var button=new Ext.Button(...{

Ext.widgets-Button,SplitButton,CycleButton

    renderTo:Ext.getBody(),

Ext.widgets-Button,SplitButton,CycleButton

    text:'按我',

Ext.widgets-Button,SplitButton,CycleButton

    menu:'mainMenu'

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

//有狀态的探鈕

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

new Ext.Button(...{

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    text:'toggle button ',

Ext.widgets-Button,SplitButton,CycleButton

    enableToggle:true

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

//分組的有狀态按鈕

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    text:'toggle button 1',

Ext.widgets-Button,SplitButton,CycleButton

    enableToggle:true,

Ext.widgets-Button,SplitButton,CycleButton

    toggleGroup:'toggleGroup',

Ext.widgets-Button,SplitButton,CycleButton

    handler: onItemCheck

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    text:'toggle button 2',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

     });

Ext.widgets-Button,SplitButton,CycleButton

     </script>

Ext.widgets-Button,SplitButton,CycleButton

</head>

Ext.widgets-Button,SplitButton,CycleButton

<body>

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

</body>

Ext.widgets-Button,SplitButton,CycleButton

</html>

Ext.SplitButton

上例中的帶菜單按鈕還不專業,于是有了Ext.SplitButton,專門為帶有下拉菜單的按鈕設計的

SplitButton( Object config )

構造,config中加入了{

 arrowHandler : Function,

 arrowTooltip : String

setArrowHandler( Function handler, [Object scope] ) : void

設定下拉箭頭的點選事件

事件:

arrowclick : ( MenuButton this, EventObject e )

使用示例:

比如上例中的菜單按鈕可以改為

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

function onItemCheck(item)...{

Ext.widgets-Button,SplitButton,CycleButton

Ext.MessageBox.alert("點選事件",String.format("您選擇了{0}",item.text));

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

function showMenu(obj)...{

Ext.widgets-Button,SplitButton,CycleButton

Ext.MessageBox.alert("點選下拉",obj.getXTypes() )

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

Ext.QuickTips.init();

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

var button=new Ext.SplitButton(...{

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    arrowHandler : showMenu,

Ext.widgets-Button,SplitButton,CycleButton

    handler: onItemCheck,

Ext.widgets-Button,SplitButton,CycleButton

    arrowTooltip : "更多",

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

Ext.CycleButton

這是一個SplitButton的實用子類,用于在多個item之間切換狀态,當然它也會帶有menu可供選擇,也可以直接點選按鍵在item之間切換

 CycleButton( Object config )

 構造,config新增配置項{

changeHandler : Function,    //狀态切換時的處理事件

items : Array, //items應該是menu item的數組

prependText : String,    //前導text

showText : Boolean,    //追加item的text到按鈕顯示

getActiveItem() : Ext.menu.CheckItem

setActiveItem( Ext.menu.CheckItem item, Boolean suppressEvent ) : void

得到/設定活動選項

toggleSelected() : void

切換選擇項,相當于點選一次按鈕

示例

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

new Ext.CycleButton(...{

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    showText: true,

Ext.widgets-Button,SplitButton,CycleButton

    prependText: 'View as ',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    items: [...{

Ext.widgets-Button,SplitButton,CycleButton

        text:'text only',

Ext.widgets-Button,SplitButton,CycleButton

        iconCls:'view-text',

Ext.widgets-Button,SplitButton,CycleButton

        checked:true

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    },...{

Ext.widgets-Button,SplitButton,CycleButton

        text:'HTML',

Ext.widgets-Button,SplitButton,CycleButton

        iconCls:'view-html'

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    ...{

Ext.widgets-Button,SplitButton,CycleButton

        text:'XML',

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

    changeHandler:function(btn, item)...{

Ext.widgets-Button,SplitButton,CycleButton

        Ext.MessageBox.alert('Change View', item.text);

Ext.widgets-Button,SplitButton,CycleButton
Ext.widgets-Button,SplitButton,CycleButton

新增事件

change : ( Ext.CycleButton this, Ext.menu.CheckItem item )

Button還有兩個子類,Ext.Toolbar.button,Ext.Toolbar.SplitButton,用法和Ext.buttom/Ext.SplitButton一樣,隻是它們僅适用于工具欄

繼續閱讀