(18)【View(MXML)の作成】

アドレス帳(一覧)

アドレス帳サンプルアプリの続きです。

では、今回はView及びViewHelperを作成します。

ViewStackを使用して、一覧画面と登録画面の2画面を切り替えられるようにします。


■1.一覧画面の作成
[新規]-[mxmlコンポーネント]で、一覧画面のコンポーネントを作成します。
ファイル名:AddressList.mxml
ベース:Panel
としました。

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300"
    title="アドレスリスト"
    xmlns:helper="view.*">
<helper:AddressListViewHelper id="addressListViewHelper" />
    <mx:DataGrid x="10" y="10" width="360" height="182"
        id="grdAddress"
        dataProvider="{addressListViewHelper.model.addressList}"
        initialize="addressListViewHelper.selectAll();"
        click="addressListViewHelper.onClickDataGrid();" >
        <mx:columns>
            <mx:DataGridColumn headerText="ID" dataField="addressid"/>
            <mx:DataGridColumn headerText="氏名" dataField="name"/>
            <mx:DataGridColumn headerText="住所" dataField="address"/>
            <mx:DataGridColumn headerText="電話番号" dataField="telno"/>
        </mx:columns>
    </mx:DataGrid>
    <mx:Button id="btnInsert" x="110" y="200" label="登録" click="addressListViewHelper.onInsertBtn();" />
    <mx:Button id="btnUpdate" x="166" y="200" label="修正" click="addressListViewHelper.onUpdateBtn();" />
    <mx:Button id="btnRemove" x="222" y="200" label="削除" click="addressListViewHelper.onRemoveBtn();" />
    <mx:Label  id="lblMessage" x="5" y="230" width="370" text="{addressListViewHelper.model.message}" height="20"/>
</mx:Panel>

まずは一覧画面レイアウトの完成!

■2.登録画面の作成
一覧画面と同様に登録画面コンポーネントを新規作成します。
ファイル名:AddressForm.mxml
ベース:Panel
としました。

<?xml version="1.0" encoding="utf-8"?>
<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300"
    title="アドレスフォーム"
    xmlns:helper="view.*" >
<helper:AddressFormViewHelper id="addressFormViewHelper" />
<!-- 入力チェック -->
<mx:StringValidator source="{txtName}" property="text" 
        tooShortError="必須です。" 
        tooLongError="20桁以内です。" 
        minLength="1" maxLength="20"  
        trigger="{btnRegist}" triggerEvent="click" 
        valid="addressFormViewHelper.onRegistBtn();"/>
    <mx:Form x="61.5" y="44" width="257" height="176">
        <mx:FormItem label="ID">
            <mx:Label id="lblId" text="ラベル"/>
        </mx:FormItem>
        <mx:FormItem label="氏名">
            <mx:TextInput id="txtName"/>
        </mx:FormItem>
        <mx:FormItem label="住所">
            <mx:TextInput id="txtAddress" />
        </mx:FormItem>
        <mx:FormItem label="電話番号">
            <mx:TextInput id="txtTelno"/>
        </mx:FormItem>
        <mx:FormItem label="ラベル">
            <mx:Button id="btnRegist" label="登録"/>
        </mx:FormItem>
    </mx:Form>
    <mx:Button id="btnRetn" label="一覧に戻る" click="addressFormViewHelper.onReturnBtn();" x="239.5" y="228"/>
</mx:Panel>

登録画面レイアウトの完成!


■3.メイン画面(親画面)
address.mxmlを開いてViewStackを配置します。ViewStackには先に作成した二つのコンポーネントを入れます。

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*"
    xmlns:control="control.*"
    xmlns:service="service.*">
<!-- controller,serviceの各インスタンスを取得します -->
<control:AddressController id="addressController"/>
<service:AddressService/>
    <mx:ViewStack x="10" y="10" id="viewstack1" width="655" height="415" creationPolicy="all">
        <mx:Canvas id="vsAddressList" label="vsAddressList" width="100%" height="100%">
            <ns1:AddressList x="127.5" y="50" id="addressList" >
            </ns1:AddressList>
        </mx:Canvas>
        <mx:Canvas id="vsAddressForm" label="vsAddressForm" width="100%" height="100%">
            <ns1:AddressForm x="127.5" y="50" id="addressForm">
            </ns1:AddressForm>
        </mx:Canvas>
    </mx:ViewStack>
</mx:Application>