メニューとコマンドクラス
業務アプリケーションでは利用者によって違った使い方になることが前提になります。必要のない機能や権限によって使い分けしたい機能などが業務上発生します。ですので、YWorks Software Framework(以下、YWSFと呼びます)では、ユーザの権限ごとに異なったメニュー画面を表示します。
メニュー画面サンプル |
どのユーザにどんなメニュー画面を表示するかはYCUserBaseのサブクラス(YCUserクラス)においてMainMenuTypeプロパティをオーバーライド(サブクラスで実装することです)することで操作することができます。下記にMainMenuTypeプロパティのサンプルを示します。
//ユーザ毎のメニュー画面の型を返してください。 public override Type MainMenuType { get { if (YCApplication.Instance.User.IsAdministrator) { return typeof(frmAdministratorMenu); } else if (YCApplication.Instance.User.IsGuest) { return typeof(frmGuestMenu); } else { return typeof(frmNormalMenu); } } }
メニュー画面クラスはYCMenuFormクラスを継承して作成します。上記の例では管理者ユーザ用の「frmAdministratorMenu」、ゲストユーザ用の「frmGuestMenu」、一般ユーザ用の「frmNormalMenu」の3つのメニュー画面が作成されています。
メニュー画面には様々な機能を呼び出すためのコマンドボタンを用意することになります。ここで、コマンドボタンのクリックイベントのメソッドに直接機能を記述していては、複数のタイプのユーザで共通で利用するような機能は何回も記述することになってしまうので、YWSFではコマンドクラス(YCCommand〜〜)を作成することをお奨めします。例えば入力機能を集めた「YCCommandEntry」クラスや帳票出力コマンドを集めた「YCCommandReports」クラス、マスタメンテナンス用の「YCCommandMasterMaintenance」といった具合です。
コマンドクラスの各メソッドはstatic(静的)メソッドで実装します。コマンドクラスは概ね状態(属性)を保持しておく必要性がないため、インスタンスを作成せずに利用できるstaticメソッドの方が便利が良い場合が多いからです。メソッド名は機能が分かりやすい名称を付けておきましょう。そしてメニューボタンのクリックイベントでコマンドクラスのメソッドを呼び出すようにコーディングしておくと良いでしょう。