We have our dialog functions in MBS FileMaker Plugin to quickly show a dialog in a calculation. Usually to show a custom dialog in FileMaker at any time to quickly report something to the user or to quickly ask a question with yes or no.
For example we can just ask with a Let statement for whether we should delete a file:
Let (
[
_ = MBS("Dialog.Reset") ;
_ = MBS("Dialog.SetDefaultButton" ; "Yes") ;
_ = MBS("Dialog.SetOtherButton" ; "No") ;
_ = MBS("Dialog.SetAlternateButton" ; "Cancel") ;
_ = MBS("Dialog.SetMessage" ; "Delete the old file?") ;
_ = MBS("Dialog.SetWindowTitle" ; "Backups done") ;
_ = MBS("Dialog.Run") ;
button = MBS("Dialog.GetButtonPressed")
] ;
// 0 -> Yes, 1 -> No, 2 -> Cancel
button
)
A few years ago we added a few helper functions for macOS to add some text fields to ask a question and get some data. For example we may ask:
-
The new file name for renaming a file
-
Ask for user name and password for new account
-
Ask user for an email, phone number or some other quick value
-
Ask for some initial values to create a new record.
-
Enter a approval code like TOTP
If someone needs to pick something from a list, you better use ListDialog functions.
For the fields, let's make a little script to ask the user for an user name and password with two fields:
Set Variable [ $r ; Value: MBS( "Dialog.Reset" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.SetAlternateButton" ; "Cancel" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.SetDefaultButton" ; "Create" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.SetInformativeText" ; "To quickly add an user name and optional a password. If no password is provided, we generate one." ) ]
Set Variable [ $r ; Value: MBS( "Dialog.SetMessage" ; "Create new user account for My Solution" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.AddField"; "Account name:"; ""; "Name" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.AddField"; "Initial password:"; ""; "Password" ) ]
Set Variable [ $r ; Value: MBS( "Dialog.SetWindowTitle" ; "Create Account" ) ]
Set Variable [ $result ; Value: MBS( "Dialog.Run" ) ]
Set Variable [ $name ; Value: MBS( "Dialog.GetFieldText"; 0) ]
Set Variable [ $pass ; Value: MBS( "Dialog.GetFieldText"; 1) ]
Show Custom Dialog [ $result & ¶ & $name & ¶ & $pass ]

Or as Let statement:
Let(
[
r = MBS( "Dialog.Reset" ) ;
r = MBS( "Dialog.SetAlternateButton" ; "Cancel" ) ;
r = MBS( "Dialog.SetDefaultButton" ; "Create" ) ;
r = MBS(
"Dialog.SetInformativeText" ;
"To quickly add an user name and optional a password. If no password is provided, we generate one."
) ;
r = MBS( "Dialog.SetMessage" ;
"Create new user account for My Solution" ) ;
r = MBS( "Dialog.AddField" ;
"Account name:" ;
"" ;
"Name" ) ;
r = MBS( "Dialog.AddField" ;
"Initial password:" ;
"" ;
"Password" ) ;
r = MBS( "Dialog.SetWindowTitle" ;
"Create Account" ) ;
$result = MBS( "Dialog.Run" ) ;
$name = MBS( "Dialog.GetFieldText" ; 0 ) ;
$pass = MBS( "Dialog.GetFieldText" ; 1 )
] ;
$result
)
As you see we can just evaluate a Let to get the variables filled. This is very convenient to show a dialog at the spot in some calculation.
If you need more, check out the example on how to make a dialog from a FileMaker layout and put many more controls on the dialog.