Documentation YAML for OpenPetra Forms: Difference between revisions

From OpenPetra Wiki
Jump to navigation Jump to search
Line 4: Line 4:
== Attributes of the root node ==
== Attributes of the root node ==
* '''Template''': this refers to the cs file that is used for the template; PetraForm.yaml points to window.cs; the templates are located incsharp\ICT\PetraTools\Templates\Winforms
* '''Template''': this refers to the cs file that is used for the template; PetraForm.yaml points to window.cs; the templates are located incsharp\ICT\PetraTools\Templates\Winforms
** window.cs: the default template, sufficient for module main screens etc; example: FinanceMain
** ''window'': the default template, sufficient for module main screens etc; example: FinanceMain
** reportwindow.cs: for the reporting screens
** ''reportwindow'': for the reporting screens
** windowEditUIConnector.cs: this is for bigger edit screens, that require stateful sessions on the server; example: PartnerEdit? APEditSupplier?
** ''windowEditUIConnector'': this is for bigger edit screens, that require stateful sessions on the server; example: PartnerEdit? APEditSupplier?
** windowMaintainTable.cs: maintain the rows of a single table, in a grid, with edit section at the bottom; example: SetupCurrency
** ''windowMaintainTable'': maintain the rows of a single table, in a grid, with edit section at the bottom; example: SetupCurrency
** windowEditWebConnectorMasterDetail.cs: edit a master row, and maintain the detail rows; example: APEditDocument
** ''windowEditWebConnectorMasterDetail'': edit a master row, and maintain the detail rows; example: APEditDocument
** windowFind.cs: template for find screens. uses UIConnector for paged search results; example: APMain
** ''windowFind'': template for find screens. uses UIConnector for paged search results; example: APMain
* '''FormType''': Is not so important, because '''Template''' already defines a lot; at the moment, only the ''report'' type is different from the other types; this might change, and we will only need Template but not FormType
* '''FormType''': Is not so important, because '''Template''' already defines a lot; at the moment, only the ''report'' type is different from the other types; this might change, and we will only need Template but not FormType
** ''abstract'': if this is just used as a base form for other real forms
** ''abstract'': if this is just used as a base form for other real forms

Revision as of 08:05, 22 July 2009

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

  • Template: this refers to the cs file that is used for the template; PetraForm.yaml points to window.cs; the templates are located incsharp\ICT\PetraTools\Templates\Winforms
    • window: the default template, sufficient for module main screens etc; example: FinanceMain
    • reportwindow: for the reporting screens
    • windowEditUIConnector: this is for bigger edit screens, that require stateful sessions on the server; example: PartnerEdit? APEditSupplier?
    • windowMaintainTable: maintain the rows of a single table, in a grid, with edit section at the bottom; example: SetupCurrency
    • windowEditWebConnectorMasterDetail: edit a master row, and maintain the detail rows; example: APEditDocument
    • windowFind: template for find screens. uses UIConnector for paged search results; example: APMain
  • FormType: Is not so important, because Template already defines a lot; at the moment, only the report type is different from the other types; this might change, and we will only need Template but not 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
    • report: reporting 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
  • Namespace: this is the namespace that this screen should belong to. eg. Ict.Petra.Client.MFinance.Gui.AccountsPayable
    • if you want methods to be linked automatically to a web connector, you need to make sure that there is a webconnector in the same namespace (Server instead of Client, without Gui, but WebConnectors at the end), eg. Ict.Petra.Server.MFinance.AccountsPayable.WebConnectors.
  • TODO: BaseYaml, FormTitle, ClassName, WindowWidth, WindowHeight

Events

  • Events: here you can link form events to methods in your code
    • eg. Activated: {class=System.EventHandler,method=FTheObject.TFrmPetra_Activated}

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; eg grdSupplierResult: {Dock=Fill, ActionDoubleClick=actSupplierTransactions, SelectedRowActivates=cndSelectedSupplier}
  • special situation: create a detail row: see for example APEditDocument.ManualCode.cs; we do use the generated function CreateNewAApDocumentDetail, but we need to first calculate some actual parameters

ManualCode

The following functions can be written in the *.ManualCode.cs file, and the next run of nant generateWinforms will pick them up and call them from the generated code. If the functions don't exist, they will not be called from the generated code: this should avoid unnecessary empty functions in the manual code file.

Here are the names of the manual functions:

ShowDataManual
ShowDetailsManual
GetDataFromControlsManual
GetDetailDataFromControlsManual

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.