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 if
(csModelKind.Equals(MyExerciseModelDefine.MY_KINEMATIC_MODEL_KIND) ==
true)
//
モデルプロパティ生成
return csScreen; |
public class McMyExerciseModelPropertyScreen :
McDotNetModelCellPropertyScreenBase { 。。。。。。。。。。。 public override McDotNetModelCellPropertyDetailBaseForm CreatePropertyDetailForm() { // ToDo Windows .net フレームワーク上の Form (画面表示本体)派生クラスを生成します。 // 各画面は、Visual Stadio 等にて作成する必要があります。 return new McMyExerciseModelDetailForm(); } |
ここで作成した要素モデル、及びプロパティ画面のスタブプロジェクト(Ex11_MyExerciseStep1.lzh)
ダウンロードしたら解凍して生成されたフォルダー「MyExerciseModel」、「MyExerciseModelProperty」を \CommonMP\Source\HYMCO\OptionImpl\ 下に置きます。
解凍して生成されたプロジェクト:MyExerciseModel.csproj、 MyExerciseModelProperty.csproj を ディバッグ用ソリューションに追加し、スタートアッププロジェクト(TestModelDeveloperMainExp)の依存関係に追加します。
初版:2013/07/27|