Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

能否把InputBox文本框改造为动态组合框或列表框?

浪淘沙  发表于:2012-02-12 11:19:25  
复制

如题,很多时候需要通过InputBox需要输入各类编号,须事先检索后再输入到InputBox的文本框中,如果能如题改造就更方便了。

估计需要通过WINDOWS编程重新定制一个含组合框的输入对话框,调用时再通过参数给组合框赋数据源吧,这方面谁有研究,请指教一下。

 

Top
煮茶论道 发表于:2012-02-12 12:14:36

那为什么一定要用input,直接做一个窗体不是一样的吗?



浪淘沙 发表于:2012-02-12 17:54:16

还请 老师再帮忙看看,我开始也想过自己做一个窗体,但我是在代码中调用并返回值给程序继续运行,可能窗体打开后就取得窗体默认值直接运行下去了。我希望类似消息对话框这样在打开窗体时需要程序等待返回值,点击确定按钮取得返回值继续运行,或点击取消按钮后终止程序,不知道怎么控制这个过程,说白了就是想知道MsgBox,InputBox的暂停线程的控制机制是怎么弄的。我可以把后面的代码加到自制窗体的确定按钮事件中去,只是原来写的树控件的快捷菜单功能函数都需要改动。



煮茶论道 发表于:2012-02-12 19:11:26
浪淘沙 发表于:2012-02-12 22:56:19

谢谢版主,我要的不是这样的,我是希望象程序执行到InputBox对话框时程序挂起等待返回值再继续的办法。InputBox会自动挂起程序,返回输入值后继续执行后面的程序,类似这样:

     Public Function addNew()

     .........

    
     zgID = InputBox("请输入主管ID", "组织机构设置")  

         '起因是这里的主管ID需要事先检索后输入,希望对话框有查阅字段的功能改善客户体验,如果自己做的窗体如何让程序挂起等待返回值给变量zgID再继续下面的程序?

         '因为看到不少对InputBox升级改造的案例,所以一开始发帖问的是能否对文本框控件改造 

     If Len(zgID) = 0 Then

     Exit Function

     Else

     ...............

 

我查了一些资料,有人说MsgBox InputBox是封装在user32.dll里的,有对线程的挂起机制,但具体怎么回事就不知道了,也没百度到成功案例。只是探讨一个技术节点,实在不行就不强求了,先换别的办法解决了。



西出阳关无故人 发表于:2012-02-12 23:17:39

参考,以列表的形式共用户选择

 

点击下载此附件

浪淘沙 发表于:2012-02-13 00:30:49

谢谢西出阳关无故人的支持,类似窗体间转承的弹出对话框都是靠操作窗体控件和各个事件代码串接来实现功能的,和我提的问题还不是一回事。我指的是在一段代码中调用InputBox函数时的情况,InputBox是微软封装好的函数,里面最特色的功能是被调用时对程序进程挂起并返回值给程序中的变量再继续运行下面的代码,而不是人为在它的确定按钮中添加了我们习惯采取的事件代码继续后续的操作。其实就是想了解InputBox这个函数怎么编写出来达到这些效果的,中间涉及到了对哪些对象的控制,如果搞明白了,或许对解决我的问题有帮助,或许只是满足了好奇心。

我在网上查到了介绍国外有人在VC++6下用Win32API编写InputBox对话框的文章,一时半会看不懂代码,先收藏下来,里面或许有这方面的机理吧。

 

http://blog.csdn.net/qiqi5521/article/details/2261661



浪淘沙 发表于:2012-02-13 00:52:52
我手里的活暂先通过设置全局变量取得选项值,再在快捷菜单模块中把全局变量作为默认值发送给InputBox函数解决的。谢谢两位老师的大力支持,这个帖子先结贴了,有后续进展继续讨论。

羽扇子君 发表于:2012-03-27 20:52:59

今天浏览帖子看到,可以利用全局变量和DoEvents函数 指导如下,:

1.自定义一个窗体,格式尽可能的达到需求.

2.定义2个全局变量,一个用来确定自定义的窗体是否关闭IsClose了,另一个变量用来储存自定义窗体的选择内容;

3.当打开窗体后进入 判断IsClose变量死循环,同时DoEvents函数等待;

4.当窗体关闭时,将选择的数据储存,同时将IsClose变量改变.

5.函数收到IsClose变量改变时,就可以继续运行了.

 

 



浪淘沙 发表于:2014-11-28 13:26:52
谢谢羽扇子君,今天浏览旧帖发现你的回复,这么久没回应,真抱歉。你的方案很好,我自己的方案用的也不错,以后开发可以试试你的方案。

总记录:9篇  页次:1/1 9 1 :