ホームページ  >  記事  >  ウェブフロントエンド  >  [QMacros]例: QMacros_html/css_WEB-ITnose を使用して HTML テンプレートを操作する

[QMacros]例: QMacros_html/css_WEB-ITnose を使用して HTML テンプレートを操作する

WBOY
WBOYオリジナル
2016-06-24 11:23:03942ブラウズ

実際の開発では、さまざまな理由により、ブラウザを組み合わせて、Delphi 自体では実現するのが難しい効果を実現する場合があります。また、Web ページが文字列の綴りによって完成される場合、その効率は明らかに理想的ではありません。 QMacros と組み合わせると、すべてが非常にシンプルになることがわかります。 QMacros のサンプルには、新しい HTML テンプレートのサンプル コードが含まれています。QMacros に関連する部分を解釈して、HTML テンプレートを使用する方法を見てみましょう。

まず、フォームにデータ セットを含めます。データ セットには Id と Name の 2 つのフィールドがあります。これらの 2 つのフィールドは設計期間中に追加されたものであるため、定義ではそれらが adsDataId と adsDataName であることがわかります。デモンストレーションの便宜上、フォームのコンストラクターで 10 個のテスト データを生成しました。

次に、残りのソース コードを見てみましょう:

procedure TForm1.Button1Click(Sender: TObject);const  STableTemplate: QStringW = '<html><head><title><%Title%></title></head>' + //    '<body>这是一个表格<table border="1"  cellspacing="0" cellpadding="0" bordercolor="#000000" style="BORDER-COLLAPSE: collapse">'+ //    '<th><tr><td>编号</td><td>姓名</td></tr></th>' + //    '<%Rows("<tr><td>%Id%</td><td>%Name%</td></tr>")%>' + //    '</table></body>';var  AMacros: TQMacroManager;  AHtmlFile: String;begin  AMacros := TQMacroManager.Create;  try    AMacros.Push('Title', 'QMacros HTML表格');    AMacros.Push('Rows', DoReplaceRows);    AHtmlFile := ExtractFilePath(Application.ExeName) + 'index.html';    SaveTextW(AHtmlFile, AMacros.Replace(STableTemplate, '<%', '%>',      MRF_PARSE_PARAMS));    WebBrowser1.Navigate('file:///' + StringReplaceW(AHtmlFile, '\', '/',      [rfReplaceAll]));  finally    FreeAndNil(AMacros);  end;end; procedure TForm1.DoReplaceRows(AMacro: TQMacroItem; const AQuoter: QCharW);var  AMacros: TQMacroManager;  AReplace: TQMacroComplied;  AHelper: TQStringCatHelperW;begin  AMacros := TQMacroManager.Create;  AHelper := TQStringCatHelperW.Create;  adsData.DisableControls;  try    AMacros.Push(adsData, '');    adsData.First;    AReplace := AMacros.Complie(AMacro.Params[0].AsString, '%', '%');    while not adsData.Eof do    begin      AHelper.Cat(AReplace.Replace);      adsData.Next;    end;    AMacro.Value.Value := AHelper.Value;  finally    FreeAndNil(AMacros);    FreeAndNil(AHelper);    FreeAndNil(AReplace);    adsData.EnableControls;  end;end;

さて、この例では定数文字列 STableTemplate を直接定義しました。次に、実行時に LoadTextW を使用してそれをロードします。次の手順はこの例と同じです。

Button1Click が何をするのか見てみましょう:

  • TQMacroManager オブジェクト インスタンス AMacros を作成します。
  • 2 つのマクロがスタックにプッシュされます:
    • Title: テーブルのタイトルとして使用されます
    • Rows: パラメーターを含むマクロ、パラメーター繰り返される HTML コンテンツ
  • AMacros の置換を実行し、置換結果を現在のプログラムの下に保存し、index.html という名前を付けます。
  • ナビゲート機能を使用して、保存された Web ページをロードし、生成された HTML コンテンツを表示します。

ここで、マクロ Title は固定値であり、Rows はさらなる処理のために DoReplaceRows によって提供される関数マクロです。

  1. 必要なインスタンスを作成します
  2. adsData データセットのフィールドをスタックにプッシュします。
  3. 後で繰り返し置換するために Rows マクロのパラメーターをプリコンパイルします。
  4. 置換の各ステップの結果が AHelper に追加されます。
  5. Clean;ローカル変数の値
  6. 以上で、上記のテンプレートの置き換えは完了です。ここで、TQMacroManager オブジェクトのローカル インスタンスを作成したことに注意してください。もちろん、Button1Click で AMacros を使用することもできます。その場合、マクロ Title と Rows の値も埋め込まれます。

実際の実行結果を見てみましょう:

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。