(前頁)<<      >>(次頁)          (Up)

6章 再び要素モデルの作成
6.2 色々な要素モデル
堰モデルのプロパティ画面作成)


 前頁で作成した堰の要素モデル用の独自プロパティ画面を作成してみます。
 すでに「KinematicWave」要素モデル用のプロパティ画面を製作した「MyExerciseModelProperty」に対して、堰要素モデル用のプロパティ画面を追加します。
 
 プロパティ画面を作成するときの手順をもう一度復習してみます。

 (1) スクリーンクラス(MySluiceModelPropertyScreen.)のスタブ作成
 (2) Formクラス(MySluiceModelPropertyForm)のスタブ作成
 (3) ファクトリークラス内メソッド(CreatePropertyScreen)の実装
 (4) スクリーンクラス内メソッドの実装
 (5) Formクラス内メソッドの実装


 上記の手順に従って、プロパティ画面を作成します。

(1)スクリーンクラス(MySluiceModelPropertyScreen.)のスタブ作成
  
 (1−1) 型紙である「\CommonMP\Source\HYMCO\OptionImpl\MyModelProperty\Screen\MyModelPropertyScreen.cs」ファイルを  追加するプロジェクトである「\CommonMP\Source\HYMCO\OptionImpl\MyExerciseModelProperty\Screen\」 下にコピーし、ファイル名称を「MySluiceModelPropertyScreen.cs」とします。
 (1−2) コピーして生成された「MySluiceModelPropertyScreen.cs」を、プロジェクト「MyExerciseModelProperty.csproj」に追加します。
  (1−3) 今作成した「MySluiceModelPropertyScreen.cs」ファイル内の クラス名「McMyModelPropertyScreen」を「MySluiceModelPropertyScreen」に変更します。
 (1−4) 関連するネームスペース「using CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB.DetailForm;」を追加します。
       (Formクラスのネームスペース名)


(2) Formクラス(MySluiceModelPropertyForm)のスタブ作成

 (2−1)プロジェクトのDetailFormフォルダー内に フォームクラス:「MySluiceModelPropertyForm」を新規作成します。


        
             マウス右ボタンクリックにより 追加−新しい項目を選択

        
             Windowsフォームを選択し、ファイル名を MySluiceModelPropertyForm とする


 生成されたファイルの ネームスペース名は namespace CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB.DetailForm であることに注意してください。    これが、(1−4)の作業手順で 「using CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB.DetailForm;」 を追加した理由です。


 (2−2)作成された MySluiceModelPropertyForm を右クリックし 「ソースを開く」を選択して ソースを開きます。
      ソース上で親クラスを Form から MySluiceModelPropertyForm : McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIFに変更します。
    MySluiceModelPropertyForm : Form
                        
    MySluiceModelPropertyForm : McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIF

 また、McDotNetModelCellPropertyDetailBaseForm、McModelCellPropertyDetailFormIF の定義を行っているソースを取り込むため 下記 using 文を追加します。

 ↓ 追加
using CommonMP.HYSSOP.Interface.HSData;
using CommonMP.HYSSOP.Interface.HSController;
using CommonMP.HYSSOP.Interface.HSViewer;
using CommonMP.HYSSOP.CoreImpl.HSData;
using CommonMP.HYSSOP.CoreImpl.HSController;
using CommonMP.HYSSOP.CoreImpl.HSTools;

using CommonMP.HYMCO.Interface;
using CommonMP.HYMCO.Interface.Viewer;
using CommonMP.HYMCO.Interface.Data;
using CommonMP.HYMCO.CoreImpl.Controller;
using CommonMP.HYMCO.CoreImpl.Data;
using CommonMP.HYMCO.CoreOptions.McViewer.DotNetViewer;
 ↑ 追加

 (2−3)McModelCellPropertyDetailFormIF で実装すべき EditParameter メソッドスタブを追加します。


       MySluiceModelPropertyFormスタブ


using CommonMP.HYSSOP.Interface.HSData;
using CommonMP.HYSSOP.Interface.HSController;
using CommonMP.HYSSOP.Interface.HSViewer;
using CommonMP.HYSSOP.CoreImpl.HSData;
using CommonMP.HYSSOP.CoreImpl.HSController;
using CommonMP.HYSSOP.CoreImpl.HSTools;

using CommonMP.HYMCO.Interface;
using CommonMP.HYMCO.Interface.Viewer;
using CommonMP.HYMCO.Interface.Data;
using CommonMP.HYMCO.CoreImpl.Controller;
using CommonMP.HYMCO.CoreImpl.Data;
using CommonMP.HYMCO.CoreOptions.McViewer.DotNetViewer;

public partial class MySluiceModelPropertyForm : McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIF
{
            。。。。。。。。。。。。。
        public void EditParameter()
        {

        }
}




(3) ファクトリークラス内メソッド(CreatePropertyScreen)の実装

 スクリーンファクトリクラス:MyExerciseModelPropertyScreenFactory 内の スクリーン生成メソッド:CreatePropertyScreen を実装します。


       スクリーンファクトリークラス:CreatePropertyScreen メソッドの実装

