请教高手:如何用vb的多线程处理这个应用? 急急啊

weity 2000-06-07 05:14:00
请教高手:如何用vb的多线程处理这个应用?
现在我又一个程序
在打印的时候 要求显示一个小画面 表示“正在打印”
等打印完毕 在现实一个小画面“打印完毕”
例如:

if u_check(index,s_act_sts1)= true then
'显示画面

'打印处理
A60120Print

'显示画面
else
u_mainexe=false
goto u_mainexeExit
end if
.
.
.
我试过 一般的frm.show 和frm.hide 不好使
因为我这里还有其他的状态监视代码。
嗨 不好办那




...全文
172 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanyx 2001-06-26
  • 打赏
  • 举报
回复
你刚从BASIC 1.0 出来吧?
weity 2001-06-26
  • 打赏
  • 举报
回复
好像我的问题挺幼稚的呵呵

现在回想起来,当初还真嫩啊
weity 2000-06-11
  • 打赏
  • 举报
回复
我在调用这个窗体之前 已经调用了一个实模式的窗体
就是他的父窗体 我还可以在调用一个实模式的窗体吗?
在有 我这个程序是一个嵌套的弹出一系列的窗体
总的来说就是
FORM1
STATUS1:
STATUS2:
FORM2.show vbmodal
unload form2

STATUS3:

在form2 中
status1:
status2:
form3.show vbmodal ?????出现问题
unload form3

status3:

大体就是这样啦!
请高手指教
weity 2000-06-08
  • 打赏
  • 举报
回复
now this is source



'----------------------------------------------------------------------
'
' 画面1、画面入力メインコントロール処理
'
'引数
' Index IN ボタンの添え字
' Status IN 会話のステータス
'戻り値
' 正常終了 : False
' 異常終了 : True
'
'Ver 1.00 2000/03/10 松本
'----------------------------------------------------------------------
Public Function U_MainExe(ByRef Index As Integer, ByRef Status As Integer) As Boolean

On Error GoTo U_MainExeErr

Dim objNextControl As Object '次会話最初のコントロール
Dim objCommandBtn As Object 'コマンドボタンの参照

U_MainExe = False

'全機能共通処理
If S_BeginFunction(Index, Status, Me) = True Then
Else
Exit Function
End If

'マウスを処理中にします。
Screen.MousePointer = vbHourglass

Select Case Status
Case S_ACT_STS0 '初期表示を行います
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始
'初期表示処理
If U_ActDisp(Index, S_ACT_STS0) = True Then
'初期状態にします
If U_SetStatus(Index, S_ACT_STS1, objNextControl) = True Then
'フォーカスをセットします
' objNextControl.SetFocus
Else
'終了
U_MainExe = False
GoTo U_MainExeExit
End If
Else
'終了
U_MainExe = False
GoTo U_MainExeExit
End If

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case S_ACT_STS1 '会話1の処理を行います
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始
Select Case Index
Case S_ACT_KEY1 'ボタン1の処理を行います
Case S_ACT_KEY2 'ボタン2の処理を行います
Case S_ACT_KEY3 'ボタン3の処理を行います
Case S_ACT_KEY4 'ボタン4の処理を行います
Case S_ACT_KEY5 'ボタン5の処理を行います
Case S_ACT_KEY6 'ボタン6の処理を行います
Case S_ACT_KEY7 'ボタン7の処理を行います
Case S_ACT_KEY8 'ボタン8の処理を行います
Case S_ACT_KEY9 'ボタン9の処理を行います
Case S_ACT_KEY10 'ボタン10の処理を行います
' プリンタの設定のダイアログを表示します
cmdlgPrn.CancelError = True
cmdlgPrn.PrinterDefault = True
cmdlgPrn.Flags = &H10014C
cmdlgPrn.ShowPrinter
cmdlgPrn.CancelError = False

' 選択されたプリンタを画面に表示します

txt1.Text = Printer.DeviceName
mintStatus = S_ACT_STS2

Case S_ACT_KEY11 'ボタン11の処理を行います(印刷)
'Add new by wei 2000/06/07
'チェック処理
If U_Check(Index, S_ACT_STS1) = True Then
' mintStatus = S_ACT_STS2
Else
U_MainExe = False
GoTo U_MainExeExit
End If
Case S_ACT_KEY12 'ボタン12の処理を行います(終了/戻る)
'終了
Call S_ExitMain(Me)

Case Else
MsgBox "画面2 画面表示画面ステータスエラー(プログラムエラー)", vbCritical
End Select

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case S_ACT_STS2 '会話2の処理を行います
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始
Select Case Index
Case S_ACT_KEY1 'ボタン1の処理を行います
Case S_ACT_KEY2 'ボタン2の処理を行います
Case S_ACT_KEY3 'ボタン3の処理を行います
Case S_ACT_KEY4 'ボタン4の処理を行います
Case S_ACT_KEY5 'ボタン5の処理を行います
Case S_ACT_KEY6 'ボタン6の処理を行います
Case S_ACT_KEY7 'ボタン7の処理を行います
Case S_ACT_KEY8 'ボタン8の処理を行います
Case S_ACT_KEY9 'ボタン9の処理を行います
Case S_ACT_KEY10 'ボタン10の処理を行います
Case S_ACT_KEY11 'ボタン11の処理を行います(印刷)
**********************************************************************
'2000/06/08
S_Act_Form3.Show

'Add new by wei 2000/06/07
'チェック処理
If U_Check(Index, S_ACT_STS2) = True Then

'call Printting......
Call A60120Print

S_Act_Form3.Hide
S_Act_Form4.Show
Else
U_MainExe = False
GoTo U_MainExeExit
End If

Unload S_Act_Form3
Unload S_Act_Form4

********************************************************************
Case S_ACT_KEY12 'ボタン12の処理を行います(終了/戻る)
'終了
Call S_ExitMain(Me)

Case Else
MsgBox "画面2 画面表示画面ステータスエラー(プログラムエラー)", vbCritical
End Select

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case S_ACT_STS3 '会話3の処理を行います。
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case S_ACT_STS4 '会話4の処理を行います。
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case S_ACT_STS5 '会話5の処理を行います。
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始

' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了
Case Else
MsgBox "画面2 画面表示画面ステータスエラー(プログラムエラー)", vbCritical
End Select

U_MainExe = True

U_MainExeExit:
' ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ コーディング開始
' ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ コーディング終了

'マウスを処理中にします。
Screen.MousePointer = vbNormal

'全機能共通処理
If S_EndFunction(Index, Status, Me) = True Then
Else
Exit Function
End If

Exit Function
U_MainExeErr:
U_MainExe = False
Call S_Err("U_MainExe", err)
GoTo U_MainExeExit
End Function

lvyu 2000-06-07
  • 打赏
  • 举报
回复
事件触发可以实现异步操作,
完成一个长操作,显示用户一个
操作进行中的提示,你是这个意思吗?
wulang 2000-06-07
  • 打赏
  • 举报
回复
我觉得不一定非要用多线程,因为我以前也做过一个类似的程序。
将处理代码写在模块中(*.bas),在frmState中添加一个名为lblState的label
Sub ShowState()
frmState.Show
if u_check(index,s_act_sts1)= true then
frmState.lblState="正在打印"

'打印处理
A60120Print

frmState.lblState="打印完毕"
else
u_mainexe=false
goto u_mainexeExit
end if
unload frmstate
End Sub
Un1 2000-06-07
  • 打赏
  • 举报
回复
使用frm.Show vbModeless, frmMain

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