【DO!BOOK・ページリンク】
migaro_tech2012   56 / 100

BOOKをみる

10秒後にBOOKのページに移動します


54 境にパッケージファイルの格納フォルダ をライブラリパスとして登録する必要が ある。  以上で、カスタマイズコンポーネント を作成し、その作成したカスタマイズコ ンポーネントを、Delphi/400 開発環境 にインストールできた。Delphi/400 の 再起動後、カスタマイズコンポーネント TTRDBGrid が利用可能となる。 3. コンポーネントへの 機能追加  本章では、カスタマイズコンポーネン トへの機能追加を紹介したい。今回は2 章で作成したTTRDBGrid に「データの 並び順を変更する」機能を追加してみよ う。  【図11】のようなTTRDBGrid を利用 している照会画面で、明細部のタイトル をダブルクリックするごとに、選択列を 基準として並び順を変更できるようにし よう。【図11】  データの並び順は「昇順設定→降順設 定→設定なし→昇順設定→…」、と設定が 切り替わるようにする。また、並び順の 設定が分かりやすいように、選択列のタ イトルのフォント色も変更する。以下の ような切り替えになる。 昇順設定:赤色   ↓ 降順設定:青色   ↓ 設定なし:黒色   ↓ 昇順設定:赤色   ↓ ●データの並び順  処理を実装する前に、データの並び順 を変更する方法を説明したい。  データの並び順は、TTRDBGrid に紐 付くデータセットのインデックスを利用 する。照会画面の作成時、TTable や TQuery を利用することがよくある。し かし、並び順の変更はローカルキャッシュ に取り込んだデータのインデックスを利 用したいので、今回はデータセットに TClientDataSet を前提とする。  次に、TClientDataSet のインデックス 設定について説明する。インデックス設 定には、IndexName とIndexFieldNames の2 種類のプロパティが存在する。前者 のIndexName は、Index 定義(フィール ドの優先順位、フィールドごとの昇順/ 降順を指定したもの)をあらかじめ準備 して設定する必要がある。後者の IndexFieldNames は、フィールドの優先 順位は指定できるが、降順の指定はで きない。今回は昇順/降順を選択で きるようにしたいので、Index 定 義とIndexName を利用して並び順 を変更する。なお、IndexName と IndexFieldNames は互いに排他関係にあ るため、どちらか一方しか設定できない。 ●機能追加  では、機能追加に必要な処理記述を以 下に洗い出す。 ・タイトルをダブルクリックするごとに、 並び順を変更する。 ・変更前のインデックス設定を退避/復 元する。 ・選択列のフォント色を変更する。  ここでは、メインの処理である「タイ トルをダブルクリックするごとに、並び 順を変更する」を中心に説明したい。  まず、タイトルのダブルクリックによ り、並び順を変更するため、選択列を特 定する必要がある。WMLButtonDown イ ベントで、マウスカーソル位置から選択 列を取得し、WMLButtonDblClk イベン トにて、インデックスの設定処理を呼び 出す。【ソース1】【ソース2】  次に、特定した選択列をもとに、イン デックスを設定する。ここで「動的なコー ディングを行う」というポイントを思い 出してほしい。  コンポーネントの処理記述時、 TTRDBGrid に紐付くデータセットの Name や選択列に設定されるフィールド のFieldName は不明である。そのため、 自身を基準として、紐付くデータセット はDataSource.DataSet、選択列に設定さ れるフィールドはColumns.Items[FCoord. X-1].FieldName と表現する。  また、今回のIndex 定義は昇順/降順 を問わず、GRID_IDX と命名する。 TClientDataSet のAddIndex を利用し、 選択列のフィールドと昇順/降順を設定 する。昇順の場合、[ixCaseInsensitive]、 降順の場合、[ixDescending]を指定する。  後はIndexName にGRID_IDX を設定 することで、並び順の変更ができる。【ソー ス3】  なお、その他の処理の「変更前のイン デックス設定を退避/復元する」「選択列 のフォント色を変更する」については、 末尾の参考ソースを参照していただきた い。【ソース4】【ソース5】【ソース6】【ソー ス7】  では、コンポーネントへの機能追加が できたので、コンポーネントの再インス トール後に照会画面の動作を確認してみ よう。明細部のタイトルをダブルクリッ クするごとに、昇順や降順に明細データ の並び順が切り替わることが確認できる だろう。また、同様にTTRDBGrid を利 用している画面が他にもあれば、すべて の画面で並び順の変更が可能になる。【図 12】【図13】 4.まとめ  コンポーネントのカスタマイズと聞く と難しいイメージを抱くかもしれない が、処理手順を見ていただいたとおり、 カスタマイズコンポーネントのテンプ レートは簡単な操作で作成できる。また、 コンポーネントへの機能追加についても ポイントを押さえれば、比較的簡単に実 現できる。  一度、カスタマイズコンポーネントを 作成・機能追加すれば、そのコンポーネ ントを利用しているすべての画面で、追 加した機能が利用できるようになる。ま た、作成したコンポーネントは、他のユー ザーもインストールして利用が可能だ。 このようにコンポーネントのカスタマイ ズにより、Delphi/400 の開発効率を向 上できることが理解いただけただろう。  本稿で紹介したTTRDBGrid の「デー タの並び順を変更する」機能を参考にし て、コンポーネントのカスタマイズ、お よび独自の機能追加にぜひ挑戦してほし い。これらの技術情報がシステム開発の 助けとなれば幸いである。 M