public class MyExerciseModelPropertyScreenFactory : McPropertyScreenFactoryBase
{
        public override McModelPropertyScreen CreatePropertyScreen(HySKind csModelKind)
        {
            McModelPropertyScreen csScreen = null;

            if (csModelKind.Equals(MyExerciseModelDefine.MY_SLUICE_MODEL_KIND) == true)
            {   
                csScreen = new MySluiceModelPropertyScreen();
            }
            return csScreen;
        }
}



(4) スクリーンクラス内メソッドの実装

 (4−1)MySluiceModelPropertyForm クラスを追加したところで、MySluiceModelPropertyScreen クラスの CreatePropertyDetailForm メソッドで MySluiceModelPropertyForm を生成するコードを実装します。

public class McMyExerciseModelPropertyScreen : McDotNetModelCellPropertyScreenBase
{
        public override McDotNetModelCellPropertyDetailBaseForm CreatePropertyDetailForm()
        {
            return new  McMyExerciseModelDetailForm();
        }
} 

 以上で プロパティ画面のスタブが完成です。
 コンパイルし、堰要素モデルのプロパティ画面が表示されることを確認します。

       
             表示された画面


(5)Formクラス内メソッドの実装

(5−1)画面部品配置
 作成されたプロパティ画面はのっぺらぼうで何も表示されません。
 そこで、 Microsoft Visual C# のツールボックスから 画面に部品を貼り付けていきます。



      
                   画面へ部品貼り付け

  画面には必ず、「設定」と「キャンセル」ボタンを配置します。


(5−2)EditParameterメソッド実装

 MySluiceModelPropertyForm クラスの中では、プロパティ情報と初期化情報は それぞれ メンバー変数 m_csPropertyInfo、 m_csInitialInfo として設定されます。
 EditParameterメソッド内では、 csPropertyInfo、csInitialInfo に設定されたデフォルト値を画面部品に設定し、画面表示した時にデフォルト値が表示されるようにします。

public partial class MySluiceModelPropertyForm : McDotNetModelCellPropertyDetailBaseForm, McModelCellPropertyDetailFormIF
{
         。。。。。。。。。。。
        public void EditParameter()
        {
            //プロパティ情報
            McCellModelPropertyInfo csRtnCellPrptyDt = m_csPropertyInfo as McCellModelPropertyInfo;
            long iN=0;
            double dD=0.0;
            if (csRtnCellPrptyDt != null)
            {
                csRtnCellPrptyDt.GetInfo("N", ref iN);
                this.textBox_N.Text = iN.ToString();
           。。。。。。。
            }
          。。。。。。。。。。
}



(5−3)「設定」、「キャンセル」ボタンを押下したときの コールバックメソッドを追加し、実装する。

 Microsoft Visual C# 上から、 画面に追加した、「設定」と「キャンセル」ボタンに対するコールバックメソッドを生成し、コールバックメソッド内で 画面上で設定されたた値を、csPropertyInfo、csInitialInfo に設定する処理を実装します。
 本例では、、「設定」と「キャンセル」ボタンに対応するコールバックメソッドは ParaSet_Click()、Cancel_Click()としました。


        private void ParaSet_Click(object sender, EventArgs e)
        {
            {   // パラメータチェックOKならば
                DialogResult = DialogResult.OK;
            }
            long iN = 0;
            double dD = 0.0;
            // プロパティ情報
            McCellModelPropertyInfo csRtnCellPrptyDt = m_csPropertyInfo as McCellModelPropertyInfo;
            if (csRtnCellPrptyDt != null)
            {
                iN = long.Parse(this.textBox_N.Text);
                csRtnCellPrptyDt.SetInfo("N", iN);
                 。。。。。。。。。。。。
            }
            // 初期化情報
            McInitialInfo csRtnInitDt = m_csInitialInfo as McInitialInfo;
            if (csRtnInitDt != null)
            {
                dD = double.Parse(this.textBox_H0.Text);
                csRtnInitDt.SetInfo("dh", dD);
            }
            Close();
        }

        private void Cancel_Click(object sender, EventArgs e)
        {
            DialogResult = DialogResult.Cancel;
            Close();
        }

 
(6)動作確認

 ディバッグモードで CommonMPを立ち上げて、堰要素モデルのプロパティ画面がここで作成した画面である事を確認します。 

 


 ここで作成した要素モデル開発プロジェクト(Ex16_CommonMP.lzh

 ダウンロードしたら解凍して生成されたフォルダー「MyExerciseModel」と「MyExerciseModelProperty」を \CommonMP\Source\HYMCO\OptionImpl\ 下に置きます。   
 解凍して生成されたプロジェクト:MyExerciseModel.csproj を ディバッグ用ソリューションに追加し、スタートアッププロジェクト(TestModelDeveloperMainExp)の依存関係に追加します。 
 また、 解凍して生成された、「MyExerciseStep1」フォルダーを \CommonMP\CommonMPData\ 下に置きます。



(前頁)<<      >>(次頁) 

初版:2013/08/28 |