As noticed in Hello Word – 3 sample, HMG has a lot of message functions with name prefixed by “Msg”:
MsgBox() :
Shows a Message Box
Syntax: MsgBox(<cMessage>,[<cTitle>]) –> Nil
Example : MsgBox( “This a simple message”, “MsgBox Example” )
MsgExclamation() :
Shows a message box with an exclamation icon and a special sound.
Syntax: MsgExclamation(<cMessage>,[<cTitle>]) –> Nil
Example : MsgExclamation( “Wrong selection !”, “MsgExclamation Example” )
MsgInfo() :
Shows a message box with an information icon and a special sound.
Syntax: MsgInfo (<cMessage>,[<cTitle>]) –> Nil
Example : MsgInfo( “For your information”, “MsgInfo Example” )
MsgStop() :
Shows a message box with an stop icon and a special sound.
Syntax: MsgStop(<cMessage>,[<cTitle>]) –> Nil
Example : MsgStop( “End of file reached”, “MsgStop Example” )
MsgOkCancel() :
Shows a message box with [Ok] and [Cancel] buttons
Syntax: MsgOkCancel(<cMessage>,[<cTitle>]) –> lResponse
Example : MsgOkCancel( “Are your to exit ?”, “MsgOkCancel Example” )
MsgRetryCancel() :
Shows a message box with [Retry] and [Cancel] buttons
Syntax: MsgRetryCancel(<cMessage>,[<cTitle>]) –> lResponse
Example: MsgRetryCancel( “File open error !”, “MsgRetryCancel Example” )
MsgYesNo() :
Shows a message box with [Yes] and [No] buttons
Syntax: MsgYesNo( <cMessage> , <cTitle> ) –> lResponse
Example: MsgYesNo( “Are you sure to delete file ?”, “Confirm Delete” )
Like MsgBox(), all message functions accept parameters as a string constant representing the message itself. All message functions also have a second parameter, again a string constant representing the title of message box.
As noticed in syntax, the first four message functions returns NIL, and the last three returns a logical value.
<lResponse> is .T. when selected first option; Ok, Retry and Yes.
Try and observe results.
Hints :
– As a rule, every HMG project must have one and only one “Main” window. This message functions are exception of this rule. If you have only message function(s) you can build a program without main window.
– For multiple lines message body you may use CRLF. CRLF is a predefined constant in HMG. If required you may define it:
CRLF := HB_OsNewLine()
Example :
MsgBox( "This is a" + CRLF + "multiple line" + CRLF + ; "message", CRLF + "Multi-Line" )
– Since message function accept only “C” ( Character ) type arguments as <cMessage> and <cTitle>; for messaging other that ‘C’ type arguments, you may use appropriate function to convert to character type. See below for an example.
Example :
/* HMG Message functions */ #include <hmg.ch> dToday := DATE() lMaried := .T. nSalary := 123.456 PROCEDURE Main() SET DATE GERM SET CENT ON dToday := DATE() lMaried := .T. nSalary := 123.456 DEFINE WINDOW frmMsgFuncs ; AT 0,0 ; WIDTH 400 ; HEIGHT 200 ; TITLE 'Message Functions' ; MAIN DEFINE MAIN MENU DEFINE POPUP '&Test' ITEM 'Msg&Box' ACTION ; MsgBox( "This a simple message", "MsgBox Example" ) ITEM 'Msg&Exclamation' ACTION ; MsgExclamation( "Wrong selection !", "MsgExclamation Example" ) ITEM 'Msg&Info' ACTION ; MsgInfo( "For your information", "MsgInfo Example" ) ITEM 'Msg&Stop' ACTION ; MsgStop( "End of file reached", "MsgStop Example" ) ITEM 'Msg&OkCancel' ACTION ; MsgOkCancel( "Are your to exit ?", "MsgOkCancel Example" ) ITEM 'Msg&RetryCancel' ACTION ; MsgRetryCancel( "File open error !", "MsgRetryCancel Example" ) ITEM 'Msg&YesNo' ACTION ; MsgYesNo( "Are you sure to delete file ?", "Confirm Delete" )
ITEM 'Multiple &Line' ACTION ; MsgBox( "This is a" + CRLF + "multiple line" + CRLF + ; "message", CRLF + "Multi-Line" ) ITEM 'Non-Character' ACTION ; MsgBox( "Today : " + DTOC( dToday ) + CRLF +; "Married : " + IF( lMaried, "Yes", "No" ) + CRLF +; "Salary : " + LTRIM( STR( nSalary ) ) ,; "Non-Char" ) SEPARATOR ITEM "E&xit" ACTION ThisWindow.Release END POPUP // File END MENU // Main() END WINDOW // Main CENTER WINDOW frmMsgFuncs ACTIVATE WINDOW frmMsgFuncs RETURN // Main() *-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._.-._-._.-._.-._.-._.-._.-._.-._.-