# Form 间的讯息传递 & 资料库密码 & 自制控制项

Posted by 阿晴 on September 26, 1997 at 06:36:10:

弟有个三个问题想请教您:
1.从一个副程式呼叫一个 Form,然后从 Form传回某项讯息,我要如何在原来的副程式
得知 Form的传回值是多少?
例如:
Form1.frm
Private Sub Form_Click()
Form2.Show
Print RetValue ---> 一定会传回 0
End Sub
Form2.frm
Private Command1_Click()
RetValue = 1
End Sub

Private Command2_Click()
RetValue = 2
End Sub

Module1.bas
Global RetValue As Integer
程式执行结果想当然尔, Form1 Click 之后一定会先把 Form2 Show出来,然后再回去印 RetValue的值, 然后 RetValue 一定是 0, 问题是 RetValue一定不是在 Form2 印出, 否则就不叫 Form2传值给 Form1了. 而且对于 RetValue 的处理一定不能写在
Form2 , 否则假如我在程式里, 有很多地方都呼叫 Form2, 那 Form2 不就挂了!

弟会问这个问题的原因是:
弟做了一个 Form 来模拟 MsgBox , 但是 Command Button 按下去后, 原来的 Form 就收不到 Command Button 传回的值了, 因为原来的 Form 那段呼叫 MsgBox 的副程
式已经执行完毕了!
Ex1. 一般正常情况
Answer = MsgBox("是否要结束程式? ", vbOkCancel)
Select Case Answer
Case vbOk
End
Case vbCancel
'Do Nothing
End Select
Ex2. 弟的情形
RetValue = MsgDsp("是否要结束程式? ")
^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^
传 弟用 Form 模拟的 MsgBox
回
值
Select Case RetValue ---> 结果这一段会产生错误的结果, 因为在 MsgDsp
Case 1 中的 Command Button 还没按 !!!
End ** 这一段当然不可能写在 MsgDsp 那个 Form 里
Case 2
'Do Nothing
End Select
请问有无解决之道呢??

2. 如何由 OpenDatabase 方法开启已设好密码之资料库?
弟之程式片段:
建资料库时:
Set Db = Ws.CreateDatabase(App.Path & "\Wcs.Mdb", dbLangGeneral & _
";Pwd=3832198", dbVersion30)
开资料库时:
Set Db = OpenDatabase(strDbName, , , "Pwd=3832198")
^^^^^^^^^^^^
结果发生...资料库密码错误的惨剧 !!!
请问开资料库时, 是那里语法错了?

3. 如何将 UserControl 的版本降级(自建控制项), 因为弟一时贪玩, 结果编 译多次之后, 我的控制项已升级到 13 版了(真是伤脑筋), 而且那些控制项已经
使用在弟的应用程式当中多时矣! 虽然无伤大雅, 但是功能又不是说很强就已经
是 13 版了, 比 VB 还多了 8 版, 太夸张了!

Follow Ups:

- Re: Form 间的讯息传递 & 资料库密码 & 自制控制项 小吴 17:49:04 9/29/97 (0)