ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/changelog
Revision: 66
Committed: Wed Aug 23 08:23:42 2017 UTC (6 years, 7 months ago) by tony
File size: 35284 byte(s)
Log Message:
IBCustomDataset: ensure that TIBStringField uses the field size reported by
   Firebird rather than recomputing it.

File Contents

# User Rev Content
1 tony 56 IBX Change Log version (2.0.3) tba, 24 Feb 2017 12:17:53 +0000
2    
3     1. IBCustomDataset: Minor change of PChar to PByte for compatibility with fbintf
4     changes.
5    
6 tony 58 2. IBCustomDataset: Fixed use of incorrect datasize in TIBStringField.SetAsString.
7     Bug could result in truncated multi-byte character set values.
8    
9 tony 60 3. Changes consequential on moving fbintf character set utility functions from
10     IFirebirdAPI to IAttachment.
11    
12 tony 62 4. Avoid "Object is nil" error when opening a database with DefaultSystemCodePage = true
13    
14 tony 64 5. IBLookupComboEditBox: avoid race condition when autocompleting text that occasionally
15     results in autocomplete ignoring prefix text.
16    
17 tony 65 6. IBLookupComboEditBox: Ensure that cursor is not reset to start of text when
18     entering a new name into the text box.
19    
20 tony 66 7. IBCustomDataset: ensure that TIBStringField uses the field size reported by
21     Firebird rather than recomputing it.
22    
23 tony 51 IBX Change Log version (2.0-2) Fri, 24 Feb 2017 12:17:53 +0000
24 tony 49
25 tony 51 1. TIBDatabase.CreateDatabase: extract full DB Name from SQL using reg ex in order to
26 tony 49 include remote system name.
27    
28     2. TIBExtract: No longer include comment header and COMMIT statement for empty
29     tables when data included in output.
30    
31     3. Profiling: IBSQL now has conditional compilation flags to enable query performance
32     and timing information to be written to stdout. This may be used to locate
33     performance bottlenecks.
34    
35     4. SQLParser: only call "OnChanging" event handler when value is different.
36    
37     5. IBDynamicGrid: Update handling of navigation keys for a TDateEdit
38    
39 tony 50 6. IBCustomDataset: Set internalunprepared flag when transaction ends. This ensures
40     that BindFields is called when the query is next activated. Avoids FieldName
41     not found error.
42    
43 tony 47 IBX Change Log version (2.0-1) Mon, 09 Jan 2017 15:31:49 +0000
44 tony 45
45 tony 47 1. TIBEvents: Fix uninitialised variable that could result in lost events.
46 tony 45
47 tony 47 2. TIBExtract: Added support for FB3 "USAGE" privilege.
48    
49     3. TIBExtract: data formatted as Charset set "octets" is now output using
50     hexadecimal notation.
51    
52     4. TIBExtract: Binary Blobs and array data can now be embedded in INSERT statements
53     using a simple XML format.
54    
55     5. TIBExtract: extract of individual Triggers and Stored Procedures can now include
56     grants to these objects.
57    
58     6. TIBExtract: Stored Procedures and Views output in dependency order to avoid
59     dependency problems restoring complex databases.
60    
61     7. TIBXScript: This component has been restructured to allow for the processing of
62     embedded XML in INSERT statements and to support interactive sources in addition
63     to non-interactive data sources such as files.
64    
65     8. TIBXScript: CREATE DATABASE, DROP DATABASE, CONNECT statements are now supported.
66    
67     9. TIBXScript: ISQL compatiable Set statements are now supported:
68     SET SQL DIALECT
69     SET TERM
70     SET AUTODDL
71     SET BAIL
72     SET ECHO
73     SET COUNT
74     SET STATS
75     SET NAMES <character set>
76    
77     10. IBVersion unit added to hold current IBX Version Number information.
78    
79     11. TIBExtract: Use character rather than byte length for VarChar procedure arguments.,
80     and domain definitions.
81    
82     12. TIBExtract: Triggers now use SQL2003 syntax and database and transaction triggers
83     fully supported.
84    
85     13. TIBExtract: when a database dump includes data, the generator values are now also set.
86    
87     14: IBSQLEdit: Unit LCLPlatformDef added to uses clauses for lazarus 1.7 and later.
88    
89     IBX Change Log version (2.0-0) Tue, 06 Dec 2016 10:33:44 +0000
90    
91 tony 50 See also doc/IBX4LazarusGuide.pdf for important information on
92 tony 45 upgrading to IBX2.
93    
94     1. Size property of TIBStringField is now the width in characters of the field
95     and not the byte length. This applies only to multi-byte character sets such
96     as UTF8. The original approach aligned with TStringField. However, the TStringField
97     code is not recognised as a bug and hence this change to align the behaviour.
98     The TStringField change is expected in fpc 3.2.0.
99    
100     2. A new property AutoFieldSize: boolean has been added to TIBStringField. When
101     true (default) then Size property value saved in the lfm is ignored. Size is
102     always set from the dynamic information read from the database. It is unclear
103     why anyone would want to override this and set Size to false.
104    
105     3. ibxscript: should now handle correctly a Case..End statement within a procedure
106     block.
107    
108     4. IBDatabase: new property - CreateIfNotExists. If true and database does not
109     exist when an attempt is made to connect to it (run time only) then an attempt
110     is made to create the database.
111    
112     5. IBDatabase: new event - OnCreateDatabase. This event is called after a database
113     has been successfully created as a result of a call to CreateDatabase or when
114     creating a database after it was found not to exist.
115    
116     6. DBControlGrid: a race condition could result in the wrong row image being
117     written to the cache. This has been avoided by a trip round the message
118     loop before rendering the row image.
119    
120     7. DBControlGrid: It is strongly recommended not to open the source DataSet for
121     a DBControlGrid during a Form's "OnShow" event handler. Under GTK2 this is
122     known to risk corrupt rendering of row images when the control is first
123     displayed. If necessary use "Application.QueueAsyncCall" to delay opening
124     of the dataset (see DBControlGrid examples) until the Form's Window has been created.
125    
126     8. DBControlGrid & IBDynamicGrid: Navigation keys should now work correctly with
127     a TDateEdit control located on an editor panel.
128    
129     9. TIBExtract: brought up-to-date plus many bug fixes.
130    
131     10. DBControlGrid: Removed memory leak when updating rows.
132    
133     11. TIBCMLocalDBSupport: fixed invalid free on upgrade.
134    
135 tony 43 IBX Change Log version (1.4-3) Thu, 22 Sep 2016 18:10:15 +0100
136    
137     1. IBCustomDataset: When calling SetCodePage, no longer request transliteration
138     when target codepage is CP_NONE. This is a workaround for
139     http://bugs.freepascal.org/view.php?id=30622.
140    
141     2. DBLog option removed from TIBStatisticalService - not supported by server
142     since Firebird 1.5.
143    
144     3. ibxscript: An error is no longer generated for "on commit preserve rows" or
145     similar.
146    
147     4. IBCodePage: updated mapping between codepages and character id.
148    
149     5. ftWideString and ftWideMemo withdrawn. There is no UTF16 character set in
150     Firebird. Character sets with a char width of two are not UTF16.
151    
152     6. Strings received from the database are now always transliterated into UTF8
153     regardless of the database character set or connection character set. This
154     is for compatibility with the LCL.
155    
156 tony 45 IBX Change Log version (1.4-2) Thu, 22 Sep 2016 15:25:27 +0100
157 tony 41
158     1. IBBlob: Defer reading of blob until read method called. This avoids having to
159     read in an entire blob just to get the size of the blob. General performance
160     improvement when opening datasets containing blobs.
161    
162     2. Clearing a Blob now sets the corresponding field's modified flag.
163    
164     3. IBLookupCombo: When not performing auto-complete, original query sort order
165     is now used.
166    
167     4. IBDynamicGrid: Add OnSelectEditor event. Allows editor panel to be dynamically
168     determined.
169    
170     5. IBDynamicGrid: Recompute column widths after dataset closed and re-opened.
171    
172     6. IBLookupCombo: LazUTF8 added to uses clause to avoid compilation problems post
173     lazarus 1.6.0
174    
175     7. IBControls. Removed "runtime" from list of paths to avoid "multiple packages"
176     compilation error.
177    
178 tony 39 IBX Change Log version (1.4-1) Tue, 17 May 2016 09:14:51 +0100
179    
180     1. No character set specified for connection: when a text blob is retrieved, the
181     character set is determined by looking up the native character set using then
182     Firebird API. Otherwise a text mode blob is assumed to have the same character
183     set as the connection.
184    
185     2. TIBGUIInterface: this is an internal interface. Minor type changes to allow
186     for Login Dialog returing a change to the database path.
187    
188     3. Design Time Database and Server login Dialogs now allow the Database Name/Server Name
189     to be changed from that given in the TIBDatabase/TIBServer component and for the
190     entered value to be saved on a project specific basis (design time only).
191    
192     4. IBDynamicGrid: TDBLookupCellEditor now compares its DataFieldName with the
193     column fieldname. If they are the same then it is acts as a look up for the KeyValue
194     Otherwise, it sets the column text to the selected ListField Value.
195    
196     5. IBDynamicGrid: Only visible columns are now taken into account When recalculating
197     column width.
198    
199     6. IBLookupComboEditBox: Fix error with autocomplete query when a RelationName is given
200     and a case insensitive search is requested.
201    
202     7. IBDynamicGrid: No longer ignores notifications removing Column Totals controls
203     or column ListSource.
204    
205     8. IBQuery: no longer performs unnecessary refresh of SQL Text (and hence avoids an
206     unprepare) when closing and the text has not changed.
207    
208     9. IBSQL: Base the cursor name on a GUID instead of a hexstr version of the class pointer.
209     Less likely to cause a cursor re-use error on Windows.
210    
211     10.SV5IPC: include workaround for OSX. FPC 3.0.0 has broken ipc module for darwin.
212     Expected to be fixed in 3.0.2. Hence workaround only applies to 3.0.0.
213    
214     11. TIBTreeView: Guard against nil destination on record changed
215    
216     12. AnsiString Code page support: TIBStringField.AsString and TIBMemoField.AsString now return a
217     string type with the code page set to reflect the returned field encoding after
218     Firebird driver transliteration, if any. FPC 3.0.0 onwards only. Behaviour unchanged for
219     earlier versions.
220    
221     13. AnsiString Code page support: Assigning to TIBStringField.AsString and TIBMemoField.AsString
222     will now result in transliteration to the code page specified for the Firebird driver
223     if the assigned string has a different code page. FPC 3.0.0 onwards only.
224    
225     14. TIBDatabase: new property UseDefaultSystemCodePage. When set any lc_ctype parameter
226     is ignored and the lc_ctype value, when the database is opened, is set to align with
227     the DefaultSystemCodePage (FPC 3.0.0 onwards). Normally, this is what you want and should ensure
228     platform independence. Note: this applies to FPC 3.0.0 and earlier versions. Pre FPC
229     3.0.0, when this property is true, the lc_ctype is UTF8 except under windows when
230     the GETACP is used to determine the Windows code page.
231    
232     15. TIBDatabase: new property DefaultCharSetName. This is the Firebird character set
233     name used as the lc_ctype when the database was opened. Only valid while the
234     Database is connected.
235    
236     16. TIBDatabase: new property DefaultCodePage (FPC >=3.0.0 only). This is the codepage
237     id that corresponds to the DefaultCharSetName.
238    
239 tony 37 IBX Change Log version (1.4-0) Mon, 15 Feb 2016 14:44:24 +0000
240    
241     1. Unix: If Firebird Embedded Server shared object is loaded and a local database
242     path is given and database attach fails due to access permission issues on the
243     temp directory or security database, then the attach is retried with "localhost:"
244     prefixing the databasename. This should avoid problems when the database has to
245     be accessed by a local (e.g. classic) server and libfbembed is used.
246    
247     2. Windows: revised search order for Firebird DLL:
248     i. The Firebird Embedded Server in the application Directory.
249     ii. If the FIREBIRD environment variable is set then the directory this
250     points to is searched for the FB Client DLL and then then underlying
251     "bin" directory.
252     iii. Registry Key HKEY_LOCAL_MACHINE\SOFTWARE\Firebird Project\Firebird Server\Instances
253     is used to locate the Firebird installation directory and the underlying
254     "bin" directory is searched for the FB Client DLL.
255     iv. The Default installation directories C:\Program Files\Firebird\Firebird_2_x
256     are searched for the FB Client DLL.
257     v. The PATH Environment variable is used to search for the FB Client DLL.
258     vi. Finally the PATH Environment variable is used to search for IBASE.DLL.
259    
260     3. New Component: TIBXScript. This is an ISQL compatible SQL script execution engine.
261     See doc/readme.scriptengine and example applications.
262    
263     4. New Component: TIBlocalDBSupport. This is a TIBDatabase support component intended to
264     simplify the use of the embedded firebird server on both Linux and Windows platforms.
265     See dpc/readme.localdatabase and example applications.
266    
267     5. IBDynamicGrid: Reordering on column header click should now also work for
268     dynamic columns.
269    
270     6. ISQLMonitor: (Windows only). Mutex added to TMultilockGate to avoid race condition
271     between incrementing/decrementing the lock count and signalling the event.
272    
273 tony 35 IBX Change Log version (1.3-2) Tue, 26 Jan 2016 14:39:54 +0000
274    
275 tony 37 1.3.2 was never formally released and only made available as beta copies.
276    
277 tony 35 1. DBControlGrid,IBDynamicGrid: Ignore down arrow and up arrow in TCustomMemo
278    
279     2. IBDynamicGrid: Now deals correctly with a single column grid which has no indicator and autosize column
280    
281     3. IBLookupComboEditBox: reset timer on each key press - avoids timer going off too early
282    
283     4. IBDynamicGrid: Call event OnUpdateSortOrder even when aliasname not found in dataset
284     i.e. when it is a calculated field
285    
286     5. IBDynamicGrid: Fix problem selecting a different row when expanded row at end of grid.
287     This problem was due to a race condition between recalculating row heights and
288     determining which row was selected by the mouse click. The row height calculation
289     is now deferred by an extra trip round the message loop allowing the row to
290     be always calculated on the current grid layout rather than risking it being
291     calculated on the grid layout after the expanded row has been shrunk.
292    
293     6. IBLookupComboEditBox: avoid race condition between cm_killfocus and cm_exit on
294     Windows.
295    
296     7. TIBStringField: Now has two new public properties: CharacterSetName: string and CharacterSetSize: integer;
297     These properties allow the (Firebird) character set name for the field and the max number of bytes per character
298 tony 37 to be determined at runtime. See doc/readme.charactersets.html.
299 tony 35
300     8. TIBWideStringField: This is a new field type with the same additional public properties as above and subclassed from
301 tony 37 TWideStringField. This field type is used with the character size reported by Firebird is two. See doc/readme.charactersets.html.
302 tony 35
303     9. TIBMemoField and TIBWideMemoField: new field types with the same additional public properties as above and subclassed from
304     TMemoField and TWideMemoField respectively. These field types are used with Blob subtype 1 and a characterset size of
305 tony 37 1, 3 or 4 (TIBMemoField) or 2 (TIBWideMemoField). See doc/readme.charactersets.html.
306 tony 35
307     Both also have a new published property "DisplayTextAsClassName". If false (default) the displaytext is generated
308     from the blob text by truncating the string to the displaywidth (in characters not bytes). A displaywidth of zero
309     implies no truncation.
310    
311     10. IBLookupComboEditBox: Force autocomplete when EditingDone called and timer active.
312    
313     11. IBDynamicGrid: Call DataSet.Append when entering edit mode and dataset empty and not in insert state
314     (avoids "Not in Edit Mode" error).
315    
316     12. IBDynamicGrid: Correctly resize grid when one column width plus indicator.
317    
318     13. IBDynamicGrid: Ensure Editor Panel has focus when shown - avoids Windows API calling
319     DBGrid.DoExit on subsequent mouse click (e.g. on child control such as a tabbed page control.
320    
321     14. IBDynamicGrid: ignore up, down tab and return when editorpanel open and focus in a TCustomGrid descendent.
322    
323     15. DBControlGrid: Stop flashing grid when dataset closed and then re-opened while DisabledControls
324    
325     16. IBQuery: Bug fixed that prevented SQL being set programmatically once the Parser had been invoked.
326    
327     17. IBCustomDataSet: On close, parser is now freed and Select SQL reverts to value before DataSet Opened.
328    
329 tony 33 IBX Change Log version (1.3-1) Sat, 18 Jul 2015 13:30:50 +0100
330 tony 31
331     1. OnCloseUp Event Handler added to TDBLookupProperties
332    
333     2. IBDynamicGrid: Call to OnEditorPanelHide is now last editor hide action - avoids
334     problem with row size when exception is called.
335    
336     3. IBLookupComboEditBox: Force pending autocomplete on combobox exit.
337    
338     4. IBDynamicGrid and DBControlGrid: Keyhandler now ignores up, down, escape and return keys if
339     in a TCustomComboBox and ignores return key if in a TCustomMemo
340    
341     5. IBLookupComboEditBox: Ensure that KeyValue is set correctly when full text
342     keyed in i.e. when autocomplete not performed
343    
344 tony 33 6. Cleanup of "Uses" clauses and add console mode support. IBX should now support
345     console mode applications with all LCL required functions (builtin dialogs and
346     cursor management) centralised in the IBDialogs unit. As long as "IBDialogs" is
347     not included in your project, IBX should compile and link with a console mode program.
348     See consolemode example and its "readme"for further guidence. DO NOT add the ibexpress package to a
349     console mode application or the IDE will automatically assume that your
350     application is GUI based. Instead, you should include the ibexpressconsolemode package.
351 tony 31
352     IMPORTANT NOTE: IBDialogs must be included in GUI applications in order
353     to use the built in dialogs and cursor management. IBDialogs is
354 tony 33 included by default if "ibexpress" is in your project source's "uses" clause.
355 tony 31 This should be the case for all projects created through the IDE. This is why
356     you do not want to add the ibexpress package to console mode applications. The
357     ibexpressconsolemode package has been created to allow console mode programs
358     to avoid adding LCL dependencies when using IBX, while still having the
359     unit search paths set up correctly.
360    
361 tony 33 Existing users should check to ensure that the "ibexpress" unit is included in
362     each project's source file (*.lpr).
363    
364 tony 31 You may find that in order for the IDE to recognise that ibexpressconsolemode
365     exists, you have to first open the package in the IDE and then close it. This
366     adds it to the most recently accessed packages list. To make it permanently
367     available, add the package name to lazarus' staticpackages.inc file.
368    
369 tony 33 Thanks to Julio Jiménez for suggesting support of console mode.
370 tony 31
371     7. SQL Parser can now accept quoted strings that include new lines
372    
373     8. IBDynamicGrid: Lookup Cell Editor - the cursor is now positioned at end
374     of text on start of edit. This is particularly useful when tabbing to a
375     column and then inserting text.
376    
377     9. New Examples provided for IB Services and ISQLMonitor.
378    
379     10. Fix error when writing to blob streams that recorded only the last buffer
380     write in the blob stream. In most cases, this did not cause a problem as the
381     IB Blob Stream is written in a single write. However, with the TDBImage, write
382     of a graphic type prefix was lost which caused a problem when the image could
383     not be automatically recognised.
384    
385     11. Improve generation of random cursor names in TIBSQL - avoid risk of "cursor
386 tony 33 already open" errors due to random numbers used for the cursor name being identical.
387 tony 31
388     12. IBTable: corrected error that could result in an "Index out of bounds" error
389     when opening the table and the Primary Key is the last or only column in the
390     table. Thanks to Rick Hoover for the fix.
391    
392 tony 33 13. Fix TIBDatabase initialisation of lc_ctype under unix. Set to "UTF8" instead
393     of "UTF-8", and update list of available database character sets. Existing
394     users should check the current lc_ctype setting in their applications.
395 tony 29
396 tony 33 IBX Change Log version (1.2-4) Sat, 09 May 2015 12:38:29 +0100
397    
398 tony 29 1. Firebird Services: avoid List Index error when opening a service with an
399     empty Params property.
400    
401     2. IBControls: Fix problem with new link mechanism introduced in 1.2.3.
402     Link now set up in Loaded method - avoids occasional failure to apply
403     SQL markup on initial open.
404    
405     3. "Employees" example performance improvements when scrolling.
406    
407     4. DBControlGrid: Correctly handle edit panel removal when panel is child control of a
408     TFrame. Force recaching of selected frame to avoid GTK race (results in a
409     random image cached).
410    
411     5. DBControlGrid: Should now react to changes in panel height at run time.
412    
413     6. IBDynamicGrid: Redraws rows below on panel editor hide - avoids blank space at end of grid
414     even when further rows exist.
415    
416     7. DBControlGrid: DefaultRowHeight is no longer a published property as it should
417     always be derived from panel height and setting this property can cause confusion.
418     Note for existing projects: to avoid a missing property error at run time,
419     each form using the DBControlGrid must be opened, updated and saved in the IDE
420     in order to remove the property value from the lfm.
421    
422    
423 tony 33 IBX Change Log version (1.2-3) Tue, 14 Apr 2015 14:11:17 +0100
424 tony 27
425     1. TIBStoredProc. Prepare now called by ParamByName to avoid need to always
426     call Prepare before setting parameter values.
427    
428     2. Error message on ParamByName (all cases) not found now includes name of missing parameter.
429    
430     3. Code tidyup and more robust handling of dsql information result vector.
431    
432     4. Support for centralised handling of transaction status changes. TIBTransaction
433     has been given additional events "AfterEdit", "AfterInsert", "AfterDelete", "AfterPost"
434     and "AfterExecQuery". The first three are called after the same event is called
435     for an IBCustomDataSet descendent using the Transaction. The fourth is called
436     after a call to TIBSQL.ExecQuery, again using this transaction. These new events
437     enable monitoring of transaction status changes for a given transaction to be
438     handled in a single place. For example, when a change to the dataset occurs
439     an indicator can be set that shows the user that in order to save changes,
440     the transaction should be committed. Rather than doing this per dataset, this
441     can now be done per transaction.
442    
443     5. TDataSet.CheckBrowseMode automatically posts changes to the current row when
444     the dataset is scrolled. However, any changes to the current row are, by default,
445     discarded when the dataset is closed. TIBDataSet, TIBQuery and TIBTable now
446     have a new property "DataSetCloseAction" that adds automatic posting of changes
447     on dataset close. If this property is set to dcDiscardChanges (default) then the
448     behaviour is unchanged from previous versions. if the value is set to dcSaveChanges
449     then IBX will attempt to post any unsaved changes before the dataset is closed
450     (and after the BeforeClose event handler is called). The exception is when the
451     dataset is being closed as a result of a transaction rollback. In this case,
452     no action is taken and any unsaved changes are discarded. This avoids both
453     unnecessary overhead and the risk that a validation error may occur in the Post
454     raising an exception and thereby preventing a rollback.
455    
456     6. String Field sizes and Display Widths should now be correct for multi-byte character sets.
457     In earlier versions, the Display Width was set to the maximum byte width rather than the character
458     width. Display Widths are now corrected by dividing by the max byte width per character.
459     For UTF8 character sets, the byte width is four and hence the Display Width will be
460     the byte width divided by 4. The byte width of each character set is determined
461     dynamically when the database connection is estabished from the RDB$CHARACTER_SETS
462     system table. (see also http://bugs.freepascal.org/view.php?id=27766).
463    
464     7. SQLParser will now correctly parse SQL Text which contains ':' within quoted string.
465    
466     8. IBLookupComboEditBox: List should now always be restored to full list when the
467     control loses focus. Default Key press default interval reduced to 200ms.
468    
469     9. DBControlGrid: Ensure that selection is changed to newly appended row, even
470     when dataset rows are less than visible rows.
471    
472     10. IBDynamicGrid: Editor Panel is not shown on indicator click if Datasource
473     does not exist or DataSet is empty. More responsive on dataset open. New event
474     OnRestorePosition. Column sort disabled if no header row.
475    
476     11. IBTreeView: improved handling of response to "Add Node". Avoid scrolling dataset
477     while dataset state is dsInsert. Avoids posting errors.
478    
479     12. IBControls: New mechanism for distributing UpdateSQL and UpdateParams events. This is to
480     avoid conflict with DisableControls/EnableControls with Master/Detail linked tables.
481    
482     13. IBLookupComboEditBox: Now avoids SQL Errors when combo box text contains single quotes.
483    
484     14. TIBDataSet and TIBQuery: new Event - OnValidatePost. This event has been introduced
485     to solve a specific problem. That is when the dataset cursor is moved (e.g. by
486     a grid mouse click and the current row is being edited or inserted. In this case, TDataset
487     always "posts" the current record regardless or whether or not it may be more appropriate
488     to cancel any changes; the post occurs before the "BeforeScroll" event fires due to the way the
489     "MoveBy" function is implemented by TDataSet. The OnValidatePost event is called
490     as the first action of the "Post" method and allows the handler to convert the Post
491     into a Cancel if that is the appropriate action on moving to a different row. This is
492     achieved by returning with "CancelPost" argument set to true. Note that an exception could be
493     raised here, but it may still be more appropriate to validate a post and signal
494     a problem in the "BeforePost" event handler. See readme.automaticposts.xhtml)
495    
496     15. On Unix derived systems, the Firebird library name can now be given as a colon
497     separated list. Each library name on the list is tried in turn, in left to right
498     order with the first found being used as the firebird library. By default, on Linux,
499     the library name list is 'libfbembed.so.2.5:libfbembed.so.2.1:libfbclient.so.2'. This can be
500     overidden by the FBLIB environment variable or the OnGetLibraryName function.
501    
502     Note: when using the libfbembed.so, if you prefix the database name with "localhost:"
503     then it will still attempt to access the database via the Firebird Server and will
504     require a username and password. If only the pathname is given, then the username
505     and password should be omitted and the unix file permissions are used to grant
506     access.
507    
508 tony 33 IBX Change Log version (1.2-2) Sat, 14 Mar 2015 11:35:04 +0000
509 tony 23
510     1. A new IBControl - TDBControlGrid has been added. TDBControlGrid a lookalike
511     rather than a clone for the Delphi TDBCrtlGrid. TDBControlGrid is a single column grid
512     that replicates a TWinControl - typically a TPanel or a TFrame in each row. Each row
513 tony 27 corresponds to a row of the linked DataSource. Any data aware control on the
514 tony 23 replicated (e.g.) TPanel will then appear to have the appropriate value for the row.
515    
516     2. As suggested by Julio Jiménez, a new property "SQLHourGlass" has been added to TIBDatabase.
517 tony 25 When set to false (default true), the Hour Glass cursor is supcpressed and no cursor change
518 tony 23 takes place during database access. This may be useful when there are performance issues with
519     the change of cursor. Setting the property to false suppresses the change of cursor.
520    
521     3. As suggested by Julio Jiménez, a new property "AutoCommit" has been added to TIBDataSet, TIBQuery
522     and TIBTable. When set to acCommitRetaining (Default: acDisabled), a call is made to
523     Transaction.CommitRetaining immediately after every Post or Delete. This has the effect of
524     making all changes permanent immediately rather than when the transaction is explicitly
525     committed.
526    
527 tony 25 4. Experimental support for the Firebird 3 SQL_BOOLEAN type has been added while still
528 tony 27 using the legacy Firebird API. Thanks to Gabor Boros for helping to test this feature.
529 tony 23
530 tony 33 IBX Change Log version (1.2-1) Fri, 13 Mar 2015 11:14:15 +0000
531 tony 25
532     Development version only.
533    
534 tony 33 IBX Change Log version (1.2-0) Thu, 26 Feb 2015 10:34:04 +0000
535 tony 21
536     1. An internal select SQL Parser is now available for TIBCustomDataset descendents.
537     This is typically used during an "OnBeforeOpen" event handler to manipulate the
538     "Where" and "Having" clauses to implement user specified filters of arbitrary
539     complexity.
540    
541     2. A new Component Palette entry "Firebird Data Controls" is now available. This has
542     three new data aware controls dependent on IBX and which make use of the SQL Parser.
543     These are:
544    
545     - TIBLookupComboEditBox
546     - TIBDynamicGrid
547     - TIBTreeview
548    
549     TIBLookupComboEditBox is a TDBLookupComboBox descendent that implements "autocomplete"
550     of typed in text and "autoinsert" of new entries. Autocomplete uses SQL manipulation
551     to revise the available list and restrict it to items that are prefixed by the
552 tony 25 typed text (either case sensitive or case insensitive). Autoinsert allows a
553 tony 21 newly typed entry to be added to the list dataset and included in the available
554     list items.
555    
556     TIBDynamicGrid is a TDBGrid descendent that provides for:
557     - automatic resizing of selected columns to fill the available row length
558     - automatic positioning and sizing of a "totals" control, typically at the
559     column footer, on a per column basis.
560     - DataSet resorting on header row click, sorting the dataset by the selected column.
561     A second click on the same header cell reversed the sort order.
562     - Support for a "Panel Editor". That is on clicking the indicator column, the row
563     is automatically expanded and a panel superimposed on it. The panel can have any
564     number of child controls, typically data aware controls with the same datasource
565     as the grid allowing for editing of additional fields and more complex editors.
566     - Reselection of the same row following resorting.
567     - A new cell editor that provides the same functionality as TIBLookupComboEditBox.
568     Its properties are specified on a per column basis and allows for one or more
569     columns to have their values selected from a list provided by a dataset.
570     Autocomplete and autoinsert are also available. The existing picklist editor
571     is unaffected by the extension.
572    
573     TIBTreeView is a data aware TCustomTreeView.
574    
575     3. When getting a field value using FieldByName.AsVariant, an SQL_INT64 with a
576     zero scale will no longer return an error. An Int64 will be returned instead.
577    
578     4. TIBTransaction now has events for Before and After Transaction End and a new function
579     "GetEndAction" allowing the EndAction to be accessed by these event handlers.
580    
581     5. TIBQuery can now handle correctly queries which contain the same keyword parameter
582     repeated multiple times.
583    
584     6. TIBUpdateSQL will no longer return an error when "RowsAffected" is <> 1. This error
585     check used to get in the way of using Stored Procedures, and "Update or Insert"
586     statements.
587    
588     7. Insert, Modify and Delete property Editors now support Query Generation from
589     Stored Procedures.
590    
591     8. Three new examples illustrate the use of the new IB Controls
592    
593    
594 tony 33 IBX Change Log version (1.1-0) Mon, 07 Jul 2014 14:01:07 +0100
595 tony 19
596     1. TIBXSQLVAR code clean up and optimisation to improve client side "prepare" and parameter
597     setting performance. See "readme.field+param.names in the doc folder.(Thanks to
598     Gabor Boros for reporting this problem and for testing the improvements).
599    
600     2. IBX can now support dialect 3 quoted column names that contain spaces and which differ only in their case.
601     See readme.field+param.names in the doc folder.
602    
603     3. IBX SQL Editors will now automatically add double quotes around column names when the database
604     dialect is "3" and the column name contains spaces or is a Firebird 2.5 SQL Reserved Word.
605    
606     4. Param Type LargeInt now supported in TIBQuery and TIBStoredProc
607    
608     5. TIBSQL.ExecQuery retry on failure removed to avoid problems with "at most once"
609     actions.
610    
611     6. TIBTransaction.SetDefaultDatabase uses SetObjectProp instead of mis-using SetOrdProp (with
612     thanks to Yuriy Kopnin for pointing this out).
613    
614     7. GenerateParamName is now a published property of TIBSQL, TIBQuery and TIBDataSet.
615    
616     8. varWord, varShortInt and varInt64 added to TIBXSQLVAR.SetAsVariant and hence now available as variant types
617     for both fields and parameter setting.
618    
619     9. Changes to the Select SQL in an IBCustomDataset descendent should now be
620     visible in the Fields Editor immediately afterwards - rather than only after cycling the "active" property.
621    
622     10. TIBSQL SQL editor will operate correctly and not report an SQL syntax error on SQL test,
623     when DSQL ('?') parameter placeholders are used and the TIBSQL.GenerateParamNames property is set to true.
624    
625     11. TIBTable now has a property editor for "MasterFields"
626    
627     12. SQL Property Editors now include a checkbox "Allow DSQL Placeholder". This corresponds to the
628     GenerateParamNames property and should be set when using DSQL (i.e. '?') style parameters.
629    
630     13. The IBTransaction editor now has a radio button ("Unspecified") which is set when the combination
631     of settings is unrecognised. Selecting this radio button has no effect on the settings.
632    
633    
634 tony 17 IBX Change Log version (1.0-5) Sat, 28 Dec 2013 19:22:23 +0000
635    
636     1. TBookmark change conditional compile changed to >= 2.7.0 to match revised availability of change.
637    
638 tony 15 IBX Change Log version (1.0-4) Thu, 28 Feb 2013 16:56:13 +0000
639    
640     1. In a TIBCustomDataset descendent, a generator now only sets the value when
641     it is null. This allows for alternative user defined setting of the generator
642    
643     Many thanks to Julio Jiménez for this fix
644    
645     2. An Error Dialog is now displayed in the Lazarus IDE if IBX cannot find the Firebird Library
646     and suggests that the user may have forgotten to install it.
647    
648 tony 13 IBX Change Log version (1.0-3) Thu, 22 Nov 2012 22:53:39 +0000
649    
650     1. Conditional compilation used to limit registration of TIntegerField to
651     Lazarus versions less than 1.1
652    
653     2. When a database connection is created, character set is now by default set
654     to UTF8 (Unix) or to the current Windows code page (Windows) if in the range
655     1250 to 1254.
656    
657    
658 tony 11 IBX Change Log version (1.0-2) Tue, 09 Oct 2012 09:10:30 +0100
659    
660     1. TBookmark change conditional compile changed to > 2.6.2 to match expected availability of change.
661    
662    
663 tony 9 IBX Change Log version (1.0-1) Sun, 05 Aug 2012 20:00:04 +0100
664 tony 7
665     1. In IBCustomDataset. Changed CurBookmark from string to TBookmark for compiler versions > 2.6.0
666     Necessary because of TBookmark type and TDataSet.Bookmark property change in fpc 2.7.1
667    
668     2. IBX now registers TIntegerField as a "No Icon" component. This may be removed if the fpc DB
669     package is changed to do this (which it should do).
670    
671     IBX Change Log version (1.0-0) Sat, 28 Apr 2012 16:43:00 +0100
672    
673     1. Add "if active then active := false" to TIBCustomDataset destructor. (Avoid error on database close).
674    
675     2. Make use of $STATIC conditional in IBSQLMonitor (Needed for FPC 2.6.0 compliance)
676    
677     3. Database Property Editor: Character Set drop down box now uses "OnChange" rather than "OnCloseUp" to react to changes
678    
679     4. Property editors should now correctly resize.
680    
681     5. In IBDatabaseEdit.TestClick, the LoginPrompt is now set to the state of the LoginPrompt Checkbox
682     (restored original functionality)
683    
684     6. Under OSX, if IBX fails to load libfbclient.dylib, it will now try and load the firebird
685     library using the absolute path /Library/Frameworks/Firebird.framework/Firebird.