使用CallByName“代替”模式窗口。

原创 2005年04月23日 19:25:00

  模式窗口有时候用起来确实很方便,比如说增加一条资料的时候,弹出一个模式窗口,增加完成后继续执行下面的代码,有时候用来取得新增加的值,如:

...
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

  大致过程就是这样,虽然有点麻烦,不过总算也是一种解决方法。

js 模式窗口的使用

因近期设计中用到,在此作个记录。 Javascript里面分模式对话框和非模式对话框,其实两者区别就是在对话框被关闭之前用户能否在同一页面的其他地方进行工作。比如“打开文件”对话框便是典型的模...
  • kyleing
  • kyleing
  • 2011年09月16日 13:39
  • 4999

VB 函数 CallByName 的一些用法 (函数动态调用,回调函数)

VB  函数  CallByName (函数动态调用,回调函数) 的一些用法 最近编程,要用到函数指针来动态地调用函数,在C 语言里很容易实现,用函数指针就行了。 VB里就没有这么方便了,查阅相关资料...

[设计模式]_[观察者模式在窗口之间消息传递的使用例子]

场景:多窗口之间的通讯,使用观察者模式来给观察者发送通知消息,让观察者及时响应信息,减少窗口之间包含其他窗口的引用,减少耦合。下面看一个模型图 上图:两个模式对话框和主窗口之间的关系,模式对...

jquery 弹出 div 模式窗口

  • 2016年04月05日 14:22
  • 671KB
  • 下载

非模式窗口

  • 2013年06月26日 18:55
  • 2.16MB
  • 下载

chrome以窗口模式运行(无地址栏与标签栏)

客户希望我们开发的不是一个B/S系统,而是一个客户端应用。 还有在一些需要全屏的需求的B/S系统的时候,需要隐藏所有浏览器的相关的内容。 按F11的全屏不能满足要求。   只需...
  • wlphyl
  • wlphyl
  • 2016年09月05日 17:01
  • 4070

C# MDI form多窗口模式的实现

  • 2014年03月12日 10:27
  • 7KB
  • 下载

弹出模式窗口显示进度条

  • 2012年03月02日 22:39
  • 52KB
  • 下载

C# Winform如何弹出一个模式窗口来显示进度条

最近看了好多人问这方面的问题,以前我也写过一篇blog,里面说了如何在子线程中控制进度条。但目前大多数环境,需要弹出模式窗口,来显示进度条,那么只需要在原先的基础上稍作修改即可。   首先是进度条...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用CallByName“代替”模式窗口。
举报原因:
原因补充:

(最多只允许输入30个字)