GenerateExtJSModel メソッド

Delphi / C++Builder 10.2 Tokyo Release 2からTFDBatchMoveJSONWriterが利用可能です。

さらに、そのTFDBatchMoveJSONWriterは GenerateExtJSModel()という procedureがあります。
これは、TFDBatchMoveDataSetReaderもしくはTFDBatchMoveTextReaderTFDBatchMove.Readerでセットした内容の定義をTFDBatchMove.WriterプロパティにセットされたTFDBatchMoveJSONWriter経由でExt JS用のストア定義出力できます。

procedure TFDBatchMoveJSONWriter.GenerateExtJSModel(const AModelName: String; AWithTypes: Boolean; AOutput: TStrings);
パラメータ名称 詳細
AModelName String モデル名
AWithTypes Boolean タイプを付けるか
AOutput TStrings 出力

32Bitでは小細工が必要です。
var iLevel: Integerの初期値が。。。。

64bitではしっかり動きます。

使い方

procedure TForm1.Button1Click(Sender: TObject);
var
  s:  TStringList;
begin
  s := TStringList.Create;
  try
    FDBatchMoveJSONWriter1.GenerateExtJSModel('kawahagi', True, s);
    Memo1.Lines.Assign(s);
  finally
    FreeAndNil(s);
  end;
end;

2017-12-25 17.46.44.png
実行すると Ext.data.Model(Senchaモデルクラスの定義)の文字列ができます。

Ext.define('kawahagi', {
  extend: 'Ext.data.Model',
  requires: [
    'Ext.data.field.Field'
  ],
  fields: [
    { name: 'Species No', type: 'number' },
    { name: 'Category', type: 'string' },
    { name: 'Common_Name', type: 'string' },
    { name: 'Species Name', type: 'string' },
    { name: 'Length (cm)', type: 'number' },
    { name: 'Length_In', type: 'number' },
    { name: 'Notes', type: 'string' },
    { name: 'Graphic', type: 'string' }
  ]
});

AWithTypes := Falseの場合

AWithTypesはfields定義にtypeを書くかどうかなので、Falseにするとシンプルなfields定義に変わります。

Ext.define('kawahagi', {
  extend: 'Ext.data.Model',
  requires: [
    'Ext.data.field.Field'
  ],
  fields: [
    { name: 'Species No' },
    { name: 'Category' },
    { name: 'Common_Name' },
    { name: 'Species Name' },
    { name: 'Length (cm)' },
    { name: 'Length_In' },
    { name: 'Notes' },
    { name: 'Graphic' }
  ]
});
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.