<% '------------------------------------------------------------------------------- 'File : dBase_Cust_Ser_Tech_Support.asp 'Author : Surya Kumar 'Task : Cust_Ser_Tech_Support Page for dbase 'Version : 1.0.0.pk 10.12.2004 Base version 'Copyright : Ebase Interactive Inc., NY, USA '------------------------------------------------------------------------------- %> Welcome to dbase


dBASE Plus 2.61.4 (Build 2075)
Features and Fixes
March 24, 2008


New Features

dBASE Installer
  dBASE Installer and product executables are now code-signed.

Installer now includes Inno Script Generator and Inno Start Pack 5.2.3

Vista Manifest files for plus.exe, plusrun.exe and bdeadmin.exe

Help Files and Documentation updated to the 2.61.4 level


Grid Class
QAID 1232 Enhanced design time functionality of the grid. When designing a Grid in the Form Designer, if custom columns are defined, you can now:
  • size columns, move columns, and set the grid's cellHeight(rowHeight) by using the mouse
  • select a column's editorControl or headingControl into the inspector by left clicking them with the mouse. The first click on a column will select the column, the second click will select either the heading control or the editor control (whichever the mouse is over). Clicking a third time will reselect the column. This allows you to cycle between the column and the editor or heading control by clicking repeatedly.
QAID 1253

Updated the Grid to support passing correct mouse coordinates to columnHeader mouse events.

Grid level mouse event handlers will now fire anywhere on a grid as long as the event handler is defined and is not overridden by a matching columnHeading or editorControl event. This includes mouse events on a column header, row header, grid cell, or grid background

QAID 6219

Added a new Grid event: onHelp()

onHelp() can be fired in two ways:

  • by clicking the F1 function key on the keyboard, while the Grid has focus.
  • by using the context help question mark (?) in the title bar of the form.Clicking on the context question mark (?) starts the context help mode which changes the mouse pointer and allows the user to click on a form component (in this case a Grid) to trigger it's onHelp() event.
QAID 6325 Added a new Grid property : alwaysDrawCheckbox

The default value for alwaysDrawCheckbox is True which causes any columnCheckBox controls to be painted with a checkbox for all cells in the column.

When alwaysDrawCheckbox is set to False, the checkbox is only drawn in a cell if it has focus.

QAID 1210 Updated the grid component so that when its metric property is changed its cellHeight value is correctly updated. Updated the listBox component so that when its metric property is changed its rowHeight value is correctly updated.

Grid Editor Controls
QAID 1396 Added a full set of mouse events for the Grid editorControls (columnEntryfield, columnSpinBox, columnCheckBox, columnComboBox, columnEditor). Mouse events include:
    onLeftDblClick
    onLeftMouseDown
    onLeftMouseUp
    onMiddleDblClick
    onMiddleMouseDown
    onMiddleMouseUp
    onRightDblClick
    onRightMouseDown
    onRightMouseUp
    onMouseMove
QAID 6329 The columnComboBox control has been enhanced to have the following properties and events to match the comboBox control:
    Style (with options of 0-DropDown OR 1-DropDownList)
    AutoTrim
    MaxLength
    SelectAll
    BeforeDropDown
    BeforeCloseUp
    OnChange
    OnChangeCancel
    OnChangeCommitted
    BeforeEditPaint
    OnEditPaint
QAID 6397 The columnComboBox control now auto adjusts it's height to match the current grid cellHeight.


Form and SubForm Class
QAID 209 Added new contextHelp property to the Form Class and the SubForm Class.
When contextHelp is set to true and mdi, maximize, and minimize are set to false, a button displaying a question mark (?) will display to the left of the form or subform's close button in the rop right portion of the form's titlebar.
Clicking the mouse on the context help button starts context help mode which changes the mouse pointer and allows the user to click on a form component to trigger the component's onHelp() event.
When contextHelp is set to false (the default) no context help type question mark is displayed in the form's title bar.
QAID: 5496 Added a new systemTheme property to:
    _app.frameWin
    Form class
    Subform class
    All Form control classes that have their own window.
