
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する方法がありましたら
教えてください。
No.2ベストアンサー
- 回答日時:
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
を書く手段もあります。
ちなみに、テキストボックスなどの最初から配置されているコントロールだけをアンロードする方法はありません。
回答ありがとうございます。
ご指摘の通り、Form1のUnload(QueryUnload)イベントにEndを記述していました。
このせいでプログラムが終了してしまったのですか?
これを消して
Form2.show
Unload Form1
としたところ、やりたかった結果が出ました。
ちなみにForm2のForm_Loadイベントに Unload Form1 …という方法も
試したのですが、値の再表示が出来ませんでした。
後でまた書く位置などを変えて試してみます。
色々ていねいにありがとうございました。
また機会がありましたら教えてください(ペコリ)。
No.3
- 回答日時:
lovelypoohさんこんにちは。
まずzerosixさんの回答の補足なのですが、
これは、
call FormXXX.show(vbMoval)
ではなく、
call FormXXX.show(vbModal)
が正解です。(これはShowメソッドを調べると載ってます)
vbModalをつけると、
呼び出し元のフォ-ムは呼び出したフォ-ムを閉じないとつつけなくなります。
もし、Form1からForm2を呼び出した際にForm1を非表示にする必要がないなら、
Call Form2.show(vbModal)
で、Form2を表示し、Form2をUnloadするタイミングで、
変更内容をForm1に書き出せば、やりたいことは実現するのではないでしょうか。
vbModalの説明、ありがとうございます。
ややこしくしないためにFormは常に1枚だけ表示を・・・、と考えていたのですが
これを使えば問題なしってことですよね。
画面がパコパコ動くよりも、こっちの方が親切に思えます。
Form2で変更したiniファイルの内容をForm1で読み込み直す・・・というのが
どうしてもできなかったので(Unloadのタイミングが悪いのか、プログラムが終了するのです…)
saruruさんのアドバイス通り、Form2をhideする際に変更内容をForm1に直で書き出すようにしました。
何だかいい感じに動いております。
ありがとうございました。
また機会がありましたら教えてやってください(ペコリ)。
No.1
- 回答日時:
ちょっとあまり考えてませんが、
call FormXXX.show(vbMoval)
と記述してやってみてください。どうでしょうか?
この回答への補足
早速の回答ありがとうございます。
すみません、この記述はどこに書くのでしょうか?
Com1に
call Form1.show(vbMoval)
と書いてみましたところ、変数が宣言されていないとのことで
とりあえず
Dim vbMoval
とだけ書いて実行したところ、エラーは出ませんでしたが
Form1が表示されたままForm2が出て、変更後もForm1.textは変わっていませんでした。
このcall Form1.show(vbMoval)とはどんな役目をするのですか?
vbMovalって何ですか?(ヘルプでは該当なしと出ました)
何分素人なもので…。
よろしければまた教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
sendkeysにてALT+CTRL+INSERTを...
-
RPG パラメーターについて
-
VB上で実行中の無限ループの止め方
-
パソコンの演算速度について
-
アクセス[ファイルを開かずに、...
-
VBAで外部プログラムを非表示で...
-
C言語で途中までしか、プログラ...
-
Borland C++Builder6で、デバッ...
-
他の実行ファイルを実行するプ...
-
Excel VBA から外部プログラム...
-
秒数を数える(C言語)
-
初期化は、main関数の外で...
-
VB6とExitProcess
-
終了してもプログラムが実行し...
-
並列計算をしたときのシステム...
-
タスクマネージャーのプロセス...
-
C# シリアル通信でデータ受信...
-
ソケットのクローズについて
-
TCP/IP通信時のサーバーからの受信
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
パソコンの演算速度について
-
sendkeysにてALT+CTRL+INSERTを...
-
C言語で途中までしか、プログラ...
-
並列計算をしたときのシステム...
-
RPG パラメーターについて
-
実行時エラー429
-
vba GetAsyncKeyState関数について
-
VBAで外部プログラムを非表示で...
-
アクセス[ファイルを開かずに、...
-
Windows10でDOSゲーム
-
C言語でコマンドラインのカレン...
-
プリントスクリーンをプログラ...
-
timeEndPeriodを呼ばないと
-
VB6やVB.NETはコンパイル無しで...
-
システム資源とは?
-
VB上で実行中の無限ループの止め方
-
他の実行ファイルを実行するプ...
-
あるプログラム実行中に別のプ...
-
MACで動く実行ファイルをWindow...
おすすめ情報