As stated before, dialogs are asynchronous (async), this practically means the execution flow will not wait for the user to handle the dialog (close the message, respond to a question, prompt some values) before proceeding to the next instruction.
This simple yet very significant difference across the mobile and desktop worlds can be difficult to get, especially by experienced developers. You may be really acquainted with the synchronous (sync) model for dialogs. I've seen developers using dialogs for decades to pause the execution flow (ShowMessage debugging, anyone?), and relying on such behavior has a significant impact on your application design.
In very simple terms, on desktop platforms, the call to ShowMessage doesn't return control until the user closes the dialog, that is, you are assured that the next line of code you wrote after the ShowMessage call isn't executed until the user...