OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

unloadの使い方

  • 困ってます
  • 質問No.203801
  • 閲覧数264
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 76% (55/72)

iniファイルの内容を読み込んで表示・書き換え・再表示をする
ミニプログラムを作っています。

(1)Form1でiniファイルの内容をForm1.textに表示させる。
(2)Com1でForm2に遷移。
(3)Form2.textに書き換え内容を入力、Com2で書き換え、Form1に遷移。

Form1.textには書き換えられた内容が表示されている…という結果を出したいのですが、
Com1に
   Form2.show
   Form1.hide
と書いていた為、値の再表示が出来ませんでした。
そこで
   Unload Form1
   Form2.show
と書いてみると、プログラムが終わってしまいました・・・。
順序を逆にしても同じ結果です。

Form1.textだけ、もしくはForm1全体を
プログラムを終了させることなくunloadする方法がありましたら
教えてください。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 40% (230/562)

vbMoval は vbModalの間違いです。

Form2.Show vbModal

と書くと、Form1は終了したり非表示になったりはしませんが、Form2を閉じるまでは、Form1を触ってもまったく反応しないようになります。

Form2.show
Form1.hide

と書いても、それ以降のコードは実行されますよ。

Form2.show
Unload Form1

と書くと、それ以降のコードは実行されません。
が、Form2が先にロードされるのでプログラムが終了することはありません。
これでももし終了してしまうとしたら、Form_UnloadイベントにEndステートメントが記述されていないか確かめてください。

もしくは、Form2のForm_Loadイベントで

Unload Form1

を書く手段もあります。
ちなみに、テキストボックスなどの最初から配置されているコントロールだけをアンロードする方法はありません。
お礼コメント
lovelypooh

お礼率 76% (55/72)

回答ありがとうございます。
ご指摘の通り、Form1のUnload(QueryUnload)イベントにEndを記述していました。
このせいでプログラムが終了してしまったのですか?
これを消して
   Form2.show
   Unload Form1
としたところ、やりたかった結果が出ました。

ちなみにForm2のForm_Loadイベントに Unload Form1 …という方法も
試したのですが、値の再表示が出来ませんでした。
後でまた書く位置などを変えて試してみます。

色々ていねいにありがとうございました。
また機会がありましたら教えてください(ペコリ)。
投稿日時 - 2002-01-23 12:07:26
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル10

ベストアンサー率 31% (47/149)

ちょっとあまり考えてませんが、 call FormXXX.show(vbMoval) と記述してやってみてください。どうでしょうか? ...続きを読む
ちょっとあまり考えてませんが、
call FormXXX.show(vbMoval)
と記述してやってみてください。どうでしょうか?
補足コメント
lovelypooh

お礼率 76% (55/72)

早速の回答ありがとうございます。
すみません、この記述はどこに書くのでしょうか?
Com1に
   call Form1.show(vbMoval)
と書いてみましたところ、変数が宣言されていないとのことで
とりあえず
   Dim vbMoval
とだけ書いて実行したところ、エラーは出ませんでしたが
Form1が表示されたままForm2が出て、変更後もForm1.textは変わっていませんでした。

このcall Form1.show(vbMoval)とはどんな役目をするのですか?
vbMovalって何ですか?(ヘルプでは該当なしと出ました)
何分素人なもので…。
よろしければまた教えてください。
投稿日時 - 2002-01-23 11:18:08
  • 回答No.3
レベル7

ベストアンサー率 37% (3/8)

lovelypoohさんこんにちは。 まずzerosixさんの回答の補足なのですが、 これは、 call FormXXX.show(vbMoval) ではなく、 call FormXXX.show(vbModal) が正解です。(これはShowメソッドを調べると載ってます) vbModalをつけると、 呼び出し元のフォ-ムは呼び出したフォ-ムを閉じないとつつけなくなります。 ...続きを読む
lovelypoohさんこんにちは。

まずzerosixさんの回答の補足なのですが、

これは、
call FormXXX.show(vbMoval)
ではなく、
call FormXXX.show(vbModal)
が正解です。(これはShowメソッドを調べると載ってます)

vbModalをつけると、
呼び出し元のフォ-ムは呼び出したフォ-ムを閉じないとつつけなくなります。
もし、Form1からForm2を呼び出した際にForm1を非表示にする必要がないなら、
Call Form2.show(vbModal)
で、Form2を表示し、Form2をUnloadするタイミングで、
変更内容をForm1に書き出せば、やりたいことは実現するのではないでしょうか。
お礼コメント
lovelypooh

お礼率 76% (55/72)

vbModalの説明、ありがとうございます。
ややこしくしないためにFormは常に1枚だけ表示を・・・、と考えていたのですが
これを使えば問題なしってことですよね。
画面がパコパコ動くよりも、こっちの方が親切に思えます。

Form2で変更したiniファイルの内容をForm1で読み込み直す・・・というのが
どうしてもできなかったので(Unloadのタイミングが悪いのか、プログラムが終了するのです…)
saruruさんのアドバイス通り、Form2をhideする際に変更内容をForm1に直で書き出すようにしました。
何だかいい感じに動いております。

ありがとうございました。
また機会がありましたら教えてやってください(ペコリ)。
投稿日時 - 2002-01-23 14:00:44
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