-------------------------------- Icetips SQL Browse Templates -------------------------------- --------------------------------------------------------------------------------------------------- March-14-2006: --------------------------------------------------------------------------------------------------- 1. Templates Option to refresh row after update set to True so it does not have to be set for each browse if needed. --------------------------------------------------------------------------------------------------- March-11-2006: --------------------------------------------------------------------------------------------------- 1. Classes CheckLocatorFilter method did not double up single quotes in locator filters properly. Fixed. --------------------------------------------------------------------------------------------------- January-27-2006: --------------------------------------------------------------------------------------------------- 1. Classes CCSButtons.TakeAlertKey changed to VIRTUAL method. --------------------------------------------------------------------------------------------------- August-23-2005: --------------------------------------------------------------------------------------------------- 1. Templates With large dictionaries an excessive time delay was experienced when opening the browse properties. The time would grow in proportion to the number of tables and columns in the dictionary. Fixed. ! ! ---------- VERSION 6.107, July 18, 2005 ---------- ! --------------------------------------------------------------------------------------------------- July-25-2005: --------------------------------------------------------------------------------------------------- 1. Templates Option to set the browse control description in the table schematic. 2. Templates Option to force refresh of a browse row after Change --------------------------------------------------------------------------------------------------- July-20-2005: --------------------------------------------------------------------------------------------------- 1. Templates Option to color entire row. Coloring for individual columns takes priority. As with column coloring, conditions can be applied. Color values or variables can be used for optimum flexibility. --------------------------------------------------------------------------------------------------- July-10-2005: --------------------------------------------------------------------------------------------------- 1. Templates Changed dll from itccs.dll to ITRun32.dll which is now standard in all our products. --------------------------------------------------------------------------------------------------- February-21-2005: --------------------------------------------------------------------------------------------------- 1. Templates Added option to arm concurrency checking for updates. --------------------------------------------------------------------------------------------------- January-6-2005: --------------------------------------------------------------------------------------------------- 1. Classes Added AddPopupButton, AddPopupSeparator, PopupInitialized and GetControlName. PopupInitialized is called before and after the update buttons are added. If before the pAfter parameter is false, if after, the pAfter is true. The AddPopupButton can be used to add a button to the popup menu. The location of the new item can be controlled by using the PopupInitialized: If pAfter = False SELF.AddPopupButton(?ButtonBefore) Else SELF.AddPopupButton(?ButtonAfter) End This would add the ?ButtonBefore above the Insert/Change/Delete items and ?ButtonAfter below the Insert/Change/Delete items. AddPopupSeparator adds a separator. GetControlName is used internally to get the FEQ name of the button passed to AddPopupButton. --------------------------------------------------------------------------------------------------- January-5-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added EnableButtons, RegisterButton and SetButtonCheck to add ability to enable and disable the update buttons depending on if there are records in the browse queue or not. RegisterButton can be used to add buttons that should be affected as well. It takes an optional pReverse parameter that can be used to indicate if a control should be enabled when the browse is empty instead of disabled --------------------------------------------------------------------------------------------------- November-17-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added TakeAcceptedSelect virtual method. This method is called by the TakeAccepted method after the row has been selected. If the row is successfully selected and retrieved the method is called with RequestCompleted as parameter, otherwise it is RequestCancelled. This allows easy shortstopping of selecting of a record from the listbox and gives an easy way to check if everything is correct and either cycle back to the listbox, change the response or continue without any change. Make sure to put all embedded code _before_ the parent call, as the parent call executes POST(EVENT:CloseWindow). --------------------------------------------------------------------------------------------------- November-17-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added two virtual methods that are called at the end of the Reset method depending on if there are records in the queue or not. If records are found, then the BrowseRecordsFound method is called, otherwise the BrowseNoRecordsFound method is called. Both are pure virtual methods. 2. Classes Calls to wDebug from WindowComponent interface methods commented out. The interface methods created a lot of debug entries, that for most parts get in the way. Uncomment them if needed. --------------------------------------------------------------------------------------------------- November-14-2004: --------------------------------------------------------------------------------------------------- 1. Classes Improving debug logging. 2. Classes Added debug logging to all methods. Debugging can now be turned on by using /ITSQL command line parameter to the exe or /ITSQLQ. The difference is that with /ITSQLQ all queue calls are debugged as well. This causes a lot of debugging code to be sent to the debug viewer and may not be of general use. With /ITSQL it is still sending quite a bit of information (opening a browse window results in about 500 lines of debug information sent to the debug viewer) 3. Classes Added ProcedureName property. This is used in the debug methods to identify the procedure sending the debug information. Thread and object name also identify the exact source. 3. Templates Added code to assign the ProcedureName property from the GlobalErrors.GetProcedureName() method. ! ! ---------- VERSION 6.105, August 16, 2004 ---------- ! Need some work on the image visual indicators. Header text is not padded correctly and it does not always pick up the current column correctly when opening the browse. Window needs sub- classing to redraw images properly. --------------------------------------------------------------------------------------------------- July-1-2004: --------------------------------------------------------------------------------------------------- 1. Templates Exclamation mark can now be used to enter literal Where clause that is not quoted by the template - similar to the Global/Column filter expressions. 2. Templates Right hand selection for Where clause changed from FIELD to EXPR, so literal strings can be entered there. --------------------------------------------------------------------------------------------------- June-10-2004: --------------------------------------------------------------------------------------------------- 1. Classes New feature: It is now possible to use both SQL filters and Clarion based filters. The Clarion based filters are added to the SQL filters and are kept separate. This allows implementation of QBE products. Property: QueryFilter Methods: ForceQueryFilter, SetQueryFilter, GetQueryFilter, ClearQueryFilter Note that the tables used in Clarion filters must be part of the view structure for the SQL browse. 2. Templates New template: New Control template that implementes BoxSoft's SuperQBE in the SQL templates. This new template adds a Query and Clear Query buttons to the SQL browse. 3. Templates BoxSoft's SuperTagging implemented. Some changes to the SuperTagging template that BoxSoft needs to distribute. There are some limitations in this implementation so far. The Previous/next tag buttons do not work. So far tested with Memory tagging and "Byte in Primary" tagging. --------------------------------------------------------------------------------------------------- March-08-2004: --------------------------------------------------------------------------------------------------- 1. Templates Changed child synchronization code generation so that now there is a source embed point between the assignment of the filter and the ForceGlobalFilter. This point is called "After building filter" and is at priority 3001. This makes it easy to add dynamic or fixed filters to the child synchronization as the sync filter would overwrite the global filter placed on the child. Now you can add the filter into the FetchQueue method, at priority 3001. This makes child synchronization much easier. --------------------------------------------------------------------------------------------------- March-04-2004: --------------------------------------------------------------------------------------------------- 1. Classes FetchFormat method used a 500 character string to assign the Prop:Format of the listbox to. This caused problems with swapping columns as the format string was not big enough. Increased to 5000 characters which fixed the problem. Went through all the methods in ccssql1.clw and increased string/cstring variables that looked like they might be hitting size limits. 2. Templates If a browse window is set to open MAXIMIZED, this causes a lot of shuffling and resizing after resize fix reported by George Lehman and implemented in the last update. Fix posted by Robert Sutton: In Window Manager init "Open the Window" embed (priority 8001) I put: if 0{PROP:Maximize} then 0{PROP:Hide} = 1. In Window Manager Reset Parent Call embed (priority 5001) I put: if 0{PROP:Maximize} then 0{PROP:Hide} = 0. I will implement an option to hide/unhide the window while it loads in the templates before next update. --------------------------------------------------------------------------------------------------- February-26-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added ProcedureName property and parameter to the Init method. Used for future support. 2. Templates Added parameter to the Init method call to pass the %Procedure symbol value. 3. Templates Custom joins causes problems in the %ConstructJoins group. Attempted fix in testing. --------------------------------------------------------------------------------------------------- February-25-2004: --------------------------------------------------------------------------------------------------- 1. Classes Locator was being forced Upper cased. Removed in class. If uppercased locator is needed, make sure the locator entry field uses uppercase as entry mode. 2. Classes Added option to color the background of the currently active sort column instead of or in addition to changing the text color. 3. Classes Sort image did not redraw after the list was refilled when locator was used. Fixed. --------------------------------------------------------------------------------------------------- February-24-2004: --------------------------------------------------------------------------------------------------- 1. Templates Implemented sorting images in templates. --------------------------------------------------------------------------------------------------- February-23-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added an option to use images as sorting indicators in columns. --------------------------------------------------------------------------------------------------- February-20-2004: --------------------------------------------------------------------------------------------------- 1. Classes There were still references to UPPER() on the SQL field. This would cause problems with case sensitive engines, such as ASE. Appears to be fixed now. --------------------------------------------------------------------------------------------------- February-20-2004: --------------------------------------------------------------------------------------------------- 1. Templates Queue was declared after the window was declared. This made it impossible to reference it in other window controls. 2. Classes There were still references to UPPER() on the SQL field. This would cause problems with case sensitive engines. Attempted fix in beta. --------------------------------------------------------------------------------------------------- February-18-2004: --------------------------------------------------------------------------------------------------- 1. Classes Under some circumstances when the browse was scrolled to the bottom or top it would loop and start at the other end. Fixed. 2. Templates Greenbar would unconditionally override color settings for columns making it impossible to use the Greenbar with conditional colors etc. Fixed for beta. Still problem in conditional greenbar settings. --------------------------------------------------------------------------------------------------- February-16-2004: --------------------------------------------------------------------------------------------------- 1. Classes When scrolling down (EVENT:ScrollDown) the scrollbar would not advance when hitting the last record. It had to scroll twice to move. Fixed. 2. Classes When the highlight bar was on the top row, it would jump to the bottom when using Page Down and then to the top. Results were jumpy browse and it would sometimes jump over a full page of data. Fix in beta testing. --------------------------------------------------------------------------------------------------- February-05-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added LocateValue method. This method forces a locator action on the browse. Basically it simulates the user entering text into the locator and tabbing of the locator control. This method can come in handy if a value needs to be selected into the locator. --------------------------------------------------------------------------------------------------- January-01-2004: --------------------------------------------------------------------------------------------------- 1. Classes Added RefreshRowFromTable method. This method refreshes the view from the database and refreshes the queue from the view. This can be used to update the current row if the database is changed without making a call to the update form, for example by using Prop:SQL with "Update table" --------------------------------------------------------------------------------------------------- December-12-2003: --------------------------------------------------------------------------------------------------- 1. Templates Code that was generated automatically for local variables, causes problems in some migrated apps. Added option to exclude all generated code for local variables, essentially going back to the same generation as in previous version. --------------------------------------------------------------------------------------------------- December-03-2003: --------------------------------------------------------------------------------------------------- 1. Templates SQL template set the WindowManager.FirstField to the listbox unconditionally. This is very inconvenient where SQL browses are populated on forms. Added checkbox on General tab so the templates can conditionally generate this code. It defaults to Checked which resets the FirstField. Leave it unchecked to leave the FirstField. --------------------------------------------------------------------------------------------------- November-18-2003: --------------------------------------------------------------------------------------------------- 1. Classes In case sensitive databases like ASE, external names would be upper cased, causing problems with ORDER BY and WHERE clauses. - Still causing problems in prefixes used for aliases. 2. Templates Added code to detect external fieldnames in situations where fields are selected to generate SQL (for example in the filter windows etc.) so that the SQL fieldname is the correct fieldname based on the dictionary setting for the field. --------------------------------------------------------------------------------------------------- September-11-2003: --------------------------------------------------------------------------------------------------- 1. Template Added option to select a field and get valid SQL field code back to use in Global Filter, Column Filter and Extended SQL buttons. --------------------------------------------------------------------------------------------------- September-1-2003: --------------------------------------------------------------------------------------------------- 1. Template Changed %GetBrowseColumnHeaders group to use #FIND instead of #SET to prevent "%ColVar has no instance" problem. --------------------------------------------------------------------------------------------------- August-30-2003: --------------------------------------------------------------------------------------------------- 1. Template Added option to clear records in the PrimeRecord method. This is from a button on the UpdateButton template. --------------------------------------------------------------------------------------------------- August-21-2003: --------------------------------------------------------------------------------------------------- 1. Classes Added DebugProfiling property to CCSButns. This displays the clock() value using ProfileTimePicture property instead of @t4 in wDebug. 2. Classes Added ProfileTimePicture property. Defaults to '@n9' Change it after call to the Init method. 2. Classes Added a call to CloseView method at the beginning of the Destructor. This prevents a View related GPF in Clarion 6. Courtesy of Brian McGinnes. --------------------------------------------------------------------------------------------------- August-07-2003: --------------------------------------------------------------------------------------------------- 1. Template On forms with SQL browses, TakeAccepted code would be called for every field when the form is in AcceptAll mode. This would dramatically slow down closing forms with SQL browses on them. Fixed, courtesy of George Lehmann --------------------------------------------------------------------------------------------------- August-04-2003: --------------------------------------------------------------------------------------------------- 1. Template: Code generated for local variables in %TemplateAutoinitgroup2 would fail with multiple local fields. Fixed. Version 6.001 Final release --------------------------------------------------------------------------------------------------- July-12-2003: --------------------------------------------------------------------------------------------------- 1. Template: Automatic code generation for local variables would fail under certain conditions. Fixed. 2. Template: Spelling error in the Variables button text. Fixed. 3. Template: Select did not work. Fixed. 4. Classes: Select button was not set to be default button. Fixed. -- WAITING for release 6.100 -- 1. Template: Implemented checkbox to allow debug code calls using wDebug. 2. Template: Implemented checkbox for MySQL users. 3. Classes: Implemented LIMIT clause for MySQL see item 3. This works by adding LIMIT and the number of rows in the listbox +1 to the Prop:SQL or the PROP:SQLOrder as it is being built when the browse is reset. This may not work at all, but I don't have any test data for this... 4. Documents: Corrected spelling error on page 46 (Clarino - Clarion) 5. Classes: ONCE attribute added on includes in CCSSQL1.clw 6. Clarion 6: GPF when calling a SQL browse from another SQL browse. Looks like a threading issue with the VIEW. Version 6.000 Final release --------------------------------------------------------------------------------------------------- May-11-2003: --------------------------------------------------------------------------------------------------- 1. Classes: Implemented ActiveInvisible. It basically shortstops the ResetQueue method if it is set to false and the control is not visible. Basically duplicated methods from ABC. Need to duplicate methods to trigger changes and implement in templates. No testing yet. 2. Template: Code to extract keycodes for update buttons, would be out of scope and not execute, leaving the impression that the update button keys had not been properly selected. Fixed. --------------------------------------------------------------------------------------------------- May-27-2003: --------------------------------------------------------------------------------------------------- 3. Template: Classname appears on the Action tab now for convenience. 4. Classes: Implemented registration of WC interface. In testing. 5. Templates: Implemented ActiveInvisible in templates. In testing. 6. Classes: Implemented Reset control registration and event registration. Controls can be registered along with events --------------------------------------------------------------------------------------------------- May-30-2003 --------------------------------------------------------------------------------------------------- 7. Classes: Tested WindowComponent implemenatation. Needs some more work. 8. Classes: Reverted the Reset things. Don't think there is any need for them now with the WC working so well! 9. Classes: Added properties and methods to change the order signs. Default values set in Init method. --------------------------------------------------------------------------------------------------- June-02-2003 --------------------------------------------------------------------------------------------------- 10. Classes Implemented methods and properties to change the sort order indicators (+/-) and sort column indicators (). 11. Classes Changed the way the column headers are built up to accomodate for item 8 and also to make it possible to use runtime translation. Previously the column headers would not register correctly (i.e. they would write to the trn as "<+header>" for the active sort header instead of just "header". The translation of the column headers would also not stick because the translated headers weren't in the column queue in the SQL class. Fixed. 12. Template Modified the order in which the window property is set, the Init and TemplateAutoInit are called. Added a priority space between the call to Init and TemplateAutoInit so code can be placed there, for example to changet he sort order indicators etc. --------------------------------------------------------------------------------------------------- June-03-2003 --------------------------------------------------------------------------------------------------- 13. Template Implemented settings for sort order indicators and sort column indicators, see item 10. 14. Template Kill method was not being called from templates resulting in memory leak. Fixed. Not true: It was being called from the WindowComponent Interface Kill method. 15. Template Implemented call to Updateheader in WindowManager.Open method call. 16. Classes Init method now takes the name of the object from the template. 17. Template Passes the %ObjList to the Init Method, see item 16. 18. Classes Replaced strings with CCSSQL1 with Self.ObjectName in debugging code. 19. Classes Testing WindowComponent - seems to work now without problems. Need to test in a bigger app. 20. Classes Implemented FieldPairClass to allow reset variables that force the browse to reset. Hooked in through the ResetRequired method of the WindowComponent Interface. 21. Templates Implemented Reset Fields for item 20. --------------------------------------------------------------------------------------------------- June-04-2003 - June-10-2003 --------------------------------------------------------------------------------------------------- 22. Templates Work on implementing better ways to use variables in the SQL browses. --------------------------------------------------------------------------------------------------- June-10-2003 --------------------------------------------------------------------------------------------------- 23. Templates Work on implementing Windows Style tagging. 24. Templates UpdateButtons template: Procedure dropdown was too narrow. Fixed. 25. Classes Work on fixing Swap Columns. --------------------------------------------------------------------------------------------------- June-12-2003 --------------------------------------------------------------------------------------------------- 25. Classes ActiveInvisible broken. Fixed. 26. Classes Locator string with single quote in it (like Sam's) resulted in invalid SQL. Fixed. 27. Classes Locator on dates checked. Locator on numbers used Like instead of = Fixed. 28. Classes Default sort column added. Overrides saved browse format. --------------------------------------------------------------------------------------------------- June-13-2003 --------------------------------------------------------------------------------------------------- 29. Classes Swap Columns did not work. Fixed. 30. Template Implemented changes for ClarioNet compatibility originally done by Robert Rodgers. 31. Template Cleaning up and going through template windows/prompts to prepare screenshooting --------------------------------------------------------------------------------------------------- June-14-2003 --------------------------------------------------------------------------------------------------- 33. Template Implemented "Restore Child After Cancel-CCS Browse" extension for forms that also have CCS browses. 32. Template Cleaning up template. --------------------------------------------------------------------------------------------------- June-16-2003 --------------------------------------------------------------------------------------------------- 34. Template Buttons to go to our website and email us directly from the template. 35. Template Cleaning up. **************************************************************************************************** -------------------------------- Version 6.000 Beta B, May 5, 2003 -------------------------------- **************************************************************************************************** KNOWN ISSUES in 6.0, Beta B: 1. Templates: Child sync on multi-component keys only works correctly with ONE child browse. See item 14 in Beta A. Will be fixed for next release. 2. Documentation: Still not there. It's on my (already heavy) schedule for May 19 - May 25. Changes from Beta A: 1. Template: Added conditional compile defines for ClarioNet compatibility. 2. Template: Added option to put literal filters into the filter field. If the filter starts with an exclamation mark (!) the filter is not quoted by the templates and it's up to the developer to supply the exact clarion/SQL code that goes into the filter. 3. Template: Added several new options to the Update button template. Suppress clear and Clear record are now available as checkboxes. This makes it easy to prime the record in the browse. Also added a Pre and Post priming. When creating a record RI must be maintained and certain required RI fields may need to be populated. This is done with the Pre-priming. Once the record is actually created, these fields can be reset to NULL or set to another value in the Post priming which is done before the record is sent to the update form. The assignment can be done to a value, variable, NULL or by calling a procedure to fill the variable. This can be local variables or table columns. A button was added to jump stright into the the PrimeRecord embed from Insert Options to make it easy to add any additional code. *4. Template: Modified the CONTROLS part of the SQLBrowseNL template so that it pops up the listbox formatter when the table has been dropped. ,FROM(SQL:Q) added to the LIST control. (ROLLED BACK - this generates a FROM() queue name that is not compatible with the generated queue label. This would have to be fixed in several places in the templates and I'm not going to do that right now) 5. Template: Added support for Popup menu. Added mimic support for Select, Insert, Change and Delete buttons. Implemented in CCSButns.inc, CCSButns.clw, CCSSQL1.clw and CCSABC.TPL 6. Classes: Implemented options to add alerted keys to insert/change/delete. Seems to work fine. Changes in CCSButns.inc, CCSButns.clw and CCSSQL1.clw. 7. Classes: Prototyped OutputDebugString in CCSButns.clw to make it easier to debug the classes. Method wDebug is available for anyone to use. 8. Classes: The CCSSql1 class now implements the WindowComponent Interface for future use. So far, responses to Kill, TakeEvent, Reset and ResetRequired interface methods has been added. 9. Classes: Init and Kill methods added to class. Kill method calls KillPopup and KillKeys methods and removes the WindowComponent interface. 10. Templates: All appropriate prompts changed from @S... to EXPR 12. Templates: Added support for additional hotkeys as pr. changes in item 6 to the classfiles. 13. Templates: Re-instated old locator and renamed the Icetips locator to ITSQLBrowseLocator. That way it will not break any functionality in existing CCS applications. 14. Templates: Moved prepare code around in the SQLBrowseUpdateButtons template to eliminate "undefined symbol" error on the procedure information. Think I've got this issue settled. 15. Templates: Copyright changed to Icetips Software and Icetips Logo added to templates. 16. Classes: Copyright changed to Icetips Software. ********************************************************************************************************** -------------------------------- Version 6.000 Beta A, February 20, 2003 -------------------------------- ********************************************************************************************************** Changes from 5.5: 1. Template: Modified the Locator control template so that it uses the default font and also so that it prompts for the string, entry and button, not string, button and entry. Also modifed the entry field to be 10 du high instead of 12 du. 2. Template: Modified the templates to make an option to force use of files if LazyOpen is on. 3. Template: Fixed locator so now there can be multiple locators on a window. 4. Template: Icon selection now has a file selection dialog box and conditional icons have file selection dialog and an Expression field to select condition. 5. Template: Added an option to synchronize child browses with relations in compound keys - enables multiple field assignment for synchronized filtering. 6. Template: Full support for Color added. 7. Template: Full support for conditional Colors added. 8. Template: Full support for Icons added. 9. Template: Full support for conditional Icons added. 10. Template: Full support for Styles added. 11. Template: Full support for conditional Styles added. 12. New Feature: Style Builder. Lets you build styles and name them and you use the name as Styles instead of numbers like ABC does. 13. New Feature: Full greenbar support - uses Steve B. Greenbar fully integrated into the SQL templates (no extension, just a button on the SQL template window) 14. New Feature: Supports child synchronizing on compound keys (original only supported one field, which is not going to work on tables that are set up properly for replication for example) 15. Classes: Support for SuppressClear in PrimeRecord. Allows multi-component keys to be autoincremented properly and fields to be populated when Clarion handles autoinc.