title: RDB::DataSource
author: YOSHIDA Kazuhiro
mailto: moriq@moriq.com

1. RDB::DataSource

1.1. super class

Object

1.1. class methods

: new : EDB::DataSource

1.1. methods

1.1. properties

1.1. event handlers

: on_data_change(field) : nil

  data_change event は， RDB::DataSource に関連付けられた RDB::DataSet でカレントレコードを編集したり，別の項目やレコードに移動したときに発生します。

  : field: RDB::Field
    同時に複数の項目が変更された場合 ( 別のレコードに移動した場合など ) には， field は nil になります。そうでない場合には field は編集された項目を示します。

  on_data_change を記述すると， RDB::DataSource に関連付けられた RDB::DataSet でカレントレコードの項目を編集したり，別の項目やレコードに移動したときに特定のアクションを実行できます。このイベントを生成するメソッドには RDB::DataSet#next や RDB::DataSet#prior があります。データベース対応コントロールは，以下の処理によってデータが変更されたことを RDB::DataSource に通知します。
* 新規のレコードへのスクロール
* 項目のデータの変更
  データベースに対応していない複数のコントロールで同時にデータを表示しなければならない場合に on_data_change は特に便利です。

: on_state_change : nil
  state_change event は， RDB::DataSource の RDBB::DataSet の state が変わったときに発生します。

  on_state_change を記述すると， RDB::DataSource に関連付けられた RDB::DataSet の state が変更されたときに特定のアクションを実行できます。データベースに正常に接続している間，データセットの状態は頻繁に変わります。例えば，ユーザーがデータベース対応コントロールで項目の編集を始めると， RDB::DataSet の state はまだ DS_EDIT になっていなければ DS_BROWSE から DS_EDIT に変わります。 on_state_change は，状態の変更に対する応答としてメニュー項目やボタンを使用可能 / 使用不可にするなどのアクションを実行できます。

: on_update_data : nil
  update_data event は，カレントレコードが更新されるときに発生します。

  on_update_data を記述すると，データベースにデータの変更を登録する前に特定のアクションを実行できます。データベースに変更を登録するときには， RDB::DataSet#post が実行される前に on_update_data が呼び出されます。 on_update_data は，変更を登録する前にさらにデータを処理したり検証したりする場合に便利です。
