フォームをまたいで配列を使うには?

解決


ドムドム  2004-06-24 21:19:34  No: 114273  IP: [192.*.*.*]

VB6なのですが、
メイン画面からウィザードの用にフォームを表示させ、そこで決めた数々の設定を配列に入れてメイン画面で処理させたいのですが、フォーム間での配列の受渡しをどうすれば良いのか判りません。

変数であればメイン画面で
「Public Data As Integer 」
などと宣言して、ウィザード画面で
「Main.Data = 10」
などと処理出来るのですが、配列を
「Public Data(10) As Integer 」
と宣言した時点でエラーとなってしまいます。

配列では無く、フォーム間で操作出来る方法があるのでしょうか?

編集 削除
みり  2004-06-24 21:24:15  No: 114274  IP: [192.*.*.*]

標準モジュールでPublic宣言した変数は、どのフォームからも
参照可能です

編集 削除
特攻隊長まるるう  2004-06-25 08:35:39  No: 114275  IP: [192.*.*.*]

関数の引数やプロパティで引き渡しても構いません。
(変数のスコープは最小限であるほうが良いとの観点から
むしろボクはこっちの手法を好んで使います。)

編集 削除
ドムドム  2004-06-25 10:24:38  No: 114276  IP: [192.*.*.*]

「みり」さん「特攻隊長」さん、返答ありがとうございます。

>標準モジュールでPublic宣言した変数は、どのフォームからも
>参照可能です

ありがとうございます。
とりあえずコレで行けました!!

>関数の引数やプロパティで引き渡しても構いません。

よく、Public宣言は出来るだけ使用しない方が良いとは
聞くのですが、(衝突などを防ぐ為?)
たとえば別のフォームから10個も20個もいろいろな変数(配列)
を参照し合う時も、引数を使うのですか?

今まで私は引数は1〜4個程しか使用する事が無かったので
引数を多くするとプログラムが把握し難くなる気がしてしまって…
もし、何か見やすい書き方があれば教えてください。

編集 削除
特攻隊長まるるう  2004-06-25 10:58:38  No: 114277  IP: [192.*.*.*]

>今まで私は引数は1〜4個程しか使用する事が無かったので
>引数を多くするとプログラムが把握し難くなる気がしてしまって…
>もし、何か見やすい書き方があれば教えてください。

状況によりますが…ボクの場合、基本的に大量のデータを扱う時って
データベースを使うことが多いので10個も20個もつねに保持する必要
がないです。まず、本当にそんな処理が必要なのか?設計を考え直す
必要があると思います。
で、方法としてはいくつかありますが、[VB6.0]なら Type ステートメント
なんかでユーザー定義型の入れ物を宣言してやってその中に全部入れて
しまえば受け渡しは1つの変数で済みますね。

Public宣言が嫌いな理由はたくさんありますが、1つは壁の無い家の
ようなもので、どこからでも出入りできて便利だと思う人にとっては
便利でしょうが、プログラムの流れが全く分からなくなります。特に
他人のプログラムを解析する時に困ります。また、ユーザ権限によって
特定の処理を実行できなくしたい場合など、引数やプロパティといった
玄関と勝手口のような入口がはっきり決まっていればそこに鍵をかければ
すみますが、そもそも玄関どころか壁が無いのにどこに鍵をかければ
いいのか分かりません。メンテナンスや仕様変更に苦労します。だから
嫌いです。

編集 削除