使用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

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

PHP中Yii2框架的使用及项目实战

通过本课程的学习,同学们不仅仅能够了解Yii2框架,还能够使用Yii2框架进行项目的开发。Yii2框架是使用PHP编程语言编写的框架,通过对Yii2框架的学习,同学们能够掌握在实际开发中,公司的程序员是如何使用Yii2框架的
  • 2018年01月28日 01:01

vb module_FunctionPtr 与FunctionPtr共同实现 CallFromDll callbyAddress 可以调用模块的函数/callbyname

Option ExplicitV0.6  与CallByAddress类似,代码基本一致,就是不知道怎么传ParamArray参数,导致代码重复。Public Function CallFromDll...
  • jiaguoxinzhi
  • jiaguoxinzhi
  • 2008-12-12 01:49:00
  • 1478

CallByName 函数

Visual Basic 语言参考 CallByName 函数 执行对象的方法,或者设置或返回对象的属性。 Public Function CallByName( _    By...
  • zhangyizhong
  • zhangyizhong
  • 2009-10-29 20:36:00
  • 243

学习vb.net

1.with...end withWith Button1 .Text = "ok" .Visible = True .Top = 200 End With 2.获得...
  • hxcttt
  • hxcttt
  • 2012-07-18 11:30:09
  • 893

Window对象之简介

1.简介:     window对象代表的是打开的浏览器窗口,通过window对象可以控制窗口的大小和位置、由窗口弹出的对话框、打开窗口与关闭窗口,还可以控制窗口上是否可以显示地址栏、工具栏、状态栏...
  • lintcgirl
  • lintcgirl
  • 2015-05-01 19:51:00
  • 436

CallByName函数小例一则

CallByName函数用于执行一个对象的方法,或者设置或返回一个对象的属性。利用它可以轻松实现动画。这里举个字符动画的例子,让大家感受一下此函数的强大功能。 要尝试本例,请在窗体上添加一个Label...
  • guyehanxinlei
  • guyehanxinlei
  • 2007-02-09 09:30:00
  • 751

模式窗口的使用

 //补充完成下边的函数,打开新的一个模式窗口 function openShowModalDialog(){     var obj = window;     var params  = new ...
  • caoyinghui1986
  • caoyinghui1986
  • 2008-06-15 12:27:00
  • 1296

qt 中显示模式/非模式窗口

MAN *m = new MAN; //在窗口上调用另一个窗口是,必须给这个窗口分配控件 m->setModal(false); //设置窗口模式 非模式/模式 m->show...
  • yishengzhiai005
  • yishengzhiai005
  • 2013-09-22 21:10:21
  • 938

在隐身模式下使用 Chrome 扩展程序

在 Chrome 最初开始支持扩展程序的时候,是不能在隐身模式下使用扩展程序的,因为很多用户都会保存一些数据,而保存数据则违背了隐身模式的原则。现在,Chrome 各个版本都已经开启了在隐身模式下使用...
  • chromeblog
  • chromeblog
  • 2011-11-14 11:13:53
  • 8568

使用 wglChoosePixelFormatARB和 wglCreateContextAttribsARB初始化opengl环境

  • 2013年03月01日 12:20
  • 3KB
  • 下载
收藏助手
不良信息举报
您举报文章:使用CallByName“代替”模式窗口。
举报原因:
原因补充:

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