Documentation YAML for OpenPetra Forms
Jump to navigation
Jump to search
Inheritance
- generally the yml files inherit from each other (BaseYaml)
- this allows us to only define the default menu items once, in PetraForm.yaml, and they will be included in all derived forms
Attributes of the root node
- FormType:
- abstract: if this is just used as a base form for other real forms
- navigation: the main window, the module windows
- edit: edit screens
- crud: CRUD screens (Create, Read, Update, Delete)
- find, browse: find screens
- MasterTable: if this is set, you will need to write less DataField attributes for the controls. The name of the controls will be matched to a field in the given table; if such a table field exists, it will be linked to the control.
- DetailTable: similar to MasterTable, but this is for the detail table; controls must have the word Detail after the prefix, eg. txtDetailAmount
Events
- Events: here you can link form events to methods in your code
- eg.
Activated: {class=System.EventHandler,method=FTheObject.TFrmPetra_Activated}
- eg.
Actions
- Actions: actions can be used by menuitems, toolbarbuttons, and other controls; this is useful to be able to enable/disable an action on the whole screen, and to only define a certain action once, and refer to it from all controls that trigger the same action
- eg.
actClose: {Label=&Close, ActionId=eClose, Tooltip=Closes this window, Image=Close.ico}
- eg.
actMainMenu: {Label=Petra &Main Menu, ActionClick=FTheObject.OpenMainScreen}
- Enabled: Actions can depend on other actions or conditions; they will be disabled if the condition is false; eg
Enabled: cndSelectedSupplier
; this can be set in a grid, with SelectedRowActivates; eggrdSupplierResult: {Dock=Fill, ActionDoubleClick=actSupplierTransactions, SelectedRowActivates=cndSelectedSupplier}
- eg.
Controls
- Controls: see Screen scaffolding: controls
Menu & Toolbar
- Menu: TODO
- Toolbar: TODO
Layout
- Layout: TODO (Tabbed pages etc)
Another option for layout is the Controls property that can be used for Panels and GroupBoxes: You can use several rows to arrange the controls and they are aligned in a table layout.