One of the options that you have when creating a macro in ER Studio Data Architect (ER Studio DA), is the ability to create a form known as a dialog. The form can gather information for the macro to use, display information to the user after an action has been performed, or interact with the user while the objects in the diagram are updated.
There are three steps to perform when setting up a form.
Creating the layout of the form, including placing the controls on the form.
Writing the code to pre-populate the controls.
Writing the code to perform actions after the dialog is used by the user.
ER Studio DA comes with quite a few working macros. They provide great examples on how to work with the objects and how to work with forms. I would recommend looking at the Definition Editor macro and the Index Naming macro. They both have highly interactive forms which show how to work with the different controls and how to interact with the events of the controls.
Note: While the objects representing the various aspects of the data model are well documented, I have yet to find documentation on the dialog object or the controls that are placed on it. I do admit, I have not tried contacting Embarcadero as of yet either.
Let’s look at the code from the Definition Editor macro. The first line below begins the definition of the form followed by a list of controls that will appear on the form. The order they are listed will be the sequential order of the controls if you TAB through them. Below I numbered a few areas to look at.
The first two numbers are the height and width of the form followed by the name that will appear in the title bar.
At the end of controls that will cause an event, such as when a button is pushed, you will find a name preceded by a period. This is not a procedure name like we saw with #2 above. This will be the keyword you search for in the MyDialogFunc. We’ll see this in a minute.
After the definition of the form is created, a variable is created to represent the form during its life.
Next the controls that need to be initialized and pre-populated are coded.
And Finally the call to the form is called which will display the form to the user.
You can manually create and modify the form, or you can use the Editor User Dialog button on the toolbar. Make sure your cursor is in the middle of the code for the form, or you will create another form.
When the myDialogFunc procedure is created, it requires three parameters.
DlgItem is the name of the control that caused an event, which caused the MyDialogFunc to be called.
SuppValue contains the data of the DlgItem.
If you were to capture the pushbutton event for the UpdateTable, you would create an If statement to look at the DlgItem value when Action = 2.
There are some other functions that are needed while working the controls. In the screenshot below, you can see DlgValue and DlogText. These allow you to get information from other controls on the form. There are others that you look at in other macros as well.
I really like this macro, but there was one issue. I use schemas (called owners in ER Studio DA), and I wanted them to be displayed with the table names… So I modified the code.
The first thing I did was to widen the list boxes. I like long names and they just didn’t fit. I used the User Dialog Editor to accomplish this.
The second thing I did, was add MyEntity.Owner to the name of the tables. This was done in the procedure called getTables.
Note: Tables are referenced differently in the logical model than the physical model. Make sure you are checking to see if the user executed the macro from the logical or physical model and then use the correct object.