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

head2.gif 7.5.5 雑多な処理
 以上で,製品情報処理に関する特有の処理はすべて実装した。あとは,検索機能や印刷機能,データグリッドコントロールに表示する列を絞り込む機能([表示項目]ボタンが押されたときの処理)などが実装されていないが,これらの処理内容はすでに前節で説明した顧客情報処理のそれとほぼ同じである。これらをまとめて実装してゆこう。

●カレント行が移動したときの処理
 Fig.7-67に示した各種ボタンは,カレント行の状態によっては使えないものがある。たとえば,データグリッドに何も表示されていないなど,カレント行が存在しないときには,[編集]ボタンや[削除]ボタンは使えない。そこで,カレント行の状態によって,ボタンの淡色表示状態を切り替え,一部のボタンを押せないようにする機能を実装しなければならない。

 カレント行が移動したときには,すでに「●カレント行がないときの処理」にて説明したように,ADODB.RecordsetオブジェクトのMoveCompleteイベントを処理するように実装すればよい。今回は,FormProductフォームのDGrid_Productデータグリッドと結び付けられているADODB.Recordsetオブジェクトを格納しているグローバル変数g_objRecMoveCompleteイベントを,List 7-81のように実装する。

 List 7-81では,次の基準により,ボタンの淡色表示の状態を設定する。

カレント行が空であるとき
 カレント行が空である場合には,[編集]ボタン(BTN_EDITボタン)と[在庫調査]ボタン(BTN_CHKSTOCKボタン)を淡色表示に設定する(5〜13行目)
 
削除権限がないとき
 削除権限がないとき――AllAdminロール,Productsロール,ProductsAdminロールのいずれかにも属していないとき――は,[削除]ボタン(BTN_DELETEボタン)を淡色表示にする。既述のロールに属していて,カレント行が空でなければ,通常表示にする(16〜19行目)
 
カレント行が削除ずみであるとき
 カレント行が削除ずみであるときには,[編集]ボタン(BTN_EDITボタン)を淡色表示にする。さらに,復帰権限があるとき――AllAdminロールまたはProductsAdminロールのどちらかに属するとき――には,[復帰]ボタン(BTN_UNDELETEボタン)を通常表示とするが,復帰権限を保持しなければ,[復帰]ボタンを淡色表示とする(21〜37行目)

 List 7-81を実装することで,「カレント行が存在しないのに[編集]ボタンや[削除]ボタンを押すことできる」という事態を避けることができる。

Prev 76/134 Next