Templates

PRADOは、コンポーネントをページやアプリケーションへ連動させるためにコンフィグを使用します。コンフィグには、アプリケーションコンフィグ、ページコンフィグ、テンプレートがあります。 デフォルト値が使用されているなら、アプリケーションとページコンフィグはオプションです。 テンプレートはページとテンプレートコントロールによって主に使用されます。 それらもまた、オプションです。

テンプレート Part Ⅰ

テンプレートは、コントロールの公開用のレイアウトを特定するために使われます。テンプレートは静的なテキスト、コンポーネント、もしくは、関連のコントロールの最終的な公開へ貢献するコントロールを含むことができます。初期設定においては、TTemplateControlもしくは、そのサブクラスのインスタンスが自動的に読み込まれ、コントロールクラス名と同じ名前を持つファイルによってテンプレートをインスタンス化することになります。ページテンプレートに関しては、ファイル名接尾語は.pageである必要があります。(初期設定以外の正規なテンプレートコントロールの場合には、接尾語がtplになります。) テンプレートのフォーマットは、コンポーネントタグ、テンプレートコントロールタグ、コメントタグ、ダイナミックプロパティタグ、ダイナミックコンテントタグ といったPRADO特有のタグもありますが、総じてHTMLタグに似ています。

コンポーネントタグ

コンポーネントタグは、コンポーネントを、テンプレートコントロールのボディコンテンツの一部として指定します。コンポーネントがコントロールであるなら、通常、コンポーネントはテンプレートコントロールの子か孫になります。そして、そのコンポーネントの表示結果は、そのコンポーネントがテンプレートに記載されている場所に反映されます。 コンポーネントタグのフォーマットは以下のとおりです。
<com:ComponentType PropertyName="PropertyValue" ...
   EventName="EventHandler" ...>
         //body content
</com:ComponentType>
ComponentType は、クラス名でも、コンポネントのドット区切りタイプの名前 (例: System.Web.UI.TControl) でもどちらも可能です。 PropertyName と EventName はいずれも 大文字小文字の区別がありません。PropertyName は、プロパティ名もしくは、サブプロパティ名(例:. Font.Name) となります。PropertyValue は、対応するプロパティに割り当てられたとき、HTMLデコードされます。初まりのタグと終わりのタグに囲まれたコンテントは、通常コンポーネントのボディとして扱われます。 コンポーネントタグは、XMLと同様に、はじまりのタグと終わりのタグがペアになっていて、適正に入れ子になっている必要があります。 以下のテンプレートでは、ボタンコントロールのTextプロパティと、OnClickイベントを示しているコンポーネントの例です。
<com:TButton Text="Register" OnClick="registerUser">
プロパティ名、イベント名はすべて、大文字小文字の区別が必要ありませんが、コンポーネントタイプ名は大文字と小文字の区別が必要であることに注意してください。イベント名は”On”で始まります。 プロパティの名前の終わりが、”Template”である初期値は、特別に処理されるということも、注意が必要です。特に、初期値はTTemplateオブジェクトとして、パースされます。 TRepeaterコントロールのItemTemplateプロパティは、そのような一例です。 データの大きなトランクのプロパティを初期化することを容易にするために、以下のプロパティ初期設定タグは導入されます。 それは ・・・PropertyName= "PropertyValue" ・・・ と設定するのと全くの同義です。プロパティ初期設定タグは対応するオープニングコンポーネントタグとクロージングコンポーネントタグの間で直接入れ子にされなければなりません。
<prop:PropertyName>
   //PropertyValue
</prop:PropertyName>
バージョン3.1.0以降、プロパティ初期設定タグは、また、同じ親のプロパティを共有するサブプロパティのセットを初期設定するために使われることができる。 例えば、以下の例では、HeaderStyle.BackColor="black" と HeaderStyle.ForeColor="red" を両方と設定したことと等しくなる。
<prop:HeaderStyle BackColor="black" ForeColor="red">

コンポーネントID

テンプレートの中で指定される時に、コンポーネントIDプロパティは正しくプロパティ定義を行うほかにも、特別な意味を持っています。テンプレートの中のID値によって指定されたコンポーネントタグは、テンプレートオーナーコントロールに対応するコンポーネントを登録します。したがって、コンポーネントは、そのIDの値によってテンプレートコントロールから直接アクセスされることができる。例えば、Home.pageのテンプレートにおいて、以下のコンポーネントタグがある場合、
<com:TTextBox ID="TextBox" Text="First Name">
$page->TextBox を使って、コードの中においてテキストボックスのオブジェクトを得ることが可能になります。

テンプレートコントロールタグ

テンプレートコントロールタグは、テンプレートを所有しているコントロールの初期のプロパティ値を設定するために使われます。 そのフォーマットは次の通りです。
<%@ PropertyName="PropertyValue" ... %>
コンポーネントタグと同様に、PropertyNameは大文字小文字の区別がなく、プロパティ名、もしくは、サブプロパティ名でも設定ができます。 テンプレートコントロールタグによって指定された初期値は、構築時に、対応するプロパティに割り当てられます。 従って、これらのプロパティ値は、後の段階で(INITステージ等の段階で)無効にしてさしつかえありません。 テンプレートコントロールタグはオプションです。 各テンプレートは一つしかテンプレートコントロールタグを含むことができません。あなたはテンプレートコントロールタグをどこででもテンプレートに置くことができますが、見易さを確保するために、テンプレートの最初に記述することをお勧めします。

コメントタグ

コメントタグは、エンドユーザーに表示しない開発者向けのコメントを記述し、するために使われます。 コメントタグの中で取り囲まれている中身は生のテキストストリングとして扱われ、PRADOは、それらを構文解析しません。 コメントタグはプロパティ値の中で使うことはできません。 コメントタグのフォーマットは次の通りです。
<!---
   Comments INVISIBLE to end-users
--->
Note
新しいコメントタグ<!--- ・・・・  --->は、PRADOバージョン3.1から、導入されました。以前の<!--・・・ -->は、いくつかのエディタにおいて、そのようなタグを構文のなかで強調する時に、問題となるとクレームが逢ったのが変更した理由です。

インクルードタグ

バージョン3.0.5以降、PRADOは、外部のテンプレートのインクルードのサポートを開始しました。これはインクルードタグにより実行されます。そのインクルードタグでは、外部のテンプレートファイルは名前空間のフォーマットで指定され、それらのファイル名は".tpl"で終わらなければなりません。
<% include path.to.templateFile %>
外部のテンプレートは、インクルードタグがに存在する場所に挿入されます。
Note
タグではさまれたテンプレートのインクルードはできません。すなわち、外部のテンプレートにインクルードタグを持つことができません。