使用CallByName“代替”模式窗口。
来源:互联网 发布:linux系统时间不对 编辑:程序博客网 时间:2024/05/31 18:56
模式窗口有时候用起来确实很方便,比如说增加一条资料的时候,弹出一个模式窗口,增加完成后继续执行下面的代码,有时候用来取得新增加的值,如:
...
frmClient.Show vbModal
If 增加成功 then
取得新值
End If
...
但是如果使用MDI窗口的话,就麻烦了,因为MDI子窗体不允许以模式窗口显示,所以用上面的方法就行不通了。
于是我使用CallByName加一个全局的变量来实现以上功能。
Private Type SelectInfos
blnAddNewReturn As Boolean ' 是否增加完后返回信息
frmSource As Form ' 源调用窗口
strFunctionName As String ' 当返回参数时要执行的函数/过程名称
End Type
Public guSelectInfos As SelectInfos ' 信息选择时用到
frmInfos
'// 注意一定要用Public的,否则在其他窗口里无法调用。
Public Sub LoadClientInfos(ByVal lngId as Long)
'加载客户信息
End Sub
Private Sub AddNew()
...
With guSelectInfos
.blnAddNewReturn = True
'// 设置源窗口
Set .frmSource = Me
'// 设置要调用的函数名称
.strFunctionName = "LoadClientInfos"
frmClient.Show
End With
...
End Sub
frmClient
Private Function UpdateClient()
...
'***************************************
'** 判断是否为其他窗口调用时的新增,如果是则需要返回当前编号
'***************************************
With guSelectInfos
If .blnAddNewReturn Then
'// 调用源窗口内的函数返回值
Call CallByName(.frmSource, .strFunctionName, VbMethod, lngID)
.blnAddNewReturn = False
End If
End With
'***************************************
...
End Function
大致过程就是这样,虽然有点麻烦,不过总算也是一种解决方法。
- 使用CallByName“代替”模式窗口。
- 使用Builder模式代替来创建实例
- 在数据窗口中使用ENTER键代替TAB键
- 模式窗口的使用
- CallByName 函数
- 代替模态窗口~~
- js 模式窗口的使用
- 窗口模式下使用DirectDraw
- js 模式窗口的使用
- js 模式窗口的使用
- div代替模态窗口
- 简单的CallByName
- 设计模式之 使用静态工厂模式代替构造函数(Java)
- .NET应用架构设计—适当使用活动记录模式代替领域模型模式
- SQL语句 使用...代替
- 使用MPOJO代替POJO
- 使用sudo代替su
- 使用parentNode 代替 parentElement
- 电脑操作最忌讳的18个小动作
- PyBurlap 0.1a实现
- 软件路由器经典十问,菜鸟入门必看。[激烈推荐]
- java.util.jar.Attributes.Name翻译
- Blog定位
- 使用CallByName“代替”模式窗口。
- 挡都挡不住十大臭名昭著电脑硬件
- [转][收藏]IT从业人员必看的10个论坛
- IT从业人员必看的10个论坛
- ASP.NET树控件,Microsoft.Web.UI.WebControls加载错误
- Java学习过程的一些重点
- 大学毕业必看!——关上宿舍的门,锁上这段回忆
- 电脑死机原因全集
- 92个经典开源项目集锦(包括URL)