VB6でフォームをリロードする方法

このQ&Aのポイント
  • VB6でフォームをリロードする方法を教えてください。メニューFORMと処理FORMがあり、連続して処理する際にメニューに戻るのが面倒です。
  • 現在、VB6のプログラムでメニューFORMと処理FORMを作成しています。処理FORMでの処理が終わった後、基本的にはメニューに戻りたいのですが、毎回メニューに戻るのは手間です。
  • VB6で処理FORMを表示させたときと同じ状態に戻したいのですが、フレームやテキストなどを戻すソースを書くのは面倒です。VB6でリロードまたはリフレッシュする方法を教えてください。
回答を見る
  • ベストアンサー

VB6でフォームをリロードしたい

プログラムを作っていて メニューFORMと処理FORMがあります。 処理ページでは色々な処理や表示を変えていき 処理が終わったあと 基本的にはメニューに戻るのですが。 連続して処理するときにいちいちメニューに戻るのが面倒なので 処理FORMを表示させたときと同じ状態にしようと思うのですが 色々なフレームやテキストなどを戻すソースを書くより いわゆるメニューからボタンを押して処理FORMを表示させたときのように やりたいのですが どのようにすればいいでしょうか? メニューFORMをSHOW して 処理FORM をアンロードして メニューFORMでタイマー処理か何かで自動的に 処理FORMを表示するコードを実行させる と言うようなことしか思いつきません。 これではどうもぱっとしないので リロードというかリフレッシュというか 色々見て なんかDim frm as New FormA と言うような物を使って やると良いようなことが書いてあったのですが、今ひとつその内容が 理解できず 困っています。 そう言った方法をご存じの方がいらっしゃいましたら教えてください よろしくお願いします。

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

  • ベストアンサー
回答No.1

どういうフォームの挙動をしているのか分かりませんが、イメージで。 ・Menu(メニューフォーム) ・Process(処理フォーム) とあった時、処理フォームを汎用的に利用させます。 たとえば「ABC登録機能」なるものが存在した場合 それに特化するユーザーコントロールを作成します。 つまり処理フォームと呼ばれるのは、機能を表示する為だけの インターフェース的役割を担います。 ・AbilityAbcRegister(ABC登録機能用ユーザーコントロール) それを処理フォーム上で動的にオブジェクトを生成して利用させます。 VB6でそういうのが出来るのかわからなかったので試しにやっちゃってしまいました。 【Process(Command1、Command2が存在)】 Private Const USER_CONTROL_NAME As String = "UserControl" '作成契機 'メニューで指定された機能を生成(テスト的にとりあえずなんか作成) '違いがわかるように表示位置を変更 Private Sub Command1_Click()   createUserControl("AbilityAbcRegister").Left = 500 End Sub 'リフレッシュボタン Private Sub Command2_Click()   Dim pControl As control   'ユーザーコントロールが存在する場合は削除   Set pControl = findControl(USER_CONTROL_NAME)   If Not pControl Is Nothing Then     Call createUserControl(TypeName(pControl))   End If End Sub 'ユーザーコントロールの作成 Private Function createUserControl(controlName As String) As control   Dim pControl As control   Dim pUserControl As control   Set pUserControl = Nothing   'ユーザーコントロールが存在する場合は削除   Set pControl = findControl(USER_CONTROL_NAME)   If Not pControl Is Nothing Then     Call Me.Controls.Remove(pControl.Name)   End If   'ユーザーコントロールの追加   Set pUserControl = Me.Controls.Add(App.EXEName & "." & controlName, USER_CONTROL_NAME)   pUserControl.Visible = True   Set createUserControl = pUserControl End Function 'ユーザーコントロールの検索 Private Function findControl(controlName As String) As control   Dim pControl As control   Set findControl = Nothing   'ユーザーコントロールが存在する場合は削除   For Each pControl In Me.Controls     If StrComp(pControl.Name, controlName) = 0 Then       Set findControl = pControl       Exit For     End If   Next End Function 【AbilityAbcRegister(Command1、Text1が存在)】 Private Sub Command1_Click()   MsgBox "aaa" End Sub 全機能に「リフレッシュボタン」なるものが存在し、処理フォームの レイアウトが常に同一ならば、その「リフレッシュボタン」を処理フォーム上の 下部などに設置すればユーザーコントロールは作成するだけで位置を 調整してあげる必要ない感じですね。

umadura4747
質問者

お礼

お礼が遅くなりました 色々やってみて テスト環境で それとなくできるようになりました これで少しメドが立ちました 大変助かりました ありがとうございます。<(_ _)>

