Modified the templates to include SETINITIALFOCUS inside RunOnceOnActivation.  By default this codelet is empty, but if the screen has a grdDetails then that control gets the focus, unless a different control is specified in the YAML root node using 'InitialFocusControl'.  By adding this feature we have restored the previous behaviour that the initially focused control on most screens is the grid.  (After some recent checkins of mine the initially focused control had become the New button).
Added code to FormWriter.cs for generating the codelet SETINITIALFOCUS.
Added an event handler for the Find menu.  Also added an equivalent Filter menu.  These menu items display the Filter/Find panel if it is not already shown, selects the correct tab, and focuses the first control.
A couple of fixes to the grid code following my checkin in my last branch.  1. Tweaked the keyboard handler for ENTER so that it is only 'handled' if it does something.  This is necessary in order for ENTER key to work at the form level for doing things like pressing ENTER on a selected Journal row in order to select the Transactions tab for that journal.  2. Tweak to the mouse handler so that when the user clicks a row with the mouse, we always 'pretend' that the first column was clicked.  We need this so that our logic for ENTER handling works right.
Small change so that the focus goes to the first control on the filter/find when the user clicks the Filter button (checkbox)
Found another small bug in the tab control (similar to the bug I fixed in my previous branch).  This time it related to CTRL+SHIFT+TAB where once again a <= should have been a >=.  The error resulted in a handled exception.
1. Added a public DoubleBuffered property to some controls (particularly Panels).  This does considerably reduce the flicker that is observed on GL Batch screen when tabbing from right to left.  2. Created an override for ProcessTabKey so that we now modify the tab order when tabbing round the screen.  When you tab into the filter/find control the next TAB press takes you to the last tabstop on the control (the small Close Box).  Effectively we now skip all the CONTENT of the Filter/Find.  But if you mouse into the edit area and then TAB you do go through all the fields.  This is a good compromise, I think, and nearly fits the proposal in case 2505.
Added a filter menu and uncommented the Find menu handler.  So all forms now get these menus.  The auto-generator now creates handlers as appropriate
Found four screens where we need to select a grid row after loading data in manual code based on the Ledger Number.  If the call to SelectRowInGrid is missing we do not get a correct update of details.
Merge from trunk
Merge from trunk
1.  Had to create two new cs files and move code from Common.Controls to Client.CommonControls because Filter/Find now deals with TtxtPetraDates.
2.  There are a few subtle changes to the control extensions to handle new filter/find capabilities (like cloning a radio group to a TCmbAutoComplete)
Filter/Find needs to make a call to the user controls when the parent screen is activated, so this adds a new method RunOnceOnParentActivation() which can contain code that needs to be executed at that time.
Added a placeholder USERCONTROLSRUNONCEONACTIVATION which the control generator can populate with a call to ucoControlName.RunOnceOnParentActivation() so that user controls can take an action when the parent form has been displayed.  Each user control will be called if there are more than one.  (See GLBatch and GiftBatch)
Updated the code so that both Filter and Find main menu items get actioned
Modified the code that handles Filter/Find menu handling.  The code that I had placed in the auto-generator has now been moved into the template itself.
USERCONTROLSRUNONCEONACTIVATION codelet
1.  Added code to the Filter/Find generator that can handle cloning multiple instances of a control - typically for dates and numbers so that the user can specify a range.
2.  Added code to clone a radio group to a TCmbAutoComplete.
3.  Added code to clone a TtxtPetraDate
4.  Added code to deal with a TDSTable
First checkin of code that adds Filter/Find to Gift Batch.
A minor fix to my previous changes.  A mouse click on a header row no longer gets to be considered as a click on column 0.  This is because the header column widths can be adjusted individually and my previous change stopped that from working!