FORMモジュールの自動複製

解決


そら  2004-11-12 14:09:48  No: 117563  IP: [192.*.*.*]

FORMモジュールを追加したい場合、手動でメニューのフォームモジュールの追加を
選択し、追加します。
プログラム上でFORMモジュールの複製を行いたいのですが、
そのようなことはできるのでしょうか?
ご教授願います。

編集 削除
raki  URL  2004-11-12 14:40:13  No: 117564  IP: [192.*.*.*]

フォームもクラスですから、複製は可能です。
例えば、Form1とForm2があるとして、
Form1にはボタンが一つあるとします。

Form1のボタンクリックイベントに以下のように記述してください。

Dim f As Form2
Set f = New Form2
f.Show

これでForm1のボタンを押せば、押した数だけForm2が開きます。
が、これでは実用するには問題があるので、
Dim f As Form2
を関数外へ出すなり標準モジュール内で宣言するなり、
御自身で改良してください。

編集 削除
そら  2004-11-12 16:47:00  No: 117565  IP: [192.*.*.*]

ありがとうございます。
早速やってみます。

ちなみにForm2を用意せずに
Form1のボタンをクリックした際にForm2が
表示されるということはできますでしょうか?

編集 削除
raki  URL  2004-11-12 17:28:34  No: 117566  IP: [192.*.*.*]

> ちなみにForm2を用意せずに
用意せずというのは、デザインモード(デバッグ環境)で
Form2を定義(追加)しない状態で、
コードでForm2を1から作成して
Form2を表示する、ということですか?

それでしたら、無理なはずです。
つまり、
Dim f As Form2
というのは、Form2型のForm変数を使いますよ、という宣言なので、
プロジェクトにForm1しかない状態で
  Dim f As Form2
とは出来ませんし、
仮に
  Dim f As Form
としたとて、
  Set f As New Form
とは出来ないはずですから。
  Dim f As New Form
も同じく出来ません。

#VB.NETなら出来ますが

編集 削除
そら  2004-11-25 10:16:38  No: 117567  IP: [192.*.*.*]

有難う御座いました。
VB.NETからはできるんですね。

編集 削除
Say  2004-11-25 12:45:31  No: 117568  IP: [192.*.*.*]

VB6でもやろうと思えばできなくもないですが・・・。

[方法1]Form1のインスタンスを作って、Form2のフリをする。(難易度低)
[方法2]CreateWindowで全部自前で作る。(難易度中)

編集 削除