When systemTheme is True (the default), when running on XP or Vista, and with a manifest file installed that instructs Windows to load the version 6 common controls, windows and controls are painted using the current Visual Style set in the operating system.
When systemTheme is False, the version 5 common controls are used and windows and controls are painted using the classic Windows look


dBASE Built .exe's and Runtime
QAID 6075 Upgraded dBASE so it can build .exe's that can be code signed.

New executables built with dBASE Plus will contain some additional information that will allow them to be loaded successfully with the new runtime engine whether or not they are signed with a digital signature.

The new dBASE runtime will check a dBASE built .exe for the new data. If found, it will be loaded using the digital signature safe way. If not found, it will be loaded the old way which will not support digital signatures.

The new runtime is therefore, backward compatible with executables built with prior versions of dBASE Plus.

In addition, executables built with the new version of dBASE Plus will work with older dBASE Plus runtime engines unless it requires features available only in the newer runtime engine.


Fixes

Line and Shape Objects
QAID: 6259 Fixed regression that caused a Line object on a Notebook to be clipped by another object when that other object's visible property was set to False.
Modified Line object to ensure that it will be painted fully when on a notebook.
Made related changed to the Shape object that caused a Shape object on a Notebook to be clipped by another object when that other object's visible property was set to False.

Grid
QAID 642 Fixed issue where Grid Class onLeftDblClick Failed to Fire
QAID 1995 Fixed issue where onLeftMouseDown only fired once for any row, unless you moved off it and back on it
QAID 5670 Fixed issue where onRightMouseUp appeared not to fire in Grid when rowselect = false
QAID 6339 Fixed ability of grid to reliably repaint when its colorNormal property is changed.

Grid Columns
QAID 6151 Fixed autosizing of default grid column widths when the grid's anchor property is not set to its default value.
QAID 6319 Modified columnComboBox so it auto adjusts its height when the grid's cellHeight is changed or the user manually resizes the grid's row height.
QAID 6243 Fixed the conversion for the columnEditor's dropDownHeight from the current form metric to pixels when expanding the columnEditor.

Previously, the code to convert the dropDownHeight from the current from metric into pixels was failing to obtain the correct form.metric. This led to it assuming that the current form metric was 0 (Chars) when it was not.
This, in turn, led to the expanded columnEditor being set to a much larger height than it should be when the form's metric was actually set to 6 (Pixels).

Made additional fixes to convert the columnEditor's default height, width, and left margin to the current form metric.
QAID 6340 Fixed bug in columnComboBox that caused this.value within beforeCellPaint() and onCellPaint() event handlers to return an incorrect value when initially painting the grid, when paging up or down, when scrolling down past the bottom of the grid or when displaying a blank row to add a new row or the first time a user gives focus to a columnComboBox and then navigates off of it.
QAID 6349 Fixed each of the grid's column editor controls so that they no longer trigger an extra paint when navigating from cell to cell.
(columnEntryfield, columnSpinbox, columnCheckbox, columnComboBox, columnEditor)
This fixes several display bugs as follows:
  • After scrolling to bottom of rowset within grid, press up arrow to cancel adding a row.
  • In cell with focus, data from previous row flashes briefly before grid repaints
  • In columnComboBox, if colorNormal was changed within beforeCellPaint and onCellPaint based on the columnCombBox's this.value property,
  • colorNormal was being set incorrectly due to this.value not being current due to the paint occurring at the wrong time.
QAID 6362 Fixed problem that prevented columnEntryField from being painted with background color set via its beforeCellPaint handler when the grid's rowSelect property is True and the columnEntryField is datalinked to a memo or image field.

Container
QAID 6268 Modified container class so it repaints its controls when container is a child of a notebook object.

