ADT 項目を操作する

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

フィールド コンポーネントでの作業:インデックス への移動

ADT はサーバー上に作成されるユーザー定義済みの項目型で,レコード型と類似しています。ADT はほとんど大半のスカラー項目型,配列項目,参照項目,ネストされた ADT を含むことができます。

ADT 項目型のデータにはさまざまな方法でアクセスできますが,次の例では,CityEdit という編集ボックスに子項目値を割り当てて,次の ADT 構造体を使用します。

Address
  Street
  City
  State
  Zip

静的項目コンポーネントの使用

ADT 項目値にアクセスする簡単な方法は,静的項目コンポーネントを使用することです。上の ADT 構造体では,項目エディタを使って次の持続的項目を Customer テーブルに追加できます。

CustomerAddress: TADTField;
CustomerAddrStreet: TStringField;
CustomerAddrCity: TStringField;
CustomerAddrState: TStringField;
CustomerAddrZip: TStringField;

持続的項目がある場合,名前を指定すれば ADT 項目の子項目にアクセスできます。



 CityEdit.Text := CustomerAddrCity.AsString;



 CityEdit->Text = CustomerAddrCity->AsString;



持続的項目は ADT 子項目にアクセスする簡単な方法ですが,設計時にデータセットの構造が不明な場合は使用できません。持続的項目を使用しないで ADT 子項目にアクセスする場合,データセットの ObjectView プロパティを True に設定する必要があります。

データセットの FieldByName メソッドを使用する

子項目の名前を ADT 項目名で修飾することにより,データセットの FieldByName メソッドを使って ADT 項目の子項目にアクセスできます。



 CityEdit.Text := Customer.FieldByName('Address.City').AsString;



データセットの FieldValues プロパティを使用する

またデータセットの FieldValues プロパティで修飾された項目名も使用できます。



 CityEdit.Text := Customer['Address.City'];



 CityEdit->Text = Customer->FieldValues["Address.City"];



FieldValues はデータセットのデフォルトプロパティなので,プロパティ名(FieldValues)は省略できます。

メモ:  ADT 子項目値にアクセスするほかのランタイムメソッドと違い,データセットの ObjectView プロパティが false でも,FieldValues プロパティは機能します。

ADT 項目の FieldValues プロパティを使用する

子項目値には TADTField の FieldValues プロパティを使ってアクセスできます。FieldValues プロパティはバリアントを受け取ったり,返したりするので,どの型の項目でも処理および変換できます。インデックスパラメータは,項目のオフセットを指定する整数値です。



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).FieldValues[1];



 CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->FieldValues[1];



FieldValues は TADTField のデフォルトプロパティなので,プロパティ名(FieldValues)は省略できます。それで次の文は上の文と等価です。



 CityEdit.Text := TADTField(Customer.FieldByName('Address'))[1];



ADT 項目の Fields プロパティを使用する

ADT 項目には Fields プロパティがあり,これはデータセットの Fields プロパティと類似しています。データセットの Fields プロパティと同様,それと位置を指定して子項目にアクセスできます。



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).Fields[1].AsString;



 CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->Fields->



また名前を指定してもアクセスできます。



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).Fields.FieldByName('City').AsString;



 CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->



 CityEdit->Text = Customer->FieldByName("Address.City")->AsString;



関連項目