Release Notes for the GM-Components
- Class TGMWinControlFrameProperties dropped. Not needed anymore due to implementation changes.
- Improvements in upload and download methods of TGMFtpConnection.
- Many major renamings. A replacement definition file for the GM-String Replacer is shipped with the release.
- TGMPersistentData derived from TGMRefLifeObject instead of TComponent now. This saves about 10 KB of code.
- TGMInterfacedObject -> TGMRefLifeObject.
- TGMInterfacedPersistent -> TGMRefLifePersistent.
- TGMInterfacedComponent -> TGMRefLifeComponent.
- IGMKeyValueDirectory -> IGMValueStorageDirectory.
- IGMKeyValueDirectory.XxxKeyXxx -> IGMValueStorageDirectory.XxxDirXxx.
- All GM-Controls do opaque painting now and ignore windows erase messages. This eliminates re-draw flicker.
- Captions of GMButtons didn't change to black text when re-enabled
- New Unit GMCmmCtl.pas implementing lean common control wrappers. This saves about 40 KB of code, and fixes D5 ListView crashes when run against XP common controls v6.x.
- TGMDataGrid selection is reset on cursor moves now.
- Classes used as interface implementers via "implements" compiler feature redirect QueryInterface calls to
their owners now if they don't support the interface themself.
- IGMMemoryBuffer, IGMValueStorage and IGMSqlStatementParts are exposed via implements compiler feature now.
- IStream implementors inheritance chain changed. All derive from TGMIStreamBase now.
- New base class TGMISequentialStream working on unidirectional read/write routines that may deliver less data than requested.
- Some minor changes
- Some enhancements and corrections in units GMINetComp and GMXml.
- TGMHttpRequest.ReadDocumentContent renamed to TGMHttpRequest.ReadResponseContent.
- TGMHttpConnection.CreateRequest renamed to TGMHttpConnection.CreateHttpRequest.
- Unit GMZStrm now links *.obj files from version v1.2.3. of ZLib.
This fixes Z_BUFFER_ERROR. In addition ZLib v1.2.3. is smaller, faster and more secure than v1.0.4 used before.
- TGMButton and TGMGraphicButton components are safe against deleting image list components now.
- TGMButton caption property is not re-set to name property anymore when it is empty and project is loaded.
- GMResolveFormatParams renamed to GMReplaceStrings and TFormatParamRec renamed to TStringReplaceRec.
- Some more renamings TXxxx to TGMXxxx.
- All GM tracing routines can be overriden by assigning other routines to GMDoTracing, GMTraceLine or GMTrace global variables.
- 7-Zip unit (GM7Zip, not 100% complete now) added to the source code download.
- Dynamic hint content generation added to some controls.
- TGMIDataTree label edit window does'n overlap icon anymore.
- Interfaces IGMGetEnabledCursorMovements and IGMEnabledPositioning dropped. Handeled by GMAskBoolean(.., Ord(bvCanSetPosition), ..) now.
- TableName drop down list available for TGMODbcRecordset in IDE object inspector now.
- TGMSqlProperty uses TGMSQLPartitioner via compiler "implements" feature now.
- TGMIDataTree subitem iteration done by new SQL independent interface IGMGetSubItems now.
- GMDeleteCascaded routine re-implemented using IGMGetSubItems interface.
- TGridCheckBoxEditor doesn't scatter grid drawing anymore.
- Cursor and position move helpers re-implemented.
- TGMINavigator doesn't require IGMCanExecuteOperation interface anymore.
- New GMCheckExecOperation helpers used by interface everywhere.
- TGMComboBox reverts to old value on ESC now.
- TGMILookupComboBox re-executes lookup container if it has changed now.
- Global constant resource string enumerations changed to global variables.
- Some minor changes.
- Unit partitioning changed to keep applications smaller:
- Unit GMWmpTlb renamed to GMWmp.
- Unit GMICtl dropped and splittet into 4 new Units: GMIControls, GMIWmp, GMITrees and GMIOleCtnr.
- Unit GMMiscComp dropped and splittet into 4 new Units: GMCtlBase, GMButtons, GMCmmCtrls and GMControls.
- Unit GMDbCtl renamed to GMDbCtrls.
- Unit gmadcsed renamed to GMAdoCsDlg.
- Unit gmwsedit renamed to GMDaoWsDlg.
- All code depending on unit ShlObj moved to new unit GMShell.
- Package GMMisc renamed to GMCtrls.
- Package GMDBCtrl renamed to GMDbCtrls.
- Package GMICtrls now depends on GMCtrls instead of GMBase.
- Package GMDbCtrls now depends on GMDbCom and GMCtrls instead of only on GMDbCom.
- Product "GM - Miscellaneous Components" renamed to "GM - Controls".
- Components registered on compiler tab "GMMisc" will now register on compiler tab "GMCtrls".
- New Components TGMDockSite and TGMControlBar (very lean implementations!).
- Quicksort in TGMListBase.Sort corrected (used wrong code template from borland ..).
- Component TGMPersistentData now uses Delphi "implements" compiler feature for most interface implementations (saving simple delegation code).
- TGMIDataEdit derives from TEdit instead of TMaskEdit now.
- Routine GMShowURL uses current Browser now insead of always using MS-Internet Explorer.
- Routines GMLoadWindowPos and GMStoreWindowPos renamed to GMLoadWindowRect and GMStoreWindowRect. All routine concerned with these features use normal TRect's instead of TGMWindowPosition now. TGMWindowPosition dropped.
- New properties in TGMCustomComboBox: AllowValueChange, AllowTyping and AllowOnlyListValues.
- All GM product registration code moved to unit GMProdReg.
- Some corrections in Class TGMWinControl.
- Different installer (Nullsoft Scriptable Install System) used.
- TGMOdbcRecordset logarithmic count corrected to include records with fetch errors.
- TGMIDataGrid columnsort by title click didn't work anymore, fixed.
- TGMSqlStatementBase exceptions during re-excution trigger an OnActiveChange notification now.
- TGMOdbcRecordset record fetch errors are indicated by the field values now instead of raising an exception.
- Multiple TDAOEngine components allowed now. Global variable ShowMultiDAOEngineWarning controls if a warning should be shown.
- Sorting is done via a abstract interfaces instead of SQL modifications now. The recordsets translate this to modifications of the SQL order by part.
- GMSortIntfSourceBySQL global routine dropped. Use IGMGetColumnSortOrder / IGMSetColumnSortOrder instead.
- Get/SetItemValue interfaces return a HResult instead of boolean now. This allows more precise error messages.
- TGMButton, TGMGraphicButton internal handling of ImageIndex Properties simplified.
- TGMIniFilePersistentData.InternalDeleteKey deleted only n-1 of n matching sections.
- TGMSplitter didn't resize properly when maximizing windows. Control to be resized internally cached now.
- TGMILookupComboBox popupwindow draw cache wasn't invalidated after some operations.
- TGMSqlStatementBase.ReExecuteStatement parameter preserveState is ignored when component is inactive (makes no sense).
- New property TGMILookupComboBox.NullValueDisplayName, if this isn't the empty string the name is displayed in the drop down list. Selecting this value will set NULL as field value.
- Corrections and improvements in class TGMIPopupListWindow (hidden fetch).
- TGMSqlStatementBase re-execution didn't open a closed recordset.
- TGMOdbcRecordset.AssignMasterParamValues triggered an uneccessary additional re-execution.
- New property MasterSource.AutoActivate.
- TGMNamedValuesContainer allows re-executions now.
- AfterCountChange notification + event dropped in all components, use AfterOperation notification instead.
- GMLoadFromSubkey changed and renamed to GMLoadFromKey.
- GMStoreToSubkey changed and renamed to GMStoreToKey.
- TGMIDataTree component: Many improvements and corrections done.
- TGMCascadedRecordsProperties renamed to TGMCascadedContentsProperties and moved from the TGMINavigator to the recordset components.
- Empty State is Count <= 0 now instead of GMAskBoolean(Ord(bvEmpty)). Value bvEmpty dropped.
- TGMIDataGrid component: Many improvements (smarter scrolling, faster drawing, ..)
- TGMIDataGrid component: Transparent alpha blended column drag with auto scroll added.
- TGMIDataGrid component: Easy storing of column arrangement possible now.
- TGMMainMenu and TGMMenuBar components dropped from the release.
- ImageIndex design time property editor added.
- Many minor improvements and simplifications done.
- Encrypt/decrypt flags in unit GMWinCrypt changed. Encrypted data can be decrypted on a different machine now.
So TGMProductRegistration components will not start the termination timer anymore when you run your applications on another machine.
- Note: due to different encryption existing key guid's become invalid. Download the latest key-Guid calculator (v4.6.1) to recalculate your key guid's.
- New GM - Key-Guid Calculator released.
- Unit GMUICommon splittet into units GMControls and GMDialogs.
- Many things in the units GMCommon and GMIntf have been renamed from Xxxxxx to GMXxxxx.
- New component set GM - MSI data access components.
- New component set GM - Internet Components.
- New components TGMButton and TGMGraphicButton.
- Compiler symbol NODEMOTIMER renamed to NOGMTIMER.
- The GM Exception Dialog is not installed by default anymore.
- Product registration is by PersistentGuid and KeyGuid instead of KeyString and serial number now.
- The GM KeyGuid calculator is available for download now.
- Many other corrections, additions, simplifications and improvements.
- GM Exception Dialog not installed by default anymore.
- A replacement definition file for the "GM - String Replacer" with the many renamings is included in the release.
- New Setup.
- Code review in unit GMZStream.
- Some internal improvements in ODBC Components.
- TGMIDataGrid.ColumnProperties property dropped, use OnCreateColumn event instead.
- TGMOdbcRecordset: OldValue is always properly setup before edit/insert now.
- TGMConnectionPoint implementations simplified.
- TGMConnectionPoint enumeration implementations are safe against direct unadvise now.
- New Component TGMIDataLink that can (but doesn't need to) be inserted between recordsets (data containers) and controls. TGMIDataLink components can be concatenated.
- Parameter resolution "= NULL" changed to "IS NULL", to conform with SQL standard.
- TGMRegistrationForm Resource Problem fixed.
- ODBC Error handling when applying changes to BLOB data corrected.
- ODBC internal buffers improved.
- TGMRecordsetStateHolder simplified.
- New component TGMSizeGrip.
- TGMGripPanel dropped from the realease, use TGMSizeGrip instead.
- TGMIDataGrid sort order changes are reflected in column titles on reexecute now.
- ODBC recordset delayed data fetch during edit problem fixed.
- Errors in DAO design dialogs fixed.
- Some properties of the interface controls have been renamed. A replacement definition file for the "GM-String replacer" is included in the release.
- Title click sort features in TGMIDataGrid improved/corrected.
- Performance improvements in TGMIniFilePersistentData via Cache and assembler.
- TGMIDataGrid Scrollbars stayed disabled in some cases, fixed.
- TGMCustomTreeView internal Node recreation keeps node class types now.
- Parameters were not transferred when assigning a TGMSqlProperty, corrected.
- ODBC components: Writing of BLOB Data now follows SQLPutData specifications.
- TGMIDataGrid row height can be changed by dragging with the mouse now.
- DAO Demo application dropped from the realease.
- Tee runtime chart editor component dropped from the release.
- ODBC components: BLOB compression restricted to binary BLOB fields now (some drivers have problems with binary data in memo fields).
- ODBC components: Row fetch errors are exposed the user in the display text now (Most important: a row that has been deleted by another user).
- Buffer handling for compress/uncompress improved.
- TGMIDataMemo works on binary data as well as on memo data now.
- Units GMCommon and GMIntf don't depend on any UI Unit (Forms, Controls, ...) anymore (makes them well suited to be used in UI-less modules/applications).
- Some minor internal improvements/enhancements/corrections.
- ADO Notify callback COM objects recoded.
- Calling conventions in ADO type library units got messed, corrected.
- MultiselectSource of TGMINavigator can be connected to a TGMIDataGrid now.
- Interface Controls: Some property Editors in the I-Controls Package were doing nothing anymore due to interface changes. Fixed.
- ODBC Components: For compressed Memo fields the Display Text was always empty. Fixed.
- TGMIDataMemo File Dropping functionality added.
- TGMIDataMemo is the default TGMIDataGrid Cell Editor for Memo Fields now.
- TGMIDataGrid: Text Layout Properties can be changed for each column in the OnCreateColumn Event now.
- New SQL Clause "FOR UPDATE OF" recognized by all SQL parsed properties.
- SQLSortFields property renamed to SQLOrderBy.
- TGMIDataGrid: Changing the Interface Source is reflected correctly now.
- New Component TGMOdbcSchemaRecordset in ODBC Component Package.
- TGMIDataGrid works fine with unidirectional Cursors now.
- TGMOdbcRecordset: Option for permanently bound column buffers added to support the needs of some cursors.
- TGMOdbcRecordset: Bookmark Fields are treated as normal fields now. New Attribute: raExposeBookmarkColumn.
- RecordsAffected functionality added to TGMOdbcRecordset and TGMOdbcConnection.ExecuteSQL.
- New property TGMOdbcRecordset.RecordCountStrategy.
- TGMOdbcRecordset: The trailing Semicolon is stripped before the SQL Statement is passed to the Driver.
- TGMIDataGrid: Title Click Sort functionality added.
- Unit gmctlcmm renamed to gmuicommon.
- Units gmregdlg, gmabtdlg and GMPrgDlg merged into unit gmuicommon and dropped from the release.
- TGMPersistentData Component partially recoded.
- Unit GMCompon renamed to GMMiscComp.
- TGMIDataGrid recognizses Selections on Alt-C now.
- GM-Interfaces using OLEVariants instead of Variants now.
- Datatype of Values Parameter in Lookup/Locate Interfaces changed to IUnknown.
- TGMOdbcRecordset Cancelchanges software design-gap fixed.
- TGMIDataGrid Celleditor changes Color according to SelectBkgndColor function when moved to another Cell now.
- Empty Variants translated to NULL SQl Literal again when Parameter Values must be resolved.
- Unit GMOleDBInspTlb merged into Unit GMIntf and dropped from the Release.
- Windows Focus Problems with TGMScrollBar resolved.
- More Control Key combinations recognized by TGMIDataGrid now.
- TGMIDataGrid Multiselect behaviour improved.
- New property ServerDokumentDisplayName in TGMIOleContainer. If this property is the empty String the name of the Component is Displayed.
- Opening an ODBC Recordset in design Mode doesn't change the MaxLength properties of TGMIDataEdit Components anymore.
- Boolean Fields are displayed as CheckBoxes in the TGMIDataGrid now.
- Interfaces: IGMInvalidate, IGMClear, IGMFetchData and IGMReadFirstByte dropped. Use Interface IGMExecuteOperation instead.
- Property TGMIDataGrid.CellTextLayout moved to TGMIDataGrid.DataAreaProperties.TextLayout.
- TGMIDataTree internal Implementation partially recoded.
- TGMHeapMemoryStream reimplemented.
- New internal Buffer management in ODBC Fields and Fieldstates.
- BLOB Compression facilities added to TGMOdbcRecordset. Existing uncompressed Data will still be read correctly. Compression Type may be different for every record.
- New Interface based Control: TGMIDataMemo.
- TGMIOleContainer: Internal load routine secure againt reenter now.
- Further reduction of Data Traffic produced by TGMIDataEdit, TGMILookupComboBox and TGMIDataCheckBox.
- New Event TGMOdbcRecordset.OnCreateField allowing to influence important properties when Fields are created.
- Some Interfaces in Unit GMIntf dropped others redesigned.
- TGMIDataGrid has cell in place editing functionality now.
- TGMIDataGrid multiselect functionality added.
- TGMIDataGrid internal Drawcache re-implemented.
- TGMINavigator Recursive Delete for self-referencing Tables added.
- TGMINavigator Insert Child for self-referencing Tables added.
- TGMIDataGrid: Titlebar Height Calculation works correct now when already activated in Design Mode.
- TGMIDataGrid: Display for empty Recordsets corrected.
- TGMIDataGrid: Now Draw garbage when shrinking last column anymore.
- New Global Routine in Unit GMDbBase: GMRecursiveDelete. Allowing Subtree Deletions in self referencing Tables.
- TGMIOleContainer adds pictures to its "create" Contet Menu Items now.
- Master Detail functionality added to ODBC Components.
- Corrections in TGMIDataTree Component.
- Internal Interface notification calling changed in ODBC and I-Control Components.
- Interface IGMEnableControls renamed to IGMEnableNotifications and its implementation moved to TGMConnectableComponent base class. New Parameter RefreshGranularity added when Notifications are disabled or enabled.
- procedure TGMOdbcRecordset.ComputeRecordCount rewritten.
- TGMIOleContainer load algorithm improved.
- More options for the TGMIOleContainer Context Menu now.
- New ODBC login helpers:
- TGMOdbcConnectProperties Class
- TGMOdbcConnectDlg Form
- GMExecuteOdbcConnectDlg gloabl function
- GMOdbcConnect gloabl function
- New Property TGMIDataGrid.ColumnProperties allowing to change the following:
- Visibility for each Column
- With for each Column
- Title for each Column
- Order of Columns
- New Event TGMIDataGrid.OnCreateColumn that allows to override the Values of TGMIDataGrid.ColumnProperties.
- Active property reduced from published to public now. This affects all activatable Components except: TGMDaoDataset and TGMAdoDataset.
- New published property ActivationProperties for all activatable Components. This property allows to inhibit storing of the Active property.
-
All visual controls have a structured Frame property now. Press Ignore on
IDE Warnings about missing Ctl3D and ParentCtl3D properties.
You will set this by the sub-properties of the Frame property now.
- Notification reflection of the Interface based Controls refined.
- StateColors property of the Interface based Controls changed to SourceObjStateChangeReflection property.
- New Interface based Controls: TGMIDataCheckBox, TGMIDataTree.
- New Events in Interface based Controls and ODBC Data Access Components.
- TGMLayoutProperties enhanced by TGMTextLayoutProperties for the TGMIDataGrid.
- Some internal Corrections and improvements in the ODBC Data Access Components and the Interface Controls.
- TGMIDataGrid opens a Gap for newly inserted records now.
- New property AutoFocusMovements in TGMIDataGrid now.
- Locate/Lookup Interfaces refined. And implementations in ODBC Components rewritten.
- New public default property TGMOdbcRecordset.FieldValues. Allows to Access Fields by ordinal position or name.
- BLOB Fields couldn't be cleared by the Data aware Interface Blob Controls, fixed.
- Signature DAO CreateDatabase and CompactDatabase Methods changed to offer a Type safe clear and easy call to the strange MS Parameter interpretations now.
- Units: GMDbTls, GMNewDbo, GMNewUsr and GMUsrPwd merged into Unit GMDaoDlg and dropped from the Release.
- Doubleclicking an ODBC Connection Component brings up the GM-OLE/DB Inspector for that Connnection now.
- GM-Exception Dialog enhanced by Exception Class Name.
- Unit GMOleDbInspTlb moved from Package GMDBCom to GMBase.
- TGMPRogressIndicator Component dropped. Use global routine GMExecuteProgressDlg instead.
- Filedrop registrations ask the visible property instead of the Handle function now. Then the TGMwinMMPlayer can be made invisible.
- Fields of records deleted by another Recordset/Application return 'Record Deleted' now when asked for their display text.
- DAO and ADO Recordsets support the interfaces IGMSqlStatementParts, IGMActivatableObj and IGMVerifyActivation now.
- New Class TGMSQLStatmentPartitioner as a standard implementation of the IGMSqlStatementParts interface.
- New Package GMDB, things general to ODBC and DAO/ADO have been moved from unit GMDbDefs in package GMDbGen to unit GMDbBase in package GMDB.
- Global procedure GMDBError in unit GMDbDefs dropped, use EGMDBError.CreateVerbose in unit GMDbBase instead.
- New Package GMODBC Containing the ODBC Data Access Components.
- New Package GMICTRLS Containing the Interface based Data aware Controls.
- New Unit GMIntf containing the GM-Interfaces.
- New generic Exception Dialogs replacing the standard message boxes.
- Global variable VerboseDBErrorMessages renamed to VerboseExceptionMessages and moved to unit GMCommon.
- New Events OnBeforeDetailUpdate and OnAfterDetailUpdate in DAO and ADO recordsets.
- Class TObjectList in Unit GMCommon renamed to TGMObjectList.
- Package & Unit Renamings:
- Package GMDbGen renamed to GmDBCom
- Package GMUnits renamed to GMBase
- Unit GMDaoCom renamed to GMDaoComp
- Unit DAOFilterRecordset renamed to GMDaoFilterDataset
- Changes in the software architecture:
- Package GMDaoUI dropped, units moved to the package GMDao
- Package GMAdoUI dropped, units moved to the package GMAdo
- Package Democomponents renamed to GMDaoDemoComp
- Units GMAdoRS, GMAdoCn, GMAdoCmd, GmAdoDef, GmADCtlg merged together into one new single Unit GMAdoComp
- New Methods in TGMDBWinMMPlayer:
- procedure LoadFromStream(const MediaStream: TStream; const FileNameExt: String);
- procedure LoadFromFile(const FileName: String);
- Property SQLFilter renamed to SQLWhere in all Components.
- Component renamings that seriously affect existing code
(please see section Version Migration):
- TGMDataset -> TGMComDataset
- TDAOEngine -> TGMDaoEngine
- TDAOWorkspace -> TGMDaoWorkspace
- TDAODatabase -> TGMDaoDatabase
- TDAORecordset -> TGMDaoDataset
- TGMAdoRecordset -> TGMAdoDataset
- TwwAdoRecordset -> TwwGMAdoDataset
- TwwDAORecordset -> TwwGMDaoDataset
- TGMDBSearchStrEdit -> TGMDBSearchEdit
- OnDropFile Event in data aware BLOB Controls renamed to OnFilesDropped
- Foreign Memory Stream Concept in BLOB Fields dropped. Existing Code is not affected by this change.
- TGMDBOleContainer Component completely re-implemented. Press Ignore on IDE Warnings when opening existing Projects.
- Visibility Scope of Property TDAODataBase.DesignMasterID reduced from published to public (showing the value of DesignMasterID in the IDE Object inspector caused about 5 Sec delay when working with DAO 3.6).
- TDAODatabase and TGMAdoConnection have a Method DoOnAllRecordsets now. It takes a Parameter that is another Method which is called once for each connect Recordset.
- TGMDataset.Locate and TGMDataset.Lookup automatically convert the datatype of the KeyValues to their corresponding Field Datatype if neccessary.
- New Events in TDAODatabase:
- BeforeAttachedRecordsetOpen
- AfterAttachedRecordsetOpen
- BeforeAttachedRecordsetClose
- AfterAttachedRecordsetClose
- AttachedRecordsetLoaded (Called from TComponent.Loaded)
- New Events in TGMAdoConnection:
- BeforeAttachedComponentOpen
- AfterAttachedComponentOpen
- BeforeAttachedComponentClose
- AfterAttachedComponentClose
- AttachedComponentLoaded (Called from TComponent.Loaded)
- TGMAdoBaseRecordset ComInserted and ComEdited return False in case of exceptions now. The Exception prevented from inserting the first Record in an empty ADO Recordset.
- SQL Parameter Definitions without space where recognized but not substituted when the SQL Statement was issued to the Database. Fixed.
- No Field change notification on TGMXxxxField.Clear anymore.
- Function ValueAsSQLLiteral duplicates SQL string Quote chars inside of string literals now.
- TGMDBDataGrid Title cell double click allows to sort by Fieldnames that contain spaces now.
- TGMDataset Locate raises exception now if called with Filednames that don't exist. Till now such Fields where ignored without any notification.
- SQL parsing completely ok with field names like: [some field].
- Behavior of TGMCustomComboBox improved.