2017-10-29 8 views
0

ダイアログモードで別のフォームを開くボタンがあるフォームがあります。それを開いたフォームに関する情報を含むダイアログフォームプロパティはありますか?私のようなもの。ソバフォームでは?私はそれを達成するために知っている唯一の方法は、OpenArgsを使用するのですが、...もっと厳格な何かのために何か提案ダイアログフォームの「親」フォームを参照

SMOKのため

感謝を願って。

+1

_OpenArgs_はかなり柔軟です。 Formsコレクションのフォーム名またはフォームインデックスを渡すことができます。 – Gustav

+0

プロパティはありません。オプションはOpenArgs、グローバル変数、TempVars、ダイアログフォーム上のテキストボックスの値を設定します。 – June7

答えて

1

同じフォームの複数のバリアントを開いていない限り、Formsコレクションは通常の方法です(Gustav氏)。

あなたは、このようなフォームオブジェクトにアクセスすることができます変数を参照する他の方法の負荷があります

Forms!ParentformName.Form

を、June7は、最も一般的なものを指摘しました。

Public Parentform As Form 

メインフォームの場合:私は、サブフォームオブジェクトsubfromで

でグローバル変数を好む

Private Sub OpenForm 
    DoCmd.OpenForm "myForm" 
    Forms!myForm.Parentform = Me.Form 
End Sub 

または、メインに依存のダイアログフォームを開くには形式:

Private dialogForm As Form 
Private Sub OpenForm 
    Set dialogForm = New Form_myForm 
    dialogForm.Parentform = Me.Form 
    dialogForm.SetFocus 
End Sub 

最後のappr oachには、ダイアログフォームの複数のインスタンスをサポートするなど、いくつかの利点があります(特に、Private dialogForm As FormPrivate WithEvents dialogForm As Formに変更すると、ダイアログボックスが閉じたときに検出できます。ダイアログボックスを開き、メインフォームなどでそれらを処理します。 dialogFormにフォームモジュールが必要です。

+0

件名の幅広い説明をありがとうございます。もう1つの質問ですが、最後のアプローチ(「新しい」キーワードを使用)を使用してフォームとしてダイアログを開くことは可能ですか? – Smok

+1

@Smok私が知っている限りではありませんが、常にPopUp'プロパティを 'True'に設定すれば、常にそのように開くことができます。ただし、フォームがデザインビューでない限り、読み取り専用なので、開いたときに変更することはできません。 –

関連する問題