|
前頁からの続きです。
プロジェクト作成については述べましたのでここでは次のステップ・図面等の工程表作成、図面等の作成、について考えます。プロジェクト内に図面以外のもの、例えば、文書ファイルや表計算データ、画像ファイル等を扱う場合、工程表云々以前に先に作ってしまう/既存のものがある場合もあると思います。そのため工程表を先に作らないといけない、という制約を付けると現実的に使いにくくなる場合もあると思いますし、全てのものについて検図・承認・出図をしないといけないという事も無いでしょうから、それらをしないと先に進めないという制約は掛けない事とします。
図面等は複数あるものとし、親子関係があるものと考えます。前回のファイル管理では、Windowsのエクスプローラのような、サブグループのツリー(画面左側)+ファイル一覧(画面右側)、という感じでしたが、ここでは、グループ・サブグループという入れ物を用意してその中に、という扱いではなく、親の図面等の中に子の図面等がある、と考えて、画面左側はその親子関係を示すツリー=図面等の名称だけを表示するツリー=名称ツリーとし、画面右側はその指定した名称の情報表示・兄弟関係にあるものの一覧表示・兄弟関係にあるもののチャート表示を切り替える事が出来る画面、とします。
名称ツリーのデータテーブルを下記のようにします。「〜」の部分にはプロジェクトの登録番号が入るものとします。
テーブル「ZPRJ_〜」(TABLE5)
名前 | 変数名 | 内容 |
登録番号 | N | 整数 0,1,2,… 他と重複しない |
名称 | NAME | 文字(最大半角32文字) |
作成者 | MN | 整数 「MEMBER」の登録番号 |
親の登録番号 | PARENT_N | 整数 |
ツリーの一番上(ルート)は、プロジェクト名とし、登録番号=0、とします。前回ファイル管理の「GRP2_〜」とほぼ同じです。
まずは取りあえず、フォーム(Form10)を新規作成し、Caption、Font、Scaled、Colorの指定を行い、FormStyleをfsMDIChildにして、StatusBar、Panel(画面下部)、TreeView(画面左)、Splitter、の各コンポーネントを配置します。StatusBarは単に画面の大きさを変更しやすくする為に配置しています。不要であれば配置する必要はありません。SplitterはTreeViewの幅を変更するのに必要となります。
この状態で一旦保存します(Unit10.pas)。
MDIの子フォームで何画面も表示する可能性がありますからフォームを動的に生成し表示する必要がありますので、メニュー「プロジェクト」→「オプション」の[フォーム]内、Form10を自動作成の対象から選択可能なフォームへ移す必要があります。
次に、どの画面から上記の画面を開くのかを考えて、そのプログラムコードを記述します。ここでは、前頁の「プロジェクト一覧表示」及び「プロジェクトチャート表示」の画面下の[編集]ボタンの横に[詳細]ボタンを追加し、そこから開けるようにします。
画面右側には情報表示・一覧表示・チャート表示の切替表示を行いたいので、PageControlコンポーネントを配置し、AlignプロパティをalClient(残りの全画面)にします。タブ切替が出来るコンポーネントは他に TabControlがありますが、切り替える表示内容が全然別な場合には PageControl、切り替える表示内容が同じパターンの場合には TabControl、という違いがあります。ここでは切替表示内容が全く異なりますので PageControlを利用します。
PageControlの上で右クリックし、表示されるポップアップメニューの一番上にある「ページ新規作成」を行います。TabSheet1 が追加されますので、その Caption を「情報表示(&I)」とします。この画面を開いた時の初期状態はこのページとし、プロジェクトの情報(の一部)を表示し、ここでも編集出来るよう考慮に入れておきます。
ここまでのソースプログラムを圧縮しています。
各画面やプログラム内容は下記で確認して下さい。
|
フォーム(Form10)を開いた時に画面左側の名称ツリーを表示します。名称ツリーの一番上(ルート)はプロジェクト名としますので、プロジェクトテーブル「ZPROJECT」(TABLE4)から受け取った番号の情報を取得します。名称ツリーテーブルがあるかどうかをチェックして無ければ作成し、番号=0でプロジェクト名を追加します。もしプロジェクト名を変更した場合にはそれにも対応させます。
画面下部のPanel上に、前回のサブグループ同様、名称ツリーを作成するためのボタンを追加し、それぞれのプログラムコードを入力します。
また、ファイル名を指定してそれをそのまま名称として追加するためのボタンも追加します。前回のファイル管理とは異なり、ツリーはサブグループ(フォルダのようなもの)のツリーではなく、図面等を階層的に表現するための図面等の名称そのもののツリーですので、ファイル名を図面等の名称とする場合にはそれをそのままツリー表示させるようにします。
ここまでのソースプログラムを圧縮しています。
各画面やプログラム内容は下記で確認して下さい。
|
それでは各図面等の情報を格納するデータテーブルを決めます。「〜」の部分にはプロジェクトの登録番号が入るものとします。名称及び親子関係については先のテーブル「ZPRJ_〜」に記録していますのでそちらを参照します。N=0を除き、データ数は同じになり、1:1で対応する事になります。
図面情報テーブル「ZMN_〜」(TABLE6)
名前 | 変数名 | 内容 |
登録番号 | N | 整数 1,2,… 他と重複しない |
ファイル名 | FILE_NAME | 文字(最大半角255文字) |
パス名 | PATH_NAME | 文字(最大半角255文字) |
図番 | ZUMENN | 文字(最大半角80文字) |
表題 | MTITLE | 文字(最大半角80文字) |
副題 | STITLE | 文字(最大半角80文字) |
メモ1 | MEMO1 | 文字(最大半角80文字) |
メモ2 | MEMO2 | 文字(最大半角80文字) |
メモ3 | MEMO3 | 文字(最大半角80文字) |
製図者 | MN | 整数 「MEMBER」の登録番号 |
作成日付 | DDATE | 文字(半角8文字)yyyymmdd形式 |
更新日付 | UDATE | 文字(半角8文字)yyyymmdd形式 |
検図者 | KN | 整数 「MEMBER」の登録番号 |
検図日付 | KDATE | 文字(半角8文字)yyyymmdd形式 |
承認者 | AN | 整数 「MEMBER」の登録番号 |
承認日付 | ADATE | 文字(半角8文字)yyyymmdd形式 |
出図者 | PN | 整数 「MEMBER」の登録番号 |
出図日付 | PDATE | 文字(半角8文字)yyyymmdd形式 |
改訂者 | RN | 整数 「MEMBER」の登録番号 |
改訂日付 | RDATE | 文字(半角8文字)yyyymmdd形式 |
ここで名称を作成した作成者と製図者は違う人になる可能性も高いので別に指定出来るようにしておきます。作成日付は製図を開始した日付、更新日付は製図を最終更新した日付、とします。
実際は、検図・承認等は、メンバー毎に権限/セキュリティ(暗号等)を指定して、その権限に該当する人だけが行う事が出来る、という具合になるのでしょうけれども、このプログラムではそこまで行っておりません。
改訂についてここでは最終だけを記述するようにして、改訂履歴については別のデータテーブル「REV_〜」に登録するようにします。改訂内容を上記のテーブルに入れても良いのですが、改訂のないものもあれば十数回あるもの等もあるかもしれませんので例えば5項目など固定枠ではなかなか出来ませんし多く作ってしまうとデータが無駄に大きくなってしまいます。
改訂内容テーブル「REV_〜」(TABLE7)
名前 | 変数名 | 内容 |
登録番号 | N | 整数 1,2,3,… 他と重複しない |
図面番号 | ZN | 整数 「ZPRJ_」「ZMN_」登録番号 |
改訂内容 | CONT | 文字(最大半角80文字) |
改訂者 | RN | 整数 「MEMBER」の登録番号 |
改訂日付 | RDATE | 文字(半角8文字)yyyymmdd形式 |
それではテーブル内容が決まりましたので、テーブル作成を行う手続き DataTableMaking6、DataTableMaking7 を Unit1.pasに作成します。テーブル名・フィールド数の定数はこれまで同様 UnitV.pas に記述します。テーブルの作成は、名称ツリーテーブルと同じく、プロジェクト詳細画面(Unit10.pas)にて行います。名称ツリーで名称を作成/ファイル挿入をした時に図面情報テーブル「ZMN_〜」のデータ作成も行います。ファイル挿入をした際には、図面情報テーブルの
「ファイル名」(パス部分は除去しています)
「パス名」(ネットワークドライブは展開します;最後は「¥」で終わります)
「メモ1」(Jw_cad図面ファイルの場合にはそのメモ欄の内容が入ります)
「製図者」(PC利用者名が入ります)
「作成日付」(挿入ファイルのWindowsプロパティの作成日時の日付部)
「更新日付」(挿入ファイルのWindowsプロパティの更新日時の日付部)
を設定しています。また、名称ツリーで名称を削除した時に図面情報テーブル「ZMN_〜」及び履歴内容テーブル「REV_〜」のデータ削除も行います。
名称ツリーをクリックしたら画面右側の情報表示頁にその内容を表示し、編集登録出来るようにします。名称ツリーの一番上(ルート)をクリックした場合にはプロジェクト内容を表示出来るようにしますが、ベースは上記の図面情報テーブルのデータなので完全一致しませんからそれなりに分かればいいという程度にしておきます。情報表示頁はそのままコンポーネントを配置すると画面が小さい時に見えなくなってしまいますので、スクロールバーで画面を見えるようにします。TabSheet1の上に[Additional]内のScrollBoxを配置し Align を alClientにします。更にその上に Panel を配置し、その上に各コンポーネントを配置します。
ボタンをクリックした場合のイベント処理コードは
まだ何もしていませんが取りあえずここまでの
ソースプログラムを圧縮しています。
各画面やプログラム内容は下記で確認して下さい。
|
それでは各ボタン等のイベント処理の実装を行っていきます。[参照]ボタンをクリックしたら「ファイルを開く」の画面を表示させてファイルを指定します。OpenDialog2 を作成するのも勿体ないので、OpenDialog1 を流用する事とします。大きな違いは、複数ファイルを選択出来るようにするか否かですのでその割り振りをします。[参照]ボタンでファイルを指定した場合、そのファイルの Windows 作成日付・更新日付を読み取るようにしています。Jw_cadファイルの場合のメモ取得は、メモ欄を自分で既に編集していると上書きされて困る場合もあるので、それは行っておりません。別途、メモ入力欄の右横に[取得]ボタンを配置し、それをクリックしたら Jw_cad ファイルの場合、Jw_cad ファイルからのメモ取得を行うようにしています。
日付入力欄では、ダブルクリックすると今日の日付をセットするようにしています。
[検図OK][承認OK][出図OK]の各ボタンは、検図者/承認者/出図者の指定を自分(PC利用者名)にセットし、日付を今日の日付にセットするためのボタンです。それぞれ名前の選択と日付指定を一度に行って省力化するためのものです。既に指定されている場合でも行えるので注意して下さい。[改訂OK]ボタンは、改訂履歴内容のデータを参照し、その改訂日付の最終の改訂者・改訂日付(最終の日付が複数ある場合は番号の一番大きいもの)をセットします。
改訂履歴欄の右横の[編集]ボタンは、改訂履歴内容を入力/編集する画面を表示し、登録編集を行うためのものです。その画面は別途、Form12(Unit12.pas)として作成し、ShowModal させるものとします。
この画面を閉じたら改訂履歴欄の内容を更新します。
[編集登録]ボタンをクリックしたら、このデータ内容を編集登録します。データの新規登録や削除は、名称の作成・削除にて行います。図面情報テーブルの登録番号の編集は出来ません。名称は、名称の編集にて行う事が出来ます。
この後は、ファイルの一覧表示及びチャート表示ですが、その前に、この情報表示画面から関連付けを利用してファイルを開けるようにします。[参照]ボタンの下に[開く]ボタンを追加しています。幾つか手法はありますが、uses節に ShellAPI を追加し、ShellExecute関数(WindowsAPIにある関数です)を利用する事にしています。また、C/S型データベースですから作業中に他のPCで内容が更新される場合もありますので、[更新]ボタンを付けるようにします。
[更新]ボタンをクリックすると、現在の入力欄内容はクリアされて画面も初期表示状態になりますので注意して下さい。
ここまでのソースプログラムを圧縮しています。
各画面やプログラム内容は下記で確認して下さい。
なお、他の箇所で追加した部分・ミスしていた
箇所の修正部分が含まれていますので古いソースを
参照する場合には注意して下さい。
|
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
シェアウェア
Script!World
データベース
A B C D
E F G H
I J K L
M N O P
Q R S T
U V W X
Y Z
|