単体データ画面
YWorks Software Framework(以下、YWSFと呼びます)では、単体データを表示する画面としてフォーム形式のYCDbObjectFormクラスとダイアログ形式のYCDbObjectDialogクラスを用意しています。どちらもYIDbObjectWindowインターフェイスを継承し、YCDbObjectオブジェクトを取得、設定するためのObjectプロパティを実装しています。YCDbObjectのサブクラスのオブジェクトが持つ単体形式のデータを表示するために、YCDbObjectFormクラスやYCDbObjectDialogクラスを継承したサブクラスを作成します。
YCDbObject系ウィンドウではテキストボックスやコンボボックス、リストボックス、チェックボックス等のコントロールを用いて単票形式でデータを表示します。データの読み込みについては、画面のLoadイベントでLoadDataメソッドを呼び出します。データ読み込みの際には、まずコンボボックスやリストボックスの入力用選択リストの設定、単体モデルのデータ項目と各コントロールとのデータ連結(バインディングといいます)を行い、非連結コントロールへの表示データの設定を実施します。ですので、各単体データ画面クラスのサブクラスにおいて、入力用選択リストの読み込みメソッド(SetControlSelectionsメソッド)、データバインディング用メソッド(SetControlBindingsメソッド)、非連結コントロールの表示設定メソッド(SetUnbindControlsメソッド)をオーバーライド(サブクラスでの実装)してください。下記にサンプルを示します。
//入力用選択リストの設定 protected override void SetControlSelections() { YCControlHelper.FillComboBox(ctlユーザグループコード, YCListManager.Instance.Lists["ユーザグループ"], true); } //データ項目とコントロールのバインディング protected override void SetControlBindings() { this.BindControl(ctlユーザID, "Text", "ユーザID"); this.BindControl(ctlユーザ名, "Text", "ユーザ名"); this.BindControl(ctlユーザ名カナ, "Text", "ユーザ名カナ"); this.BindControl(ctlパスワード, "Text", "パスワード"); this.BindControl(ctlユーザグループコード, "SelectedValue", "ユーザグループコード"); } //非連結コントロールの表示 //(bool型項目でないデータ項目用のチェックボックス等) protected override void SetUnbindControls() { this.SetCheckBoxByIntegerValue(ctl削除フラグ, "削除フラグ"); } //Loadイベント private void dlgDbObjectDialogSubClass_Load(object sender, EventArgs e) { try { this.LoadData(); } catch (Exception err) { YCMessageBox.ShowErrorMessage(err.Message); } } //非連結チェックボックスの変更の取得 private void ctl削除フラグ_CheckedChanged(object sender, EventArgs e) { try { this.WriteCheckBoxByIntegerValue(ctl削除フラグ, "削除フラグ"); } catch (Exception err) { YCMessageBox.ShowErrorMessage(err.Message); } }
コンボボックスやリストボックスへの入力用選択リストの読み込みにはFillComboBoxメソッドやFillListBoxメソッドを使用してください。また、コントロールへのデータ項目のバインディングにはBindControlメソッドを使用してください。
データ項目をバインディングする際に、名称や数値、コードといったデータ項目はコントロールから得られる値をそのまま利用できるのでバインディングで記述します。しかし、データ項目がコントロールが持つ値の形式と異なる項目についてはバインディングで処理できないため、非連結コントロールとして記述します。
例えば、数値型でフラグ処理しているデータ項目をbool型で処理するチェックボックスで処理するといったことは業務アプリケーションではよくある話です。YWSFではバインディングできないチェックボックスの表示にSetCheckBoxByIntegerValueメソッドとSetCheckBoxByStringValueメソッドを、変更取り込み用にWriteCheckBoxByIntegerValueメソッドとWriteCheckBoxByStringValueメソッドを用意しています。
また、名称データの入力の際にカナ名称も自動的に取得したいという場合があります。そのような場合はYWSFにはYCImeというクラスを使ってKeyDownイベントでWindowsAPIを呼び出してカナ入力をサポートする機能も用意しています。下記にKeyDownイベントのソースコードのサンプルを示します。
//名称コントロールのKeyDownイベント private void ctl名称_KeyDown(object sender, KeyEventArgs e) { try { //名称カナコントロールに自動的に半角カタカナを入力する。 YCIme.KeyDownEdit(ctl名称, ctl名称カナ, ImeMode.KatakanaHalf); } catch { } }
変更の保存(Objectプロパティに保持されているYCDbObjectオブジェクトのIsNewプロパティがtrueの場合は新規レコード追加)はYCDbObjectFormサブクラスの場合は画面が閉じる時、YCDbObjectDialogサブクラスの場合はOKボタンがクリックされた時にSaveメソッド実行するようにソースコードを記述します。Saveメソッドを実行する前にコントロールの入力結果が確実に反映されるよう、EndEditメソッドを事前に実行しておくことを忘れないようにしてください。