以前に Access で作成したPrivate WithEvents frmFormulary As Form
プロパティ セットを介してフォーム オブジェクトを受け取るフォーム タイプのプライベート変数を持つクラスを作成しました。Public Property Set Formulary(frmForm As Form)
このクラスのオブジェクトをインスタンス化するとき、Access で既に作成され、実際には閉じられているこのフォームをこのオブジェクトに渡し、このフォームをクラスのプライベート変数に保存しDoCmd.OpenForm "formName"
ます。それを可能にしようとしてPublic Sub ShowForm()
、命令でクラス内に Sub を作成しましたがfrmFormulary.Visible = True
、失敗しました。このメソッドを実行すると、アプリケーションは単に停止します。DoCmd.OpenForm "formName"
パラメータで渡されたフォームオブジェクト自体を使用せずにこのフォームをロードするにはどうすればよいですか?
1027 次
1 に答える
0
リクエストに応じて、サンプル コードを見つけてください。
これはクラス clsForm コードです:
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private WithEvents frmFormulary As Form
Public Event OpenForm(Cancel As Integer)
Public Event LoadForm()
Public Event UnloadForm(Cancel As Integer)
Public Event CloseForm()
Public Property Set Formulary(frmForm As Form)
Set frmFormulary = frmForm
frmFormulary.OnOpen = "[Event Procedure]"
frmFormulary.OnLoad = "[Event Procedure]"
frmFormulary.OnUnload = "[Event Procedure]"
frmFormulary.OnClose = "[Event Procedure]"
End Property
Public Sub ShowForm()
frmFormulary.Visible = True
End Sub
Private Sub frmFormulary_Open(Cancel As Integer)
RaiseEvent OpenForm(Cancel)
MsgBox "Event Open from clsFormulary class"
End Sub
Private Sub frmFormulary_Load()
RaiseEvent LoadForm
End Sub
Private Sub frmFormulary_Unload(Cancel As Integer)
RaiseEvent UnloadForm(Cancel)
End Sub
Private Sub frmFormulary_Close()
RaiseEvent CloseForm
End Sub
Private Sub Class_Terminate()
Set frmFormulary = Nothing
End Sub
----------------------------------------------------------------------------------------
これはフォームコードです:
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private Sub btnTeste_Click()
On Error GoTo TreatError
Dim objScreen As clsFormulary
Set objScreen = New clsFormulary
objScreen.Formulary (Application.CurrentProject.AllForms("frmScreenTest"))
objScreen.ShowForm
ExitError:
'Set objScreen = Nothing
Exit Sub
TreatError:
Resume ExitError
End Sub
----------------------------------------------------------------------------------------
ありがとう。
于 2013-08-21T18:35:24.377 に答える