プログラム終了時に「データを保存しています...」のような画面を出すには?


A字B字  2009-02-26 23:50:13  No: 141568

こんにちは。
よく、プログラムを終了するときに、「データを保存しています...」のような横長の画面が表示されるものがありますが、
これと同じようなことをやりたいと思っています。
例えば以下のような流れです。
(1)ユーザが終了ボタンをクリックする。
(2)「データを保存しています...」の画面を表示する。
(3)データ保存等、後処理を行う。
(4)上記(3)の処理が終わったら、(2)で表示した画面を閉じる。
(5)メイン画面を閉じて、終了。
ここで、以下について教えて頂けないでしょうか?
(1)「データを保存しています...」の画面は、どのように作成すればよいか?
      (例えば、フォームのどのプロパティを設定する必要があるか?)
(2)上記で作成したフォームをどのように開いて処理を行えばよいか?
ちなみに、開発環境はVB2008 Expressです。
よろしくお願いいたします。


特攻隊長まるるう  2009-02-27 00:13:04  No: 141569

>(1)「データを保存しています...」の画面は、どのように作成すればよいか?
>      (例えば、フォームのどのプロパティを設定する必要があるか?)
他のフォームと同じです。今まで設定していたプロパティで、同じ動きにしたい
プロパティがあるなら同じ値に設定してください。貴方が望まないなら設定する
必要はありません。

>(2)上記で作成したフォームをどのように開いて処理を行えばよいか?
上記の(1)〜(5)の順でプログラムコードを書けば、書いたように
処理できます。各ステップコードが分からないならVB入門本を買って読んで
調べてください。


A字B字  2009-02-27 01:33:53  No: 141570

まるるうさん、ご回答ありがとうございます。
早速、フォームFormTestというものを作り、以下のようにしてみました。

'終了時の処理
FormTest.Show()

'ここに終了時処理を入れる
'    ・
'    ・
'    ・

'終了処理の完了
FormTest.Close()
Me.Close()

しかし、フォームFormTest上にはメッセージ表示用のラベルが貼ってあるのですが、
フォームFormTestが表示されると、ラベルの部分が白ぬきになっており、また、
ラベルのテキストも表示されません。
どうすればこのラベルが正しく表示されるのでしょうか?
よろしくお願いいたします。


特攻隊長まるるう  2009-02-27 02:42:53  No: 141571

> しかし、フォームFormTest上にはメッセージ表示用のラベルが貼ってあるのですが、
> フォームFormTestが表示されると、ラベルの部分が白ぬきになっており、また、
> ラベルのテキストも表示されません。
ラベルの値はセットされていますが、画面の再描画処理が後回しにされている状態です。
一般にプログラムの処理中は画面の描画処理が保留されます。重いプログラムを実行して
ウィンドウを移動させると処理終了まで白抜きになることってよくありますよね?

過去ログ検索『再描画』でたくさん情報が見つかりますが、表示更新したいコントロール
の Refresh メソッドを実行してみてください。
[参考]
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200608/06080034.txt


A字B字  2009-02-27 18:41:29  No: 141572

まるるうさん、ご回答ありがとうございます。
早速、該当フォームをShow()した後に、該当フォームのRefresh()を行ったところ、
このフォーム内のラベルが表示されました。
しかし、このフォームを開いて処理を行っている最中、表示されているこのフォームをクリックしたり移動させようとしたりすると、
(1)フォームの表示がおかしくなる
  このフォームのControlBoxプロパティはFalseです。
  最初は長方形のフォームが表示されるのですが、(確認したOSはVistaなので)
  丸角のヘッダが表示されたりして、ラベルの内容がフォームの下に追いやられます。
(2)タスクバーにこのフォームの情報が表示されてしまう。
  このフォームのShowInTaskBarプロパティはFalseです。
  最初はタスクバーにフォームの情報は表示されないのですが、(1)の状態になると
  タスクバーにこのフォームの情報が表示されてしまいます。
これらはどのように対処すればよいでしょうか?
よろしくお願いします。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加