I added a dummy method for ValidateAllData to the usercontrolUnbound template so that the manual code files no longer need to have it.
Added a help screen to the help menu that shows keyboard shortcuts.
Added Filter/Find to Extracts (Master and Maintain)
Uncrustify
Merge from trunk - no conflicts
These are a few places where I need to handle Ctrl+S correctly
Fixed a place where I was still using F9 instead of the arrow keys for ProcessCmdKey
I noticed that this screen did not initialise its record count when loaded so added a line to RunOnceOnActivationManual.
Updated my Filter/Find tool that shows the state of implementation.  When I run it now it shows that all screens have been implemented.  (But some screens need a bit more work!)
Not sure how my code managed to build - but these files should have been checked in before.  All due to adding ValidateAllData to the template so it need not be added to manual code.  (See earlier checkin)
Just changes to the text for keyboard help as a result of feedback.
Merge from trunk - no conflicts
Very small wording change to the keyboard help text for CTRL+TAB
Minor changes:  1. Found that the ENTER key did not work well with a grid on a dialog because the grid interfered with the behaviour and caused the screen to hang.  2. I had used the wrong event for tab changing.  It was Click but needs to be SelectedIndexChanged for keyboard shortcut Ctrl+Tab to work!  Seeing as this is one of the listed shortcuts, this was important!
On these three screens I have added a clone of a radio button group as a comboBox.  This completes the outstanding work on these screens.
On the exchange rate screens I have added a filter based on the effective date because when these screens were originally written I did not have a txtPetraDate clone.  Also I have integrated the 'Hide other currencies' checkbox into the Filter/Find logic, by using SetBaseFilter.
Added a capability for using the DataColumn attribute of a cloned control.  Where this applies the column is taken from the attribute rather than the controlName.
This was a nasty bug in code that I had previously written.  The result was that a screen's Save button would get enabled even when there were no changes - though only in somewhat unusual circumstances.  It was caused by the ClearControls() method that is used to clear details panel control contents when there is no grid row.  I wrapped the code with DisableChangeDetection and EnableChangeDetection, which seemed ok - but of course it is important to only Enable it at the end if it was already enabled at the start.  So now I check the state at the start before disabling it so I can check whether it needs re-enabling at the end.
Added a set of checkboxes to the filter panel so you can filter by the content of the checkedList.  This required a couple of small changes to the core Filter code.  I also needed to change the NewRecord code and found that the standard CreateNewPDataLabel method was all that was required, and it has the advatage of including the code to detect if the new record is immediately filtered out by the filter criteria.
Uncrustify