Merge from trunk
Updated the daily exchange rate screen since adding delete functionality.  Having moved the New/Delete buttons we still need the modal buttons on a panel on the right hand side.
Added a method to the TValidationControlsDict class to return whether all the controls in the dictionary are null.  A dictionary with all null controls is indicative that the server contructed the dictionary.  We can use this in our validation to check if the server is being asked to delete a record that has a nonDeletable column.  I haven't got as far as implementing this fully in this branch, but I started the work in branch 2003.  I hope to finish it sometime.
A small change to the templates because on some screens it was possible to load an empty grid and still find that the delete button was enabled (particularly the two control... templates.  All templates now simply call SelectRowInGrid - even for the case where there are no rows.  This is simpler and better all round.  But note that I have not modified windowEditWebConnectorMasterDetail but that screen is possibly not right in other respects so i am leaving it for now - it only is used in APEditDocument, so that needs testing specifically.
merge from trunk, fixes one compiler warning - there are two left still to be checked in by Tim
merge from lp:~alan-paterson/openpetraorg/dev_0002013_delete_button_fixes
fix compiler warnings
merge from lp:openpetraorg