Office中国论坛/Access中国论坛

标题: 如何让弹出窗体能够通用化 [打印本页]

作者: smilingkiss    时间: 2013-11-19 20:33
标题: 如何让弹出窗体能够通用化
本帖最后由 smilingkiss 于 2013-11-19 20:41 编辑

各位大哥,使用弹出窗体传递参数,我现在已经有了一些头绪(见附件)但我希望能够让这个弹出窗口(附件实例中是窗体“2”)通用化,意思就是可以让不同的程序调用这个弹出窗体,都可以根据实际情况设置弹出窗体的名称和里面按钮的名称,请问该如何做呢?

以下是弹出窗体的代码:
Private Sub Command4_Click()   '这是弹出窗体的第一个按钮
  If Me.OpenArgs = "text48" Then    '如果是通过"text48"传递,则按下第一个按钮,赋值给窗体"1"的[Text48]为"1"

    Forms("1")![Text48] = 1

  End If
    If Me.OpenArgs = "strtest" Then  '如果是通过"strtest"传递,则按下第一个按钮,赋值给全局变量strtest]为"1"

      strtest = "1"

    End If


  DoCmd.Close
End Sub

Private Sub Command5_Click()    '这是弹出窗体的第二个按钮
  If Me.OpenArgs = "text48" Then   '如果是通过"text48"传递,则按下第二个按钮,赋值给窗体"1"的[Text48]为"2"

    Forms("1")![Text48] = 2

  End If
  
    If Me.OpenArgs = "strtest" Then   '如果是通过"strtest"传递,则按下第二个按钮,赋值给全局变量strtest]为"2"

      strtest = "2"

    End If


  DoCmd.Close
End Sub

以下是主窗体两个按钮(分别用来实现两种参数传递的情况)的代码:
Private Sub Command25_Click() '通过全局参数strtest传递参数

strtest = "haha"  '预设strtest变量以便可以在下面的msgbox(strtest)中判断该变量有没有根据弹出窗体的行为作出改变

    DoCmd.OpenForm "2", , , , , acDialog, "strtest"
  ' Forms![2]!Command4.Caption = "test1"    '本来也想通过命令让窗体"2"的第一个按钮名称设置为"test1",但这个命令行不通,会出现错误提示,请问有什么好办法实现吗?
   'Forms![2]!Command5.Caption = "test2"
   'Forms![2].Caption = "testtest"
  
   MsgBox (strtest)
   

End Sub



Private Sub Command47_Click() '通过控件text48传递参数     这是主窗体的按钮“2”,代码可以通过并且可以达到要求
   DoCmd.OpenForm "2", , , , , , "Text48"
   Forms![2]!Command4.Caption = "111"  '通过命令让窗体"2"的第一个按钮名称设置为"111"
   Forms![2]!Command5.Caption = "222"  '通过命令让窗体"2"的第二个按钮名称设置为"222"
   Forms![2].Caption = "aaa"           '通过命令让窗体"2"的名称设置为"aaa"
   '以上三行,目的是为了让窗体"2"成为一个通用的弹出窗体,窗体的显示名称和按钮的名称均可以按照实际情况设置,让不同情况调用这个弹出窗体都可以自定义显示的效果
End Sub

strtest是定义在模块中的全局变量

现在的问题是,我想把窗体“2”设计成通用的弹出窗口,就是在不同的情况下,可以自定义弹出窗口的名称,自定义弹出窗口的每个按钮的名称,请各位大哥赐教了!


作者: ganlinlao    时间: 2013-11-19 20:46
openargs 可以传字符串。
如openArgs="窗体1的名称,参数值"
或openArgs="窗体1!控件1的名称,参数值"
传到弹出窗口后可以这样处理
dim strArgs as string,arr() as string
strArgs=me.openArgs
arr=split(strArgs,",")
其中arr(1)就是窗体1!控件的名称
    arr(2)就是参数值。
接下来怎么处理。我想你应该知道了吧
作者: smilingkiss    时间: 2013-11-19 21:11
本帖最后由 smilingkiss 于 2013-11-19 21:15 编辑
ganlinlao 发表于 2013-11-19 20:46
openargs 可以传字符串。
如openArgs="窗体1的名称,参数值"
或openArgs="窗体1!控件1的名称,参数值"

想再请教一下,我这里向主窗体回传参数的方法,需要为全局参数strtest特意创建一个模块,在模块里面定义一个公共参数,除了这个办法,还有没有更加简便的办法吗?
作者: AJKLS    时间: 2015-9-14 08:35
学习




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3