Module Statpnl.pkg

     1// StatPnl.pkg - creates the standard status_panel object.
     2//
     3//
     4// This is the default Status Panel object used by any of the Visual DataFlex classes that
     5// invoke the standard status panel. The standard has always been that the package name
     6// is StatPnl.pkg and the name of the object is Status_Panel. As of 12.0, there are major 
     7// changes in the way the status panel operates The Sentinel based external status panel used in
     8// prior revisions has been replace with status panel that is part of the application.
     9// This should work much better and faster than the old sentinel based solution.
    10// While the way this operates has changed, the interface has not and therefore this should work
    11// with most applications.
    12//
    13// As of 12.0, we have added a global handle that contains the object ID of this status panel.
    14// This variable ghoStatusPanel can be used in place of the object name Status_Panel. This provides
    15// a cleaner more robust interface.
    16//
    17//
    18// Compatibility Note:
    19//
    20// When used in the standard way, this change will require no changes. A developer will only need to
    21// change their code if they've modified the sentinel program, which was a difficult thing to do.
    22//
    23// If for some reason you application will not work using this as a replacement for the old status
    24// panel, you've probably done something special with the old status-panel. If you don't want to 
    25// figure out how to use the new one and you want to continue using the old one you are going to need
    26// to add some code to include the old status panel in your application. Add the following to your project (your src).
    27// 
    28// Use StatPnl.pkg    // Make sure you load the new status panel object first. this is not optional!
    29// Use OldStatPnl.pkg // load the old status panel. Status_Panel is now this old object
    30//
    31// If you do this, you will lose access to the new status-panel via Status_Panel. However, you 
    32// can still access the new object via the ghoStatusPanel handle. 
    33//
    34//
    35// Creating your own Status Panel objects
    36//
    37// If a developer wishes to create a custom panel, they should use this package as their template.
    38// This panel can be visually modeled and changed any way you wish. Just save your new custom panel
    39// with a different file and object name and direct your status panel request to the new object.
    40//
    41// If the new panel changes the interface and updates objects that are not currently defined, you
    42// want to make sure you send the message ProcessEvents after you've updated the object. This allows
    43// the object to paint when inside of a tight loop. For example, if you wanted to add a progress
    44// bar (cProgressBar) you would want to Send ProcessEvents after you update the progress bar.
    45// e.g.
    46//       Procedure UpdateStatusBar
    47//           Send DoAdvance of oProgressBar
    48//           Send ProcessEvents
    49//       End_Procedure
    50//
    51// Of course, if you use the standard interfaces in status bar and your forward send these
    52// messages this will be done for you.
    53//
    54// the standard Interface for status panels are:
    55//
    56// Send Initialize_StatusPanel - initializes values for caption, title & message
    57// Send Start_StatusPanel      - start the status panel
    58// Send Stop_StatusPanel       - stop the status panel
    59// Send Update_StatusPanel     - update the status panel's action area
    60// Get  Check_StatusPanel      - check for cancel (if cancel or pbCancel is set, close the panel)
    61//
    62// Get/Set Caption_Text - updates the caption bar
    63// Get/Set Title_Text   - updates the title area
    64// Get/Set Message_Text - updates the Message area
    65// Get/Set Action_Text  - updates the action area
    66// Get/Set Button_Text  - updates the button area
    67//
    68// Get/Set Allow_cancel_state - determines if panel can be canceled
    69// Send EnableCancelButton - code you should provide to enable/disable cancel button
    70//
    71// ghoStatusPanel - global handle that points to the standard status panel.
    72
    73Use cProcessStatusPanel.pkg
    74
    75
    76Global_Variable Handle ghoStatusPanel // will contain the ID of the global StatusPanel object
    77
    78
    79Object Status_Panel is a cProcessStatusPanel
    80
    81    Move Self to ghoStatusPanel // this can be used throughout your applicaton to access this object
    82    
    83    Set Size to 80 166
    84
    85    object oTitleTxt is a TextBox
    86        set location to 10 10
    87        Set Auto_Size_State to False
    88        Set size to 20 150
    89        Set Justification_Mode to JMode_Center
    90    end_object
    91
    92    object oMessageTxt is a TextBox
    93        set location to 25 10
    94        Set Auto_Size_State to False
    95        Set size to 20 150
    96    end_object
    97
    98    object oActionTxt is a TextBox
    99        set location to 45 10
   100    end_object
   101
   102    object oStopButton is a Button
   103        Set Location to 60 58
   104        Set Label to C_$Cancel
   105        
   106        procedure OnClick
   107            send Close_panel
   108        end_procedure
   109    
   110    end_object
   111
   112    // These messages bind the standard cProcessStatusPanel interface to the actual
   113    // objects defined within this instance of the status panel.
   114    
   115    // note: all of the messages that change text should be forwarded
   116    // as the forwarded messages allows the panel to paint when in a tight loop
   117
   118    Procedure Set Message_Text string sText
   119        Set Label of oMessageTxt to sText
   120        Forward Set Message_Text to sText
   121    End_Procedure
   122    
   123    Function Message_Text returns string
   124        Function_Return (Label(oMessageTxt))
   125    End_Function
   126    
   127    Procedure Set Action_Text string sText
   128        Set Label of oActionTxt to sText
   129        Forward Set Action_Text to sText
   130    End_Procedure
   131    
   132    Function Action_Text returns string
   133        Function_Return (Label(oActionTxt))
   134    End_Function
   135    
   136    Procedure Set Button_Text string sText
   137        Set Label of oStopButton to sText
   138        Forward Set Button_Text to sText
   139    End_Procedure
   140    
   141    Function Button_Text returns string
   142        Function_Return (Label(oStopButton))
   143    End_Function
   144    
   145    Procedure Set Title_Text string sText
   146        Set Label of oTitleTxt to sText
   147        Forward Set Title_Text to sText
   148    End_Procedure
   149    
   150    Function Title_Text returns string
   151        Function_Return (Label(oTitleTxt))
   152    End_Function
   153
   154    // gets called when status panel is activated passing whether a button
   155    // should appear
   156    Procedure EnableCancelButton boolean bEnable
   157        Set Enabled_State of oStopButton to bEnable
   158    end_procedure
   159   
   160End_Object
   161