设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1731|回复: 3
打印 上一主题 下一主题

[窗体] 如何让弹出窗体能够通用化

[复制链接]
跳转到指定楼层
1#
发表于 2013-11-19 20:33:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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”设计成通用的弹出窗口,就是在不同的情况下,可以自定义弹出窗口的名称,自定义弹出窗口的每个按钮的名称,请各位大哥赐教了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2013-11-19 20:46:16 | 只看该作者
openargs 可以传字符串。
如openArgs="窗体1的名称,参数值"
或openArgs="窗体1!控件1的名称,参数值"
传到弹出窗口后可以这样处理
dim strArgs as string,arr() as string
strArgs=me.openArgs
arr=split(strArgs,",")
其中arr(1)就是窗体1!控件的名称
    arr(2)就是参数值。
接下来怎么处理。我想你应该知道了吧
3#
 楼主| 发表于 2013-11-19 21:11:08 | 只看该作者
本帖最后由 smilingkiss 于 2013-11-19 21:15 编辑
ganlinlao 发表于 2013-11-19 20:46
openargs 可以传字符串。
如openArgs="窗体1的名称,参数值"
或openArgs="窗体1!控件1的名称,参数值"

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-18 08:15 , Processed in 0.111374 second(s), 28 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表