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

6章 再び要素モデルの作成
6.1 独自プロパティ画面の作成
  (その2 プロパティ画面のスタブ作成)


 6.1.4  プロパティ画面の開発プロジェクトを作成 及び、 6.1.5 プロパティ画面スタブ作成

 要素モデル用のプロパティ画面は、要素モデル本体とは異なるDLLとして提供します。
 要素モデルプロパティ画面DLL内には下記クラスが含まれています。


    

 表示するプロパティ画面は、「.NET Framework」 の Formクラスを使用します。 このクラスは 「.NET」の画面部品(リストボックスやボタン等の部品)を貼り付け、オペレーターの画面部品操作に対応する処理を記述します。 一方、表示されている画面をCommonMPで管理するために、スクリーン(Screen)クラスを制作し、このスクリーンクラスが 先のFormクラスをラッピングするようにしています。 この画面クラスはCommonMP要素モデルの場合と同様にファクトリークラスを用いて生成します。

 要素モデル本体のDLLを作成するには、型紙のプロジェクトをコピーしそれを改造しました。
 要素モデル用プロパティ画面も同様に、型紙をコピーして作成します。

 独自プロパティ画面DLLの作成手順を纏めると以下のようになります。


(1)型紙プロジェクトをコピーし、独自プロパティ画面用プロジェクトを作成する。
(2)コピーしたプロジェクトを単体で開き namespace 名を変更する
(3)プロジェクトのプロパティから、DLL名を変更する。
(4)ファクトリークラス名
(4)要素モデル開発用CommonMPプロジェクトに(1)〜(3)で作成したプロジェクトを追加し、依存関係を設定する。
(5)ファクトリークラスのCreateFactoryID()メソッドを変更し、要素モデルファクトリーIDと同じ値を返却する様に修正する。
(6)ファクトリークラス名、スクリーン(Screen)クラス名、フォーム(Form)クラス名を変更する。(ファイル名も変更)
(7)画面Factoryクラス内の所定メソッド内容を修正し、スクリーンクラスの生成が行えるようにする。
   (これでスタブの完成。 コンパイルしCommonMPを動作させスタブの動作を確認する)
(8)Microsoft Visual C#上で、画面に必要な部品等を貼り付け、画面処理を完成させる。


 以下に順を追って説明します。

(1)型紙プロジェクトをコピーして、独自プロパティ画面用プロジェクトを作成する

 要素モデル用の型紙は\CommonMP\Source\HYMCO\OptionImpl下の「MyModel」フォルダーです。 この要素モデルプロパティ画面の型紙は「MyModelProperty」です。 このフォルダーをコピーし、「MyExerciseModelProperty」を作成します。

   

 プロジェクトファイル「MyModelProperty.csproj」の名称を「MyExerciseModelProperty.csproj」に変更します。

   


(2)コピーしたプロジェクトを単体で開き namespace 名を変更する

 Microsoft Visual C# から MyExerciseModel.csproj を開きます。(ソリューションからではなくて、単体プロジェクトを開きます。ディバッグソリューションには未だ追加しないで下さい。)

   

 ここで、ソリューション内の namespace 名を全て変更します。
 Microsoft Visual C# 「編集」−「検索と置換」−「クイック置換」 を選択します。

   

 namespace 名を
  CommonMP.HYMCO.OptionImpl.MyModelLIB から
  CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB
 に変更します。
 
 (注意)
  プロパティ画面のnamespace名は要素モデルの namespace 名に一致させます。
  
 

   


(3)プロジェクトのプロパティから、DLL名を変更する  
 
 プロジェクトのアセンブリ名(DLL名)を変更します。
 (DLL名は MyExerciseModelDLL.dll とします)
 また、既定の名前空間は「CommonMP.HYMCO.OptionImpl.MyExerciseModelLIB」に変更します。

   


(4)要素モデル開発用CommonMPプロジェクトに(1)〜(3)で作成したプロジェクトを追加し、依存関係を設定する

 Microsoft Visual C# から 要素モデル開発用CommonMPプロジェクトを開きます。 ソリューションに (1)〜(3)で作成したプロジェクトを追加します。  

   

   

 要素モデル開発用CommonMPのメインプログラム(TestModelDeveloperMainExp)の依存関係に、追加した MyExerciseModelProperty.csproj を追加します。

   

   


 プロパティ画面は、要素モデルに依存します。
 型紙をコピーした状態では、要素モデルの型紙プロジェクト「MyModel」に依存する設定になっています。  
 そこで、新しく作成した要素モデルプロパティ画面プロジェクトの依存を 対応する要素モデルプロジェクト「MyExerciseModel」に変更します。

   

