この特集のトップページへ
Chapter 7:プレゼンテーション層の構築

7.4.2 顧客の新規登録
●権限によって編集できる情報を変更する
 Fig.7-24に示したFormEditCustomerフォームには,多数のテキストボックスが載せられているが,すべての項目をユーザーが編集できるというわけではない。

 まず,次のテキストボックスは,ユーザーが編集することはできない。

  • TXT_ID
     顧客番号は,ビジネスロジックによって顧客がデータベースの顧客情報テーブルに追加されたときに自動的に設定される。よってユーザーが編集することはできない。

  • TXT_MADEUSERTXT_LASTUSER
     顧客の作成者(TXT_MADEUSER)と顧客の最終更新者(TXT_LASTUSER)はビジネスロジックによって自動的に設定されるので,ユーザーが編集することはできない。

  • TXT_MADEDATETXT_LASTDATE
     顧客の作成日(TXT_MADEDATE)と顧客の最終更新日(TXT_LASTDATE)はビジネスロジックによって自動的に設定されるので,ユーザーが編集することはできない。

 そこで,これらのTXT_IDTXT_MADEUSERTXT_LASTUSERTXT_MADEDATETXT_LASTDATEの5つのテキストボックスをユーザーが編集できないように設定する。それには,テキストボックスのEnabledプロパティをFalseに設定すればよい(Fig.7-25)。

Fig.7-25 Enabledプロパティの設定
fig7_25

 この5つのテキストボックス以外にも,属するロールの種類によっては操作できないものがある。

 まず,TXT_BILLDAYテキストボックスは締め日を設定するものだが,AccountingAccountingManagerAllAdminというどのロールにも属さないユーザーは操作できない。また,それ以外のすべてのテキストボックスは,SalesSalesManagerSalesAdminAllAdminというどのロールにも属さないユーザーは操作できない。

 そこで,FormEditCustomerフォームがロードされたときに,ユーザーがどのロールに属しているのかを調べ,属するロールに応じて,テキストボックスが編集できるかできないかをEnabledプロパティの値として設定するような処理を実装する。先に説明したように,フォームがロードされるときにはLoadイベントが発生するから,その処理はLoadイベント内に記述すればよい。実際に処理を実装したものが,List 7-7である。List 7-7は,List 7-6に示した処理とほぼ同じで,Business.Utilityコンポーネントを実体化し,GetUserInRoleメソッドを呼び出して所属するロールを調べ,各テキストボックスのEnabledプロパティの値をTrueまたはFalseに設定しているだけである。

prevpg.gif Chapter 7 12/65 nextpg.gif