Q99:自作のアプリケーションについての質問
Q99-1:
自作のアプリケーションについて、質問なのですけど、
1.複合コンポーネントと言うコンポーネンントがありますが、これを使うと、メモリを節約できるのでしょうか?
また、自作のアプリケーションのどの部分を複合にすればよいのでしょうか?
複合コンポーネントの考えは、処理は同じで、テーブルとかパネルを変えても、対応できるのでしょうか?
(自作の場合、在庫管理、工具管理、受注管理、のCSVファイルの入出力が同じですけど・・)
2.ツリーのコンポーネントで段取り管理を作成していますが、一番下の階層にファイルをくっつけて、呼出ししたいのですが、ファイル呼び出しできるのでしょうか?
3.CSVファイルの入力、出力のボタン、また 追加、削除、↑、↓ のボタンもテーブルごとにもたなければ、いけないのでしょうか?
A99-1:
>1.複合コンポーネントと言うコンポーネンントがありますが、これを使うと、メモリを節約できるのでしょうか?
また、自作のアプリケーションのどの部分を複合にすればよいのでしょうか?
複合コンポーネントの考えは、処理は同じで、テーブルとかパネルを変えても、対応できるのでしょうか?
(自作の場合、 在庫管理、工具管理、受注管理、のCSVファイルの入出力が同じですけど・・)
複合コンポーネントをご使用になっても、その使用自体でメモリを節約することはできません。複合コンポーネントを使用する目的は、大きく2つに分けられます。
1つは、独立性の高い機能をそれぞれ複合コンポーネントとすることで、全体の構造を把握しやすくすることです。お送りいただいたアプリケーションの場合、「在庫管理」や「工程管理」などの機能をそれぞれ複合コンポーネントとすることで、全体の構造が分かりやすくなるかと存じます。
もう1つは、いくつかの操作において利用される同じ機能を1つの複合コンポーネントとして作成し、それを共通利用することで冗長な構造となることを避けるというものです。例えば、CSVファイルの入出力機能が共通ということであれば、その機能を「在庫管理」や「工程管理」などで個別に作るよりも、無駄を省くことができます。この場合、重複した機能を作らずに済むためにファイルサイズもその分小さくなり、メモリの消費量も少なくなります。
>2.ツリーのコンポーネントで段取り管理を作成していますが、一番下の階層にファイルをくっつけて、呼出ししたいのですが、ファイル呼び出しできるのでしょうか?
ツリーの末端のノード名をファイル名(ファイルのフルパス名)とすれば、ファイルコンポーネントを用いてそのファイルにアクセスすることができます。「ファイル呼び出し」が何を意味するのかが不明ですが、「標準のアプリケーションでファイルを開く」(*.docファイルはWordで、*.xlsファイルはExcelで開く)という意味であれば、外部プログラム通信コンポーネントの「標準のアプリケーションでファイルを開く(File)」メソッドで行うことができます。
外部プログラム通信コンポーネントは、ビルダー上右クリックで表示されるメニューから、[コンポーネント追加]-[処理部品]-[ユーティリティ]-[外部プログラム通信]と選択することで追加されます。
> 3.CSVファイルの入力、出力のボタン、また 追加、削除、↑、↓ のボタンもテーブルごとにもたなければ、いけないのでしょうか?
どのテーブルでも使用するような、行追加、行削除、行移動のための操作ボタンを共通化するには、コンポーネント格納変数を利用します。コンポーネント格納変数はコンポーネントそのもの(例えばテーブルコンポーネント)を設定して、その設定されたコンポーネントに対する操作を行うものです。設定するコンポーネントを必要に応じて切り替えることで、同じ操作ボタンから異なるコンポーネントを操作することができるようになります(もっとも、コンポーネント格納変数は他のコンポーネントに比べて使い方が分かりにくいので、慣れるまで時間が掛かるかもしれません)。
ただし、お送りいただいたアプリケーションのように、「在庫管理」や「工具管理」などのテーブルがそれぞれ異なるフレーム上に表示されるような構成の場合、追加、削除、↑、↓などのボタンを共通化することが適切かどうかは疑問です。
これらのボタンは、それぞれのテーブルと同じフレーム上に表示することが、操作上は望ましいように思われます。同一のボタンを異なるフレーム上に配置することはできませんので、各テーブルごとに対応する追加、削除、↑、↓などのボタンを作成することになります。
CSVファイルの入出力につきましては、ファイルの入出力自体は共通化できると思います。ただし、読み込んだファイルデータを「在庫管理」や「工具管理」等のどのテーブルに設定するかは何らかの形で指定する必要があります。それが「在庫管理CSVファイル読込」などのボタンクリックであるのか、あるいはコンボボックスやリストから「在庫管理」などの項目を選択することにして「CSVファイル読込」ボタンは共通化するのか、などの違いはあり得ますが、いずれにせよ、それぞれのテーブルに依存した部分は残ることになります。
備考:「1.」は「複合」の「Q&A13」にも掲載。