(5)ファクトリークラスのCreateFactoryID()メソッドを変更し、要素モデルファクトリーIDと同じ値を返却する様に修正する

 プロパティスクリーンファクトリクラスのCreateFactoryID() メソッドの戻り値が 要素モデルファクトリーIDと同じ値を返すように修正します。

   


(6)ファクトリー(Factory)クラス名、スクリーン(Screen)クラス名、フォーム(Form)クラス名を変更する(ファイル名も変更)

 Microsoft Visual C# のソリューションエクスプローラー上で、スクリーンクラスとフォームクラスのソースファイル名称を変更します。
 
   ファクトリークラスソースファイル名変更
      MyModelPropertyScreenFactory.cs → MyExerciseModelPropertyScreenFactory.cs
   スクリーンクラスソースファイル名変更
      MyModelPropertyScreen.cs → McMyExerciseModelPropertyScreen.cs
   フォームクラスソースファイル名変更
      MyModelDetailForm.cs → MyExerciseModelDetailForm.cs


 ファイル名変更時に 要素モデル作成時と同様に、自動的にクラス名称も変更するか否かを問い合わせるダイアローグが表示される事があります。この時には、「はい」を選択します。 すると、自動的にソース内に記述されているソース名が変更されます。 もしも、自動修正が行われない時には、クラス宣言されている所で、クラスを選択し、ポップアップメニューの「リファクタ」−「名前の変更」を選択して、クラス名を変更します。

   ファクトリークラス名変更
      MyModelPropertyScreenFactory → MyExerciseModelPropertyScreenFactory
   スクリーンクラス名変更
      MyModelPropertyScreen → McMyExerciseModelPropertyScreen
   フォームクラス名変更
      MyModelDetailForm → MyExerciseModelDetailForm

  
   
         (↑ クラス名変更後)


(7)画面Factoryクラス内の所定メソッド内容を修正し、スクリーンクラスの生成が行えるようにする

 ファクトリークラス(MyExerciseModelPropertyScreenFactory)の  public override McModelPropertyScreen CreatePropertyScreen(HySKind csModelKind) メソッド内で、新しく作成したスクリーンクラスを生成するようにします。
 

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

            if (csModelKind.Equals(MyExerciseModelDefine.MY_KINEMATIC_MODEL_KIND) == true)
            {   // 特別モデル型紙ならば

                // モデルプロパティ生成
                csScreen = new McMyExerciseModelPropertyScreen();
            }

            return csScreen;
        } 


  次に、スクリーンクラス(McMyExerciseModelPropertyScreen)の public override McDotNetModelCellPropertyDetailBaseForm CreatePropertyDetailForm() メソッドを修正し、McMyExerciseModelDetailFormクラスを生成するようにします。
 CommonMPからファクトリークラスに プロパティ画面生成指示が行われると ファクトリークラスの CreatePropertyScreen()メソッドがコールされて スクリーンクラスのインスタンスが生成されます。 直後に 生成されたスクリーンクラスの CreatePropertyDetailForm()メソッドがコールされて内部に Formクラスインスタンスが生成されます。

public class McMyExerciseModelPropertyScreen : McDotNetModelCellPropertyScreenBase
{
   。。。。。。。。。。。

       public override McDotNetModelCellPropertyDetailBaseForm CreatePropertyDetailForm()
        {
            // ToDo Windows .net フレームワーク上の Form (画面表示本体)派生クラスを生成します。
            // 各画面は、Visual Stadio 等にて作成する必要があります。
            return new McMyExerciseModelDetailForm();
        } 


6.16 スタブの動作確認
 
 これでスタブが完成しました。 コンパイルしCommonMPを動作させスタブの動作を確認します。

   
      ↑ 演習:KenematicWaveモデルのプロパティ画面を表示します。

   
      ↑ スタブのままなので、何も無い画面が表示されます。


 ここで作成した要素モデル、及びプロパティ画面のスタブプロジェクト(Ex11_MyExerciseStep1.lzh

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



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

初版:2013/07/27|