Combobox
QAID 6269 Fixed firing of combobox.key() and combobox.onKey() events when user presses the RETURN key (for style 0 and 1 comboboxes).

Table Designer
QAID 6272 Fixed Table Designer Save As routine that was incorrectly attempting to free a string containing the Save As filename which could lead to unpredictable behaviour.

Entryfield
QAID 6274 In routine used to validate dates in entryfields, modified code to ensure that a month greater than 12 can never be used to access an array of month lengths passed the end of the array.
QAID 6401 Fixed entryfield & spinbox controls so that they can fully copy data from control onto Clipboard without dropping the first character or digit that corresponds to a picture template character

Report Designer
QAID 6277 Modified Report Designer's Undo logic to ensure that a NULL pointer is ignored rather than used when setting up to perform the undo.

ActiveX
QAID 6289 Fixed implementation of ActiveX component to properly release memory allocated to hold the license key's string in the event that the call to retrieve the license key string fails.
QAID 6292 Modified ActiveX object to ensure that an ActiveX's license string is passed as a BSTR type string (a null terminated binary string) to the constructor of its container object

Notebook
QAID 6239 Fixed regression where components on a notebook are not visible when a form containing a notebook is first opened when the notebook has no border and no manifest file is used (so old common controls are being used).

Rowset
QAID 6361 Fixed problem with automatic row locks that allowed the Save() method to automatically unlock an explicIt lock obtained by calling lockrow().

getFile() and putFile()
QAID 6355 Fixed following issues in the GetFile() dialog:
  • Database table list window initially displayed at wrong size if GetFile() dialog was previously resized to a larger size.
  • "Database:" text label overlapped database combobox to its right.

Fixed initial display of database tables list when getfile() or putfile() dialogs are opened with a database control.
Previously, the table list did not display OR resizing the dialog caused the table list to disappear.

XDML
QAID 6388 Fixed regression in USE command processing in runtime engine so that if a table is not found in current path, then paths specified in the SET PATH command are searched to find the table.
QAID 6387 Fixed SET VIEW TO command and form.view property so that when executed within the dBASE Plus runtime, a .qbo file will be found if its sitting in the folder with the dBASE built application .exe, or along the DEO search paths, or along one of the SET PATH paths or within the application .exe file.

Inno Script and Project Explorer
QAID NONE Added support for .qbe and .qbo filetypes to Project Explorer.
QAID 6237 Fixed Inno Script generation bug that caused an error when working on
a project file built with an older version of Project Manager and then
opening it with the Build 1030 level Project Manager (shipped with Plus
2.61.3).
When the error occurred, extraneous entries were added to the Inno
script under the [Tasks] section setting the script up to support all possible languages even though no languages were specified in the Project file.
QAID 6383 Fixed log file display after running Rebuild All and Compile All options
so that it no longer goes blank at end of Rebuild or Compile sequence. Modified code to dynamically update log file display during build or
compile sequence.
QAID 6398 Fixed Project Explorer datatype mismatch error that occurred if "support desktop icon" was selected and no language was selected for inclusion when the "generate script" button was clicked.


dQuery
QAID 6384 Fixed Invalid subscript reference error that can occur when attempting to perform a Sum. Also fixed several additions areas that were not checking empty, blank or null settings within the Calculate dialog.
QAID 6402 Fixed problem where dQuery would prevent a user from beginning a new
row in the Single Table View unless they first saved the current row.
This affected dBASE, FoxPro, and Paradox tables.

