アクション項目からのページ プロデューサの使用

提供: RAD Studio
移動先: 案内検索

ページ プロデューサ コンポーネントの使用 への移動


一般的なページ プロデューサ コンポーネントの使い方では、HTMLFile プロパティを使って HTML テンプレートを含むファイルを指定します。OnAction イベント ハンドラは、Content メソッドを呼び出して、テンプレートを最終的な HTML シーケンスに変換します。

procedure WebModule1.MyActionEventHandler(Sender: TObject; Request: TWebRequest;
   Response: TWebResponse; var Handled: Boolean);
begin
   PageProducer1.HTMLFile := 'Greeting.html';
   Response.Content := PageProducer1.Content;
end;
void __fastcall WebModule1::MyActionEventHandler(TObject *Sender,
   TWebRequest *Request, TWebResponse *Response, bool &Handled)
{
  PageProducer1->HTMLFile = "Greeting.html";
  Response->Content = PageProducer1->Content();
}

Greeting.html は、次の HTML テンプレートを含んだファイルです。

<HTML>
<HEAD><TITLE>Our Brand New Web Site</TITLE></HEAD>
<BODY>
Hello <#UserName>!  Welcome to our Web site.
</BODY>
</HTML>

OnHTMLTag イベント ハンドラは、HTML 内のカスタム タグ(<#UserName>)を実行時に置換します。

procedure WebModule1.PageProducer1HTMLTag(Sender : TObject;Tag: TTag;
   const TagString: string; TagParams: TStrings; var ReplaceText: string);
begin
   if CompareText(TagString,'UserName') = 0 then
      ReplaceText := TPageProducer(Sender).Dispatcher.Request.Content;
end;
void __fastcall WebModule1::HTMLTagHandler(TObject *Sender, TTag Tag,
   const AnsiString TagString, TStrings *TagParams, AnsiString &ReplaceText)
{
  if (CompareText(TagString,"UserName") == 0)
    ReplaceText = ((TPageProducer *)Sender)->Dispatcher->Request->Content;
}

要求メッセージのコンテンツが文字列 Mr. Ed であれば、Response.Content の値は次のようになります。

<HTML>
<HEAD><TITLE>Our Brand New Web Site</TITLE></HEAD>
<BODY>
Hello Mr. Ed!  Welcome to our Web site.
</BODY>
</HTML>

メモ: この例では、OnAction イベント ハンドラを使用してコンテンツ プロデューサを呼び出し、応答メッセージのコンテンツを割り当てています。設計時にページ プロデューサの HTMLFile プロパティを割り当てる場合は、OnAction イベント ハンドラを記述する必要はありません。その場合は、アクション項目の Producer プロパティの値に PageProducer1 を割り当てるだけで、上記の OnAction イベント ハンドラと同じ結果を得ることができます。

関連項目