form操作

来源:百度文库 编辑:神马文学网 时间:2024/07/07 09:04:12
Public Function NewFormInstance(ByVal strFormKey As String) As Form
‘##BD 根据Form的关键字新建一个Form的实例
‘##PD strFormKey [I] 要新建的Form的关键字
‘##RD 返回对应的Form对象
Select Case strFormKey
Case STR_FORM_NEW_REQUESTOFCANCEL, STR_FORM_DEL_REQUESTOFCANCEL, STR_FORM_SND_REQUESTOFCANCEL
Set NewFormInstance = New frmRecallInHouse
Case STR_FORM_QUERYCURR, STR_FORM_QUERYCOUNTRY, STR_FORM_QUERYUNIT, STR_FORM_QUERYDUTYMODE, STR_FORM_QUERYNEWRATE, _
STR_FORM_QUERYDISTRICTCODE, STR_FORM_QUERYTRADEMODE, STR_FORM_QUERYTRAFMODE, STR_FORM_QUERYTRANSMODE, STR_FORM_QUERYCUTMODE, _
STR_FORM_QUERYIEPORT, STR_FORM_QUERYUSETO, STR_FORM_QUERYHSUNIT, STR_FORM_QUERYTAXTYPE, STR_FORM_QUERYPACKAGEMODE
Set NewFormInstance = New FrmSysCurrQuery
Case STR_FORM_SRCOUT, STR_FORM_SRCOUT_MODIFY
Set NewFormInstance = New frmOutSource
Case STR_FORM_PRODUCTDOMESTIC, STR_FORM_PRODUCTDOMESTIC_MODIFY
Set NewFormInstance = New frmProductDomesticDetail
Case STR_FORM_STUFFOUT, STR_FORM_STUFFOUT_MODIFY
Set NewFormInstance = New frmStuffOut
End Select
End Function
Public Function IsFormLoaded(ByRef frmIn As Form) As Boolean
‘##BD 判断一个Form是否已经Load了
‘##PD frm [I] 要判断的Form
‘##RD 已经Load返回True,没有Load返回False
Dim frm As Form
For Each frm In Forms
If frmIn Is frm Then
IsFormLoaded = True
Exit For
End If
Next
End Function
Public Function GetFormInstance(ByVal strFormKey As String) As Form
‘##BD 根据Form的关键字返回全局唯一的一个实例
‘##PD strFormKey [I] 关键字
‘##RD 返回全局唯一的一个Form实例,保证一个关键字由且只有一个实例存在
Dim frm As Form
If mclnGlobalForms Is Nothing Then
‘集合为空,初始化集合已用来保存Form的实例
Set mclnGlobalForms = New Collection
‘集合为空,肯定不存在该Form的任何实例
Set frm = NewFormInstance(strFormKey)
‘把对象加入到全局Form集合中
mclnGlobalForms.Add frm, strFormKey
Else
‘先判断是否已经有实例存在了
If ExistItem(strFormKey, mclnGlobalForms) Then
Set frm = mclnGlobalForms(strFormKey)
Else
‘不存在该Form的任何实例
Set frm = NewFormInstance(strFormKey)
‘把对象加入到全局Form集合中
mclnGlobalForms.Add frm, strFormKey
End If
End If
‘返回
Set GetFormInstance = frm
Set frm = Nothing
End Function
Public Function OpenForm(ByVal strFormKey As String)
‘##BD 根据Form的关键字显示对应的Form
‘##PD strFormKey [I] Form关键字
Dim frmInst As Form
‘先取得与strFormKey对应的唯一实例
Set frmInst = GetFormInstance(strFormKey)
‘判断Form是否已经Load了,如果已经Load,直接显示即可
If IsFormLoaded(frmInst) Then
frmInst.Show
frmInst.SetFocus
Else
‘下面来根据不同的FormKey用不同的方式打开
frmInst.OpenForm strFormKey
End If
‘释放对对象的引用
Set frmInst = Nothing
End Function
Public Function OpenFormWithString(ByVal strFormKey As String, Optional strPara As String)
‘##BD 根据Form的关键字显示对应的Form
‘##PD strFormKey [I] Form关键字
‘##PD strPara [I] 传递给form的参数
Dim frmInst As Form
‘先取得与strFormKey对应的唯一实例
Set frmInst = GetFormInstance(strFormKey)
‘判断Form是否已经Load了,如果已经Load,直接显示即可
If IsFormLoaded(frmInst) Then
frmInst.Show
frmInst.SetFocus
Else
‘strPara是form打开需要的参数
frmInst.OpenForm strFormKey, strPara
End If
‘释放对对象的引用
Set frmInst = Nothing
End Function
Public Function ReleaseForm(ByVal strFormKey As String)
‘##BD 根据Form的关键字释放对应的Form
‘##PD strFormKey [I] Form关键字
Dim frmInst As Form
‘先取得与strFormKey对应的唯一实例
If ExistItem(strFormKey, mclnGlobalForms) Then
Set frmInst = mclnGlobalForms(strFormKey)
‘判断Form是否已经Load了,如果已经Load,直接显示即可
If IsFormLoaded(frmInst) Then
Unload frmInst
End If
End If
‘释放对对象的引用
Set frmInst = Nothing
End Function
s