4D v13.4MESSAGE |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v13.4
MESSAGE
|
MESSAGE ( message ) | ||||||||
Parameter | Type | Description | ||||||
message | String |
![]() |
Message to display | |||||
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:
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:
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):
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):
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):
Product: 4D
Theme: Messages
Number:
88
Modified: 4D 2004
CLOSE WINDOW
ERASE WINDOW
GOTO XY
Open window