関連するQ&A

  • フォーム2を出して フォーム1を閉じたい

    のですが、うまくできません。 何が間違っているのでしょうか Dim WithEvents Frm1 As Form1 Dim WithEvents Frm2 As Form2 ------------------- Frm2 = New Form2() Frm2.Show() Frm1 = New Form1() Frm1.Close() ------------------ net です。

  • VB2005 複数のフォームを同時に開く方法

    独学でVBを勉強している者です。 どうしてもわからないことがあるので、教えて下さい。 作ろうとしているのは、あるボタンを押すと、 別々のフォームが同時に開く処理なんですけど、上手くいかないんです。 dim A as new FormA dim B as new FormB A.show() B.show() のようにしても、 FormA.show() FormB.show() としても、 FormBしか画面に表示されないんです。 FormAのほうはタスクバーにだけ表示されます。 いろいろ調べたのですが原因がさっぱりわからないので、 もしお分かりの方がいたらヒントだけでも教えて下さい。 宜しくお願い致します。

  • VB.netで標準モジュールからフォームを呼び出す

    お世話になります。 標準モジュールから以下のようにフォームを呼び出しているんですがうまく表示されません。 どこが悪いんですか? 標準モジュール内----------------------   Public Sub Main()     Dim frm1 As New Form1     frm1.Show()   End Sub

  • VB2005で、フォームを初期化したいのですが、教えてください。

    VB2005で、フォームを初期化したいのですが、教えてください。 VB2005で、フォームにデータベース内容(ORACLE)を表示するプログラムを作っています。その際、F8キーを押すと画面内容(テキストボックスやDatagridviewの編集内容)を初期ロード状態に戻すようにしたいと思い、F8キー押下時のイベントに、以下のようにプログラムしました。 dim frm as form frm = new form1 me.close frm.show() としてみましたが、me.closeで、プログラムが終了してしまうようです。 どうするのが適切かお教えください。

  • VBの各種フォーム表示について

    ご質問です。フォームに関してですが、各種フォーム表示について 疑問があります。 まずFrom2には Dim frm2 As New Form2 frm2.Show() 等で表示する事が可能ですが、 "Explorer1.vb","LoginForm1.vb","AboutBox1.vb","TextFile1.txt" "Dialog1.vb"等の表示はどの様なコードですか? googleで検索しているものの、1ヶ月経ち全然見つかりません。 是非お教え下さい。 (VB2008使用)

  • vb2010で2つのフォームを同時制御

    vb2010でプロジェクトを作成しています。 Form1がメインで、Form2を観客用に用意しています。 Form1のButton1をクリックすると、Form2のPictureBox1に画像を表示させたく、 下のようなプログラムを書いたのですが、Form2に画像が表示されないばかりか、 「オブジェクト参照がオブジェクトインスタンスに設定されていません。」というエラーまではかれてしまいます。このエラーの意味もわからないほど、素人なのでわかる方どうかよろしくお願いします。 ------------------------------------------------------------------------------ Private Sub Form1_Load Dim g As New Form2 g.Show() ------------------------------------------------------------------------------ Private Sub Button1_Click Form2.PictureBox1.Image = Image.FromFile("C/xxxxxxx.png") Form2.Refresh() ------------------------------------------------------------------------------

  • 別フォームの呼び出し

    6.0でやってます。 form1からform2を呼び出す時、Command1_Clickの処理内で Set FORM = New form2 Call FORM.Show と書いて、form2が呼び出されたらYesNoメッセージボックスを表示し、 Yesを押したらform1のPublicプロシージャに飛んでからform2をUnloadし、Noだったらform2をUnloadするプログラムを作りたいのですが、クリックするとform2が表示されずに、メッセージボックスだけが表示されて、YesNoを選択した後でform2が表示されてしまいます。 それに、Call FORM.Showの処理に行くと、"既にアンロードされています"といったエラーが出ます。 書く順番がおかしいのでしょうか? *****form1のコード******* Private Sub Command1_Click() Set FORM = New form2 Call FORM.Show End Sub Public sub aaa() (処理) End Sub *****form2のコード****** Private Sub Form_Load() msg = MsgBox("戻りますか??", 4, "確認メッセージ") If msg = vbYes Then Form1.aaa Unload Me Else Unload Me End If

  • VB.NETでフォーム間でのコントロールの参照

    VB.NETでフォーム間でのコントロールの参照が うまくいかず困っています Windows フォーム Form1とForm2があります Form1にはリストビュー(name:ListView1)を配置しています Form1_LoadイベントでListView1にアイテムを追加します Form2を表示し、Form1のListView1のアイテム数を、 取得しようとすると 0 になってしまします どうすればForm2から取得できるのでしょうか? 次のように書いています Form1_Load イベント内 ListView1.Items.Add("Item1") ListView1.Items.Add("Item2") ListView1.Items.Add("Item3") MessageBox.Show(CStr(ListView1.Items.Count), "Form1") Dim Form2 As New Form2() Form2.Show() Form2_Load イベント内 Dim Form1 As New Form1() MessageBox.Show(CStr(Form1.ListView1.Items.Count), "Form2")

  • vbモーダルについて

    VB6.0について質問です。 FormAからFormBをモーダルで開き、さらにFormBからFormDをモーダルで開く という一連の操作を行いたいのですがうまくいきません>< エラー内容は、FromDを開く際にFormB内のデータが存在しなかったら FormDを表示せずにアンロードしたいのに表示されたままになってしまいます。 以下のコードで処理を行ってるのですがエラーのフラグを立ててアンロード処理を 行おうとしてもExitに移った瞬間にプログラムが終了してしまいます。 FormDをモーダレスで開くとアンロード処理まで普通に処理されます。 モーダルでアンロード処理までいくにはどのような処理を加えたらよいでしょうか? If i = 0 Then MsgBox "データありません。" Err_Flg = 1 Exit Sub End If ---------------------------- If Err_Flg = 1 Then Err_Flg = 0 Unload FormD End If

  • フォームが閉じれないのはなぜでしょう?(JBuilder)

    フレームAのボタンがクリックされた時に下記のように新しくフレームBを作成して表示したのですが、その新しいフレームBが画面右上の×ボタンをクリックしても終了されません。フレームAを終了させると同時にフレームBも終了されます。どうしてたら、フレームB単体で終了させれますか? あと、フレームBが表示されたときフレームAの後ろに表示されます。これをフレームAの上にフレームBを表示させることはできませんか? void btnA_mouseClicked(MouseEvent e) { Frame frm = new Frame(); frm.setVisible(true); frm.setSize(new Dimension(240, 320)); frm.setLocation(0,0); frm.setTitle("Title"); frm.setResizable(false); }

    • ベストアンサー
    • Java

専門家に質問してみよう