プログラムを作っていて メニュー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
全機能に「リフレッシュボタン」なるものが存在し、処理フォームの
レイアウトが常に同一ならば、その「リフレッシュボタン」を処理フォーム上の
下部などに設置すればユーザーコントロールは作成するだけで位置を
調整してあげる必要ない感じですね。
お礼が遅くなりました 色々やってみて
テスト環境で それとなくできるようになりました
これで少しメドが立ちました 大変助かりました
ありがとうございます。<(_ _)>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
メッセージボックスのボタン名変更
-
VBSの処理中一旦処理を止めて再...
-
VBSで応答不要のメッセージボッ...
-
B列に特定の文字列が入っている...
-
[VC++] AfxBeginThreadで生成し...
-
VBA メッセージボックスを自動...
-
VBA、UserFormを前面に出力して...
-
起動後直に実行するコードはど...
-
【C#】 あるイベントから別イ...
-
<input type="file">タグで「キ...
-
OSシャットダウン時の常駐アプ...
-
access 確認メッセージのはい/...
-
「キャンセル」ボタン付きの処...
-
Excel VBA で処理中断(DoEvents...
-
VB.NETで数秒間msgboxの...
-
ACCESS側からEXCELの書式を設定...
-
ASP VBScriptでスクリプト実行...
-
メッセージBOXの「はい」「いい...
-
VBA kernel32 の意味
-
vb.netでバッチ処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBSの処理中一旦処理を止めて再...
-
VBSで応答不要のメッセージボッ...
-
メッセージボックスのボタン名変更
-
VBA kernel32 の意味
-
ACCESS側からEXCELの書式を設定...
-
VBA メッセージボックスを自動...
-
ASP.NETでのメッセージ画面を出...
-
エクセルVBAでクリップボード内...
-
VBA、UserFormを前面に出力して...
-
【C#】 あるイベントから別イ...
-
Application.ScreenUpdating=Fa...
-
「キャンセル」ボタン付きの処...
-
VCでウエイトをミリ秒でかけ...
-
<input type="file">タグで「キ...
-
Excel VBA 自動的に閉じるMsgBox
-
ASP VBScriptでスクリプト実行...
-
Timerのカウントダウンのしかた...
-
スロットゲームのプログラミング
-
手動かプログラムでの起動かの判断
-
PostMessageの連続送信
おすすめ情報