Stability and Code Cleanup
QAID 6273 Fixed potential buffer overflow in routine that processes the picture property's S (scroll) option.
If the value passed for S is 5 or more digits, than a buffer overflow would occur.
This is rare as S would normally be between 1 and 3 digits.
QAID 6275 Fixed potential string buffer overrun when setting up icon labels for filenames in Navigator.
The code that was modified is only used when setting the Navigator to display Large Icons.
QAID 6276 Fixed potential use of a NULL pointer and prevented scanning past end of string buffer in reporting records copied during COPY command and other commands that report progress.
QAID 6278 Fixed possible memory leak when opening a database when a parameter is found that is of an unknown type. An array used to hold parameter type objects was allocated on the heap and was not being released due to its pointer going out of scope. This fix only affects the OPEN DATABASE command when the AUTOEXTERN option is included (which only supports Interbase and Oracle).
QAID 6279 Fixed small memory leak in the following XDML commands:
INDEX ON
COPY INDEXES
COPY TAG
when the index being created or copied is a Primary key index.
QAID 6280 Modified _app.frameWin's open code to work more efficiently.
QAID 6281 Ensured that a null pointer is not used incorrectly when
opening the Count dialog
QAID 6282 When double clicking on a table in the Navigator or when completing the Form Wizard, there was a chance that a Null pointer could be referenced if the Form creation failed. Added test to ensure that a Null pointer will not be used.
QAID 6290 Fixed memory leak that occurred with 3 strings used when retrieving help information from an ActiveX object's nativeobject if the call to retrieve the information failed.
QAID 6291 Added additional error test when searching for correct resource .dll (ex: Plus_en.dll) to load. The additional test is to ensure that a value was returned by Windows when dBASE checks the current locale setting.
QAID 6293 Corrected call to release memory for a temporary array used during processing of a DDETopic onExecute event.
QAID 6294 The Date Object's ToGMTString() and ToString() methods call an internal routine to retrieve an abbreviation for the month name. This internal routine, in turn, calls Window's GetLocaleInfo() function to retrieve the desired abbreviation for the month in the appropriate locale.
Added a check to ensure that GetLocaleInfo() succeeds before doing anything more with the buffer used to hold the month abbreviation.
QAID 6363 Corrected tests that check if calls to LoadLibrary succeeded or not by changing these tests to check if the returned handle is NULL rather than if the returned handle is greater than 32 (HINSTANCE_ERROR).
This should have been done when Borland ported dBASE from 16 bit Windows to 32 bit Windows.
Also, adjusted some routines to ensure that FreeLibrary() is called to decrement the reference count on a library file (or unload it if the reference count reaches zero).
QAID 6365 Fixed small memory leak in the database class's reindex() method.
QAID 6366 Fixed small memory leak that would occur if a listbox's datasource was assigned an empty string, such as:
f = new form()
f.l = new listbox(f)
f.l.datasource = ""
QAID 6367 Fixed leak in the database object's open() method that occurred when connecting to a database that contains stored procedures that have parameters.
Memory containing a copy of an array of parameters was being leaked after a stored procedure was registered by dbase.
QAID 6369 Fixed small memory leak that was occurring when assigning a value to a combobox's datasource property.
QAID 6370 Fixed memory leak when saving table structure in Table Designer.
Memory used to hold an array that maps old field names and positions to new field names and positions could be leaked in certain cases.
QAID 6371 Fixed small memory leak when initializing Find & Replace dialog for Source Editor when no replace string is specified.
QAID 6372 Fixed memory leak that could occur under certain circumstances when executing the CALCULATE command.
QAID 6373 Fixed possible memory leak when setting up a filter on a rowset.
QAID 6374 Fixed 3 internal methods of GetDirectory() that could trigger instability of dBASE Plus by using a pointer to a variable that has gone out of scope.
QAID 6375 Fixed potential use of out-of-scope variable when retrieving pointer to parent container.
QAID 6376 Fixed possible use of a pointer to a previously freed memory block when formatting a string with a picture and/or function property.
QAID 6377 Fixed incorrect release of an internal array when loading a .png image file.
QAID 6378 Fixed possible writing passed end of buffer when loading or displaying memo field data in Editor object.
QAID 6395 Fixed regression that caused a MAV when closing a Form containing a SubForm.
Also added code to prevent firing subform's activation logic while resizing it.