MESSAGE

4D - Documentation   Français   English   German   Spanish   4D v11 SQL, Command Theme List   4D v11 SQL, Command Alphabetical List   4D v11 SQL, Constant Theme List   Back   Previous   Next

version 2004 (Modified)


MESSAGE (message)

ParameterTypeDescription
messageStringMessage to display

Description

The MESSAGE command is usually used to inform the user of some activity. It displays message on the screen in a special message window that opens and closes each time you call MESSAGE, unless you work with a window you previously opened using Open window (see the following details). The message is temporary and is erased as soon as a form is displayed or the method stops executing. If another MESSAGE is executed, the old message is erased.

If a window is opened with Open window, all subsequent calls to MESSAGE display the messages in that window. The window behaves like a terminal:

Successive messages do not erase previous messages when displayed in the window. Instead, they are concatenated onto existing messages.

If a message is wider than the window, 4D automatically performs text wrap.

If a message has more lines than the window, 4D automatically scrolls the message window.

To control line breaks, include carriage returns — Char(13) — into your message.

To display the text at a particular place in the window, call GOTO XY.

To erase the contents of the window, call ERASE WINDOW .

The window is only an output window and does not redraw when other windows overlap it.

Examples

1. The following example processes a selection of records and calls MESSAGE to inform the user about the progress of the operation:

   For($vlRecord;1;Records in selection([anyTable]))
      MESSAGE ("Processing record #"+String($vlRecord))
         ` Do Something with the record
      NEXT RECORD([anyTable])
   End for

The following window appears and disappears at each MESSAGE call:

2. In order to avoid this "blinking" window, you can display the messages in a window opened using Open window, as in this example:

   Open window(50;50;500;250;5;"Operation in Progress")
   For($vlRecord;1;Records in selection([anyTable]))
      MESSAGE ("Processing record #"+String($vlRecord))
         ` Do Something with the record
      NEXT RECORD([anyTable])
   End for
   CLOSE WINDOW

This provides the following result (shown here on Windows):

3. Adding a carriage return makes a better presentation:

   Open window(50;50;500;250;5;"Operation in Progress")
   For($vlRecord;1;Records in selection([anyTable]))
      MESSAGE ("Processing record #"+String($vlRecord)+Char(Carriage return))
         ` Do Something with the record
      NEXT RECORD([anyTable])
   End for
   CLOSE WINDOW

This provides the following result (shown here on Windows):

4. Using GOTO XY and writing some additional lines:

   Open window(50;50;500;250;5;"Operation in Progress")
   $vlNbRecords:=Records in selection([anyTable])
   $vhStartTime:=Current time
   For($vlRecord;1;$vlNbRecords)
      GOTO XY(5;2)
      MESSAGE ("Processing record #"+String($vlRecord)+Char(Carriage return))
         ` Do Something with the record
      NEXT RECORD([anyTable])
      GOTO XY(5;5)
      $vlRemaining:=(($vlNbRecords/$vlRecord)-1)*(Current time-$vhStartTime)
      MESSAGE ("Estimated remaining time: "+Time string($vlRemaining))
   End for
   CLOSE WINDOW

This provides the following result (shown here on Windows):

See Also

CLOSE WINDOW, ERASE WINDOW, GOTO XY, Open window.


4D - Documentation   Français   English   German   Spanish   4D v11 SQL, Command Theme List   4D v11 SQL, Command Alphabetical List   4D v11 SQL, Constant Theme List   Back   Previous   Next