使用frm.Show vbModeless, frmMain

解决方案 »

  1.   

    我觉得不一定非要用多线程,因为我以前也做过一个类似的程序。
    将处理代码写在模块中(*.bas),在frmState中添加一个名为lblState的label
    Sub ShowState()
    frmState.Show
    if u_check(index,s_act_sts1)= true then
    frmState.lblState="正在打印"'打印处理
    A60120PrintfrmState.lblState="打印完毕"
    else
    u_mainexe=false
    goto u_mainexeExit
    end if
    unload frmstate
    End Sub
      

  2.   

    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
      

  3.   

    我在调用这个窗体之前 已经调用了一个实模式的窗体
    就是他的父窗体 我还可以在调用一个实模式的窗体吗?
    在有 我这个程序是一个嵌套的弹出一系列的窗体
    总的来说就是
    FORM1 
    STATUS1:
    STATUS2:
      FORM2.show vbmodal
      unload form2
      
    STATUS3:在form2 中
    status1:
    status2:
      form3.show vbmodal ?????出现问题
      unload form3status3:大体就是这样啦!
    请高手指教
      

  4.   

    你刚从BASIC 1.0 出来吧?