To function properly, the XbpStatusBar class requires a certain system component, the Microsoft Common Controls Version 6.0, to be installed on your computer. Normally, this component is not installed along with the operating system, so provisions must be taken to distribute the component with your Xbase++ application. An installation package with the required system files for using the XbpStatusBar Xbase Part is available from Alaska Software. The corresponding archive should be located on your Xbase++ disk or CD ROM. For further information, please click the 'Info' button on this page.
Class XbpStatusBar() Foundation
Class function of the XbpStatusBar() class
The class XbpStatusBar implements an Xbase Part that can be used by an Xbase++ application to inform the user of the application's status. An XbpStatusBar object consists of one or more panels, each of which can display status text as well as an application-defined image.
Possible uses of the XbpStatusBar class include:
Using the XbpStatusBar Xbase Part
An instance of the XbpStatusBar class is created by calling its :new() method followed by :create(). After the object is created, an application uses the object's instance variables and methods to assign the status text and/or image to be displayed by the Xbase Part. The visible area of an XbpStatusBar object can be divided into one or more status bar panels, each of which can display a status message and image. A status bar panel is defined using the method :addItem(). An XbpStatusBar object can hold up to 16 panels.
Usage in MDI applications
In so-called MDI applications, one or more child or document windows can be displayed within the main window of the application. MDI applications are created by making the XbpDialog objects representing the child windows a child of the :drawingArea of the main window. Afterwards, the child windows can be moved freely within the drawing area of the main window. The child dialogs overlap each other as well as all other childs defined in the :drawingArea of the main window. This is to be taken into account when using the XbpStatusBar class within the main window of an MDI application. In this case, the status bar often visualizes the global application status and hence should be visible at all times. In order to prevent the status bar from being hidden by overlapping child dialogs, the status bar should be created as a child of the main window (XbpDialog), and not as a child of the main window's drawing area. Also, the dimension of the drawing area must be reduced by the height of the status bar, and the position must be adjusted accordingly.
//
// Example for using the XbpStatusBar Xbase Part
//
#include "XBP.CH"
#include "AppEvent.CH"
PROCEDURE Main()
LOCAL oDlg
LOCAL oSBar
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oPanel
//
// Create application's main dialog
//
oDlg := XbpDialog():new( Appdesktop() )
oDlg:title := "Statusbar Example"
oDlg:taskList := .T.
oDlg:close := {|| PostAppEvent(xbeP_Quit,,, oDlg) }
oDlg:create( ,, {50,50}, {640,480},, .F. )
oDlg:drawingArea:resize := {|| ResizeStatusbar(oSBar)}
//
// Create an XbpStatusBar object and
// add it at the bottom of the dialog
//
oSBar := XbpStatusBar():new( oDlg:drawingArea )
oSBar:create( ,, {0,0}, {oDlg:drawingArea:currentSize()[1],30} )
//
// Use two status bar panels to display status
// information: application mode ("Ready") and
// current time
//
oPanel := oSBar:getItem( 1 )
oPanel:caption := "Ready"
oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_SPRING
oPanel := oSBar:addItem()
oPanel:Style := XBPSTATUSBAR_PANEL_TIME
oPanel:autosize := XBPSTATUSBAR_AUTOSIZE_CONTENTS
//
// Display the main dialog and process
// application events until the dialog
// is closed
//
oDlg:show()
SetAppWindow( oDlg )
SetAppFocus( oDlg )
nEvent := xbeP_Quit
DO WHILE nEvent != xbeP_Close
nEvent := AppEvent( @mp1, @mp2, @oXbp )
oXbp:handleEvent( nEvent, mp1, mp2 )
ENDDO
oDlg:destroy()
RETURN
// Resize XbpStatusBar object to always span the
// whole width of the dialog's drawing area
PROCEDURE ResizeStatusbar( oSBar )
LOCAL oParent := oSBar:setParent()
oSBar:setSize( {oParent:currentSize()[1], oSBar:currentSize()[2]} )
RETURN
// Overloaded AppSys() procedure to prevent
// creation of the default XbpCrt window
PROCEDURE AppSys()
RETURN
If you see anything in the documentation that is not correct, does not match your experience with the particular feature or requires further clarification, please use this form to report a documentation issue.