このページの本文へ

入門Ext JS:デスクトップ風メニューバーを表示しよう (2/5)

2009年08月11日 15時48分更新

文●古籏一浩

  • この記事をはてなブックマークに追加
本文印刷

メニュー選択時の処理を記述する

 サンプル01でとりあえずメニューバーは表示されましたが、項目を選択しても何も変化がありません。これではメニューとは言えないので、項目が選択されたら何らかの処理をするようにします。

 メニュー項目はmenu配列内に定義されており、サンプル01では{ text : 項目の文字 }として項目名を記述しました。ここに新たにhandler(ハンドラ―)を追加し、メニュー項目が選択された時に呼び出す関数を指定します。ここでは、menuProcという名前の関数を呼び出すことにします。


menu : [
        { text : '通常の地図',    handler : menuProc },
        { text : '航空写真',            handler : menuProc },
        { text : '通常+航空写真',  handler : menuProc },
        { text : '地形',                handler : menuProc }
]


 項目が選択されてmenuProc関数が呼び出されたら、項目ごとに何らかの処理を実行する必要があります。

 Ext JSでは、項目選択時に呼び出される関数には、メニュー項目のオブジェクトがパラメーターとして渡されます。オブジェクトにはメニュー項目のプロパティが格納されています。たとえば以下のようにすると、選択したメニューの項目名がアラートダイアログに表示されます。


function menuProc(obj){
    Ext.Msg.alert('項目の文字', obj.text);
}


 ここまでの処理をまとめたのが サンプル02です。

メニューバーのメニュー項目をクリックすると、選択した項目の文字が表示されます


サンプル02のソースコード


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <title>Sample</title>
        <link rel="stylesheet" href="resources/css/ext-all.css" type="text/css" media="all">
        <link rel="stylesheet" href="css/main.css" type="text/css" media="all">
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
        <script type="text/javascript" src="js/ext-base.js"></script>
        <script type="text/javascript" src="js/ext-all.js"></script>
        <script type="text/javascript"><!--
            Ext.BLANK_IMAGE_URL = 'resources/images/default/s.gif';
            Ext.onReady(function(){
                var win = new Ext.Window({
                    title: 'Ext JSメニューサンプル',
                    width: 520,
                    height: 480,
                    layout: 'fit',
                    items: {
                            html : 'Ext JSを使ってウィンドウとメニューを表示します。'
                    },
                    tbar : [
                            { xtype : 'tbbutton',
                                text : '地図の種類',
                                menu : [
                                        { text : '通常の地図',    handler : menuProc },
                                        { text : '航空写真',            handler : menuProc },
                                        { text : '通常+航空写真',  handler : menuProc },
                                        { text : '地形',                handler : menuProc }
                                ]
                            }
                    ]
                });
                win.show();
            });
            function menuProc(obj){
                Ext.Msg.alert('項目の文字', obj.text);
            }
        // --></script>
    </head>
    <body>
        <h1>Ext JSウィンドウ+メニューサンプル</h1>
        <p>ページが読み込まれるとウィンドウ内にメニューが表示されます。</p>
    </body>
</html>


この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています