| **Navigation:**  Application Generator > Procedure Properties >====== Procedure Properties--Frame ====== | [[tplprocexternal.htm|{{btn_prev_n.gif|Previous page}}]][[coming future.htm|{{btn_home_n.gif|Return to chapter overview}}]][[tplprocprocess.htm|{{btn_next_n.gif|Next page}}]] | | || This template provides an MDI (Multiple Document Interface) parent frame, containing a predefined shell menu. The menu provides useful items such as an Exit command, plus the standard editing and window management commands. When creating an MDI application, the Frame should be the main procedure. Use the Initiate Thread code template to start new execution threads for each MDI child window which you want to appear inside the frame. | **Procedure Name** | The **Procedure Name** is displayed here. Press the ellipsis button to change the name if desired. You will be prompted for a New Procedure Name, and the ability to Accept or Discard your changes. | | **Template** | The base template type used by this procedure is displayed here. You can change the template type by pressing the ellipsis button to the right. The //Select Procedure Type// dialog is displayed for a new selection if needed. | | **Description** | A short text description for the procedure, which appears next to the procedure name in the **Application Tree **dialog.Press the ellipsis ( ... )** **button to edit a longer (up to 1000 characters) description. | | **Category** | A category is used to help you group procedures together when the **Category** Tree Mode is active. | | **Module Name** | The source code file to hold the code for the procedure. Select from the dropdown list. By default, the Application Generator names modules by taking the first five characters of the .APP file name, then adding a three digit number for each module. | | **Prototype** | Allows you to optionally type a custom procedure [[prototyping and parameter passing in the application generator.htm|prototype ]]which the Application Generator places in the MAP section. | | **Parameters** | Allows you to optionally enter any parameter names (a list of variables separated by a comma) | | **Declare Globally** | Check this box to generate the procedure's prototype into the PROGRAM's MAP, rather than the MODULE's MAP. This makes the procedure callable from any other procedure, but it also forces a recompile of all program modules whenever you change the prototype. | | **Export Procedure** | Declares the procedure in the export file, enabling it to be called by another application. Note: This checkbox is only available when the target file specified in Application Properties is a Dynamic Link Library (.DLL). | | **Actions** | If any control templates were pre-defined in the current procedure template, or were in a window or report by you, this button accesses the **Actions **dialog for the control templates.Control templates provide "off the rack" controls, such as list boxes, //and //the code to maintain them. This allows you to start with a "bare" procedure template, such as the generic window, and add controls to create your own browse or form windows. | | **Window** | Calls the **Window Designer**, to visually design the window. Press the ellipsis button to access the **Window Editor**. | | **Report** | Calls the **Report Designer**, to visually design the window. Press the ellipsis button to access the **Report Editor**. | | | In the **Actions** dialog: | | **Parameters** | Lets you specify parameter names (an optional list of variables separated by commas, with the entire list surrounded by parentheses) for your procedure, which you can pass to it from a calling procedure. You must specify the functionality for the parameters in embedded source code. **See Also:** [[procedure calls.htm|PROCEDURE Calls]] . | | **Return Value** | For functions, lets you specify the variable receiving the return value. | | **Window Behavior** | Press this button to control the behavior of the Window. See [[tplprocwindow general.htm|Window Behavior]] | | **ListBox Styles** | Press this button to maintain any List Box Styles used by this procedure. See [[tpllistboxstyles.htm|List Box Styles]]. | | **BIND Fields and Procedures** | Press this button to maintain all BINDed variables and procedures used in this procedure. See [[tplbindfieldsandprocedures.htm|BIND Fields and Procedures]]. | | **Splash Procedure** | Names a procedure to call after the application frame opens, but before any user events are generated. Select from the drop-down list, or type a new procedure name. | | | By convention, a splash procedure provides a visual or audio (or both) fanfare for your program. | | | | {{blk2blue.jpg|blk2blue.jpg}} In addition to the standard procedure prompts, there are **Procedure Tabs** that access other important procedure components: | **Calls** | References procedure calls made in hand-coded, embedded source. | | | Select this tab to access the Called Procedures dialog. To add a procedure, enter the procedure name in the **Add a New Procedure** section and press the A**dd **button. | | | If procedure calls already exists, the procedures appear selected in the **Called Procedures **dialog. To add another, simply select it. To delete a call simply deselect it. Additional buttons allow you to select all or deselect all as needed. | {{tipbox.jpg|TipBox.jpg}} The purpose of the Calls tab is to add procedures called in embedded source code. The normal way to add template procedures to the Application Tree is to create a menu or toolbar command, add the procedure name via its Actions button, and let the Application Generator automatically add it to the tree. | **Embeds** | Displays the **Embedded Source **dialog. You can then select either a field specific event or window related action, then add executable source code to customize how the procedure will handle it. | | | After you choose an embed point in the **[[gen72.htm|Embedded Source]] **dialog, you choose the code to execute. You can specify a call procedure, which is then added to the tree. You can write your own code with the text editor. Or, you can choose and customize a code template, which is a combination of pre-written code and prompts to "fill-in-the-blanks." | | | Embedded source gives you complete control over //all //the processing in your procedures. It's one of the most powerful tools Clarion provides you. | | **Extensions** | Accesses extension templates, if any are installed on your system. Extension Templates allow additional functionality through "add-ins" to the Application Generator. | | **Formulas** | Accesses the **Formula Editor**, which allows you to create computed and/or conditional fields, which you can then reference in the controls you place in your windows and reports. |