タブボックス
いくつかの表示をタブで切り替えながら表示する「タブパネル」は、多くのプラットフォームで採用されています。これを実現するのが、<tabbox>というタグです。これは、タブの情報とそれぞれのタブに表示するパネルを設定することで、自動的に切り替えタブを持つパネルを作成できます。
<?page title="Index Page"?> <window title="Welcome to ZK!" border="normal" width="300px"> <label>※TABBOX</label> <separator /> <tabbox width="250px" height="100px"> <tabs> <tab label="最初"/> <tab label="真ん中"/> <tab label="最後"/> </tabs> <tabpanels> <tabpanel> <label>最初のタブです。</label> </tabpanel> <tabpanel> <label>真ん中のタブです。</label> </tabpanel> <tabpanel> <label>最後のタブです。</label> </tabpanel> </tabpanels> </tabbox> <separator /><separator /> </window>
ここでは3つのタブを用意してみました。タブをクリックすれば、表示が切り替わります。タグを記述するだけなので、ノンプログラミングで作成できることが分かるでしょう。
<tabbox>は、内部に<tabs>と<tabpanels>という2つのタグを持っています。<tabs>は、タブの設定をまとめるもので、この中に<tab>タグとして表示するタブの情報を設定します。タブをクリックしたときに表示される内容を用意するのが<tabpanels>で、この中に<tabpanel>というタグを使って各タブ用の表示を作成します。<tabpanel>はコンテナであり、この中に自由にコンポーネントを配置できます。
moldによるアコーディオンボックス
タブパネルと似たような役割を果たすもので、最近、Webなどで広く使われるようになったインターフェースに「アコーディオンパネル」があります。タイトルをクリックすると、アコーディオンのようにその項目の表示が広がって表示される、というものです。
ZKには、アコーディオンパネルのための専用コンポーネントは用意されていません。しかし、実はタブボックスを使ってアコーディオンパネルを作ることができます。
<tabbox width="250px" height="200px" mold="accordion">
先ほどの<tabbox>のタグを上のように修正してみてください。タブパネルの表示が、そのままアコーディオンパネルに変わります。ここでは「mold」という属性に"accordion"を指定しています。これだけでアコーディオンパネルを作ることができます。
アコーディオンパネルとタブパネルは、「いくつかのタブがあり、タブをクリックして選択すると、そのタブの内容が表示される」という機能自体はまったく同じです。そのため、これは別のコンポーネントというより、「同じコンポーネントで、表し方が違っているだけ」と考えた方が自然でしょう。moldは、こうした「あるコンポーネントの、異なる見せ方」を示すためのものです。
2種類のリストボックス
アコーディオンパネル以外にも、moldを利用するコンポーネントはあります。例えば、一覧リストを表示するための<listbox>というコンポーネントがありますが、これはmoldによって、HTMLのリストとして表現させることもできるようになります。
<?page title="Index Page"?> <window title="Welcome to ZK!" border="normal" width="300px"> <label>※TABBOX</label> <separator /> <listbox width="250px" mold="default"> <listitem label="最初"/> <listitem label="真ん中"/> <listitem label="最後"/> </listbox> <separator /> <listbox width="250px" mold="select"> <listitem label="最初"/> <listitem label="真ん中"/> <listitem label="最後"/> </listbox> <separator /> </window>
これは、同じ<listbox>を、片方はmold="default"、もう一方はmold="select"に設定したものです。前者は後述する<grid>によるテーブル表示と同じような形でリスト表示され、後者はHTMLの<select>タグによるコンボボックスとして表示されます。moldによって、表現の仕方が変わっていることが分かるでしょう。
<listbox>は、表示する項目を<listitem>というタグとして内部に用意します。これで、いくつかの選択項目を用意して選ぶインターフェイスが作成できます。多数の項目を選択するためのものとして覚えておきたいコンポーネントです。