Show

 (Available in 00 TS Base(GUI) - TS_Base_6_StatusBoxDialog)

Source

METHOD Show( ) AS DWORD PASCAL CLASS TS_StatusBox
LOCAL oStatusBoxGlobalData AS _TS_StatusBoxGlobalData
LOCAL lSuperModalStatusBox AS LOGIC
LOCAL oPreviousStatusBox AS TS_StatusBox
LOCAL pstruSavBoxInfo AS _TS_StatusBoxBoxInfo
LOCAL pstruWinInfo AS _TS_StatusBoxWinInfo
LOCAL struBoxInfo IS _TS_StatusBoxBoxInfo
LOCAL oApp AS OBJECT
   #IFDEF TS_TRACETIMED_ENABLE
      _TS_TraceTimedEnter( SysAddAtom( PSZ( _CAST, __APPLICATION__ ) ), SysAddAtom ; ...
     ... ( PSZ( _CAST, __MODULE__ ) ), SysAddAtom( PSZ( _CAST, __ENTITY__ ) ) )
   #ENDIF
   oPreviousStatusBox:=_TS_ErrorSysSetErrorBoxCount( TRUE, SELF, TRUE )
   IF oPreviousStatusBox<>NULL_OBJECT
      oPreviousStatusBox:Disable( )
   END
   oStatusBoxGlobalData:=_TS_ModuleGetStatusBoxGlobalData( )
   pstruSavBoxInfo:=oStatusBoxGlobalData:_StatusBoxCurrentBoxInfo
   oStatusBoxGlobalData:_StatusBoxCurrentBoxInfo:=@struBoxInfo
// ===
// IF GetIntError()
// lGetIntError:=TRUE
// ELSE
// lGetIntError:=FALSE
// SetIntError(ES_CATASTROPHIC)
// END
// ===
   DO CASE
   CASE TS_ErrorSysAborting( )
      SELF:Choice:=EC_ABORT
   CASE TS_ErrorSysDefaultAllStatusBoxes( ) .AND. SELF:_DefaultChoice ; ...
  ... <>EC_ALERT
      SELF:Choice:=SELF:_DefaultChoice
   CASE TS_ErrorSysDefaultAllStatusBoxes( ) .AND. TS_ErrorSysAlloweAutoAbort( )
      SELF:Choice:=EC_ABORT
   OTHERWISE
      lSuperModalStatusBox:=TS_ErrorSysSuperModalStatusBox( )
      IF lSuperModalStatusBox
         oApp:=TS_GetAppObject( )
         TS_SetAppObject( NULL_OBJECT )
         struBoxInfo._Count:=0U
         EnumThreadWindows( GetCurrentThreadId( ), @_TS_StatusBoxEnumWinCounter(  ; ...
        ... ), LONGINT( _CAST, @struBoxInfo ) )
         IF LOGIC( _CAST, struBoxInfo._Count )
            struBoxInfo._WinInfo:=MemAlloc( _SIZEOF( _TS_StatusBoxWinInfo  ; ...
           ... )*struBoxInfo._Count )
            struBoxInfo._SubClassed:=0U
            EnumThreadWindows( GetCurrentThreadId( ), @_TS_StatusBoxEnumWinSubClasser ; ...
           ... ( ), LONGINT( _CAST, @struBoxInfo ) )
         END
      END
      _TS_ErrorSysItemShown( SELF, TRUE )
      IF SELF:_DefaultChoice==EC_ALERT
         SELF:_DefaultChoice:=EC_IGNORE
      END
      IF SELF:_ButtonCount<1U
         SELF:_AddButton( 0U, #ChoiceIgnore, "&OK", EC_IGNORE ; ...
        ... , RGB( 0, 127, 255 ), RGB( 0, 0, 0 ) )
      END
      SUPER:Show( )
      oStatusBoxGlobalData:_StatusBoxIsWithStack:=SELF:_StatusBoxIsWithStack
      oStatusBoxGlobalData:_StatusBoxIsWithError:=SELF:_StatusBoxIsWithError
      oStatusBoxGlobalData:_StatusBoxIsWithExtEr:=SELF:_StatusBoxIsWithExtEr
      IF lSuperModalStatusBox
         IF LOGIC( _CAST, struBoxInfo._Count )
            WHILE LOGIC( _CAST, struBoxInfo._SubClassed )
               struBoxInfo._SubClassed-=1U
               pstruWinInfo:=struBoxInfo._WinInfo
               pstruWinInfo+=struBoxInfo._SubClassed
               IF IsWindow( pstruWinInfo._Handle ) .AND. LOGIC( _CAST,  ; ...
              ... pstruWinInfo._WinProc )
                  IF pstruWinInfo._ThreadWnd
                     SetWindowLong( pstruWinInfo._Handle, GWL_WNDPROC,  ; ...
                    ... pstruWinInfo._WinProc )
                  END
                  #IFDEF _TS_STATUSBOX_SUBCLASS_AND_CASHPAINT
                     IF pstruWinInfo._Paint
                        InvalidateRect( pstruWinInfo._Handle, @pstruWinInfo._Rect ; ...
                       ... , TRUE )
                     END
                  #ELSE
                     InvalidateRect( pstruWinInfo._Handle, NULL_PTR, TRUE  ; ...
                    ... )
                  #ENDIF
               END
            END
            MemFree( struBoxInfo._WinInfo )
            struBoxInfo._WinInfo:=NULL_PTR
         END
         TS_SetAppObject( oApp )
         oApp:=NULL_OBJECT
      END
   END
// ===
// IF !lGetIntError
// SetIntError(ES_WHOCARES)
// END
// ===
   oStatusBoxGlobalData:_StatusBoxCurrentBoxInfo:=pstruSavBoxInfo
   pstruSavBoxInfo:=NULL_PTR
   IF oPreviousStatusBox<>NULL_OBJECT
      oPreviousStatusBox:Enable( )
      oPreviousStatusBox:=NULL_OBJECT
   END
   _TS_ErrorSysSetErrorBoxCount( FALSE, oPreviousStatusBox, TRUE )
   oStatusBoxGlobalData:=NULL_OBJECT
   #IFDEF TS_TRACETIMED_ENABLE
      _TS_TraceTimedLeave( SysAddAtom( PSZ( _CAST, __APPLICATION__ ) ), SysAddAtom ; ...
     ... ( PSZ( _CAST, __MODULE__ ) ), SysAddAtom( PSZ( _CAST, __ENTITY__ ) ) )
   #ENDIF
RETURN SELF:Choice