We know that OpenInsight's flexible MSG function allows you construct messages dynamically. One of its most useful features is available to the developer by using a "Gas Gauge" or "GC" type message. The Gas Gauge type message can be constructed as outlined in the MSG_EQUATES $INSERT record.  A message created using the "GC" parameter will display a gas gauge, or progress bar, as part of the message.

Parameters are passed to the message and the ticks on the progress bar are updated as processing occurs. Coding it is a fairly straightforward affair as outlined in the MSG_EQUATES record. Below is a message that displays the progress of a process, allowing the user to cancel the process by pressing the Cancel button. allowing the user to cancel. The message is 500 pixels wide.

Below is sample code that calls Msg() during the processing of 100 orders, producing the message shown above.

$Insert Msg_Equates
declare function msg
*
* to display a gauge (percent bar), use the "G" type; sub-types are C (show
* cancel button) and Y (yield on each cycle):
*
orderCnt = 100
Def = ""
Def<MCAPTION$> = "Processing Orders..."
Def<MTYPE$ > = "GC"
Def<MEXTENT$> = OrderCnt
Def<MTEXTWIDTH$> = 200
MsgUp = Msg(@window, Def)
for Order = 1 to OrderCnt
  gosub ProcessOrder
  * update the gauge and check if cancel was pressed
  while Msg(@window, MsgUp, Order, MSGINSTUPDATE$)
next Order
retval = Msg(@window, MsgUp) ;* take down the gauge
return 0
ProcessOrder:
*
*  Process order number "OrderCnt"
*
for i = 1 to 1000000
next i
return
  • No labels