Re-posting it here with some extra comments, so that new developers can read and understand, when to use what method.
There are “only” 5 ways to close a form:
- Close - close the form. Similar to the 'X' button.
- CloseOK – close the form, and set the OK flag – called by the Commandbutton::Ok
- CloseCancel – close the form, and set the Cancel flag – called by the Commandbutton::Cancel
- CloseSelectRecord – close the lookup form, and set return record
- CloseSelect – close the lookup form, and set return value
The below methods (note their names are in past-tense) are used to determine if or how a form was closed:
- Closed – Returns true, if the form is no longer open
- ClosedOK – Return true, if the form was closed by the user clicking ‘OK’
- ClosedCancel – Returns true, if the form was closed by the user clicking ‘Cancel’
Finally, CanClose() is called inside super() of any of the close methods. If CanClose() returns false, the form is not allowed to close.