看板Programming
标 题Re: [VB6 ] 请问如何使用不需确认的msgbox
发信站枫桥驿站 (Thu Jan 28 18:33:37 2010)
转信站ptt!news.ntu!ctu-gate!ctu-peer!news.nctu!news.csie.ncyu!news.cs.nthu!M
※ 引述《[email protected]》之铭言:
> ※ [本文转录自 Visual_Basic 看板]
> 作者: comduffer () 看板: Visual_Basic
> 标题: [VB6 ] 请问如何使用不需确认的msgbox
> 时间: Sat Jan 2 14:57:09 2010
> 因为要写的程式跑的数目过大
> 无法确定何时会当机
> 所以在中途都加上msgbox来确定进度
> 可是msgbox需要手动确定才能继续执行
> 有没有办法显示出讯息并保留在萤幕上
> 不会消失直到程式结束
原则:
用另一个FORM当输出. 并且保持此讯息FORM在前景.
工作模组结束後, 再关掉(Unload)这个讯息FORM.
工作模组可以使用 me.enabled = FALSE 关掉自己的回应.
用户不可能再按到它.
流程如下:
主工作模组(module 或 form. 底下以form为例.)
工作启动段:
me.enabled=FALSE '关掉自己. module类型不须此行.
outMsgForm.show '显示讯息form
..启动工作
工作中进度:
1. outMsgForm.cls '清空旧讯息.
outMsgForm.print 进度文字 '显示新讯息. 用Form底版当输出区.
或
2. outMsgForm.label1.caption = 进度文字 '显示新讯息. 用Label当输出区.
工作结束段:
me.enabled=TRUE '打开自己. module类型不须此行.
unload outMsgForm'关掉讯息form
讯息form: 无其它功能码.
注意! 如果需要用户可以中断, 需要另加中断钮.
控制模式如下:
工作Form 讯息Form
->启动讯息Form
<-用户中断
->关掉讯息Form
当成功结束或
用户中断.
讯息Form的中断码.
Private Sub Command1_Click()
workform.myBreakSub '在工作form中加 Public Sub myBreakSub /End Sub
End Sub
大致的流程如此. 意义上就是利用自订的FORM来当msgbox. 不必等用户回应.
vb的msgbox其实也只是一个form. 只是在设计上锁住, 需要用户回应而已.
进阶的控制要注意多工特性.
上面的 workform.myBreakSub呼叫可能不是原来的工作form. 某些时候会是另
一个行程. 所以必要时将工作Form物件指明出来, 传给讯息form:
1. 工作Form:
(a) 将 outMsgForm.show 改成:
outMsgForm.StartMe me ' 讯息Form增加一个开放的界面StartMe().
' 并把自己当成参数传给讯息Form. 以便能
' 呼叫回来.
(b) 增加一个中断界面, 副程序 myBreakSub()
注意! Sub myBreakSub() 一定要加Public开放外界使用.
另外, module类型的主工作程式码无法传me. 也不需要传. 直接呼叫
副程序 myBreakSub 即可, 不须要物件.
Public Sub myBreakSub
'中断动作.
timer1.interval = 1 '1ms. (立刻执行)
timer1.enabled = TRUE '执行.
'注意, 一定要用时钟来间接启动中断程序. 先让讯息form完成呼叫动作.
'否则: 讯息form->呼叫工作form->中断工作->unload讯息form
' |.................................^讯息form呼叫动作未结束.
' 无法正确关掉讯息form.
End Sub
2. 在讯息form中加
Dim WorkHost as Object '模组层次全域变数
Public Sub StartMe (HostVar as FORM)
set WorkHost = HostVar '在启动前先将启动者记下来, 以便传讯息回去.
me.show
End Sub
'Command1_Click改成
Sub Command1_Click()
WorkHost.myBreakSub '这样就不会找错人. 因为用的是启动者传来的ꘊ '自己(物件参考).
'注意. 不要自己加 unload me. 让工作Form来帮你关.
End Sub
Sub Form_QueryUnload....
'加码
set WorkHost = Nothing '取消启动者的物件参考.
End Sub
--
◤ ◣
─ 枫桥艺文站正式开张!─˙─˙─▍ 枫桥驿站˙
竟然不是 ‵ ◣︹▉
▋ │▉▄▅▆
红萝卜!▄▅▇
;
快来寻找你爱的作家。 ▃▆◤ /\ ◢ ◥
◣▃▅ ◢为你呕心沥血的作品找个窝。 ◣ ◣ ◢=== ◆
◥ 文学版+美工板,强烈邀请您。 ◣▁▂ ▆ ◢
◣ ●.● tommy从61.229.169.25 ◢◢ ◥