<% '------------------------------------------------------------------------------- '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.62 (Build 2119)
Features and Fixes
Oct 19, 2010


Upgraded Navigator’s file list to support searching for a file using an incremental search instead of a first character search.



Enhanced the stability and resource management of dBASE Plus by fixing several memory and resource leaks and by fixing some potential causes of instability within dBASE Plus.



Fixed the following issues that made it difficult to upgrade older DOS and 16 bit dBASE applications to dBASE Plus in:
- USE … EXCLUSIVE command


Fixed some crashes that occurred when opening the Source Editor on Vista 64 bit or Windows 7 64 bit. A complete fix is expected in the next release of dBASE Plus.



Added events to make it easier to code custom forms and custom controls and perform any needed cleanup:
- Added onOpen event to components that did not yet have it (Container and ReportViewer)
- Added onDesignOpen event to component that did not yet have it (ReportViewer)
- Added onClose event to all Form and Report components that did not already have it
- FIxed bug that prevented firing onClose() event in components contained within Container and Notebook objects
- Added new beforeRelease() event to Form, Report and component objects allowing a developer to more easily implement and manage cleanup for their subclassed forms and form components. BeforeRelease() fires when an object is about to be destroyed.

For example, if a form issues any SET PROCEDURE commands in its constructor to make various functions and/or classes available for use, you can now add a beforeRelease() event to the form in order to issue any needed CLOSE PROCEDURE commands to either close or decrement the reference count of those procedure files.


Added new function procRefCount() – allows you to check the reference count of any open procedure file (See details below).



Improved opening speed and fixed flashing of Notebook components



Fixed several Grid bugs that could cause flashing or which prevented grid cell events from firing while opening a form.



Fixed some long standing bugs in the ListBox that could cause it to crash and to ignore its current font and color settings after its datasoruce is reset.



Upgraded Project Manager to fully support using relative file paths for files added to a project.
Also now supports using Source Aliases or Full Paths based on property setting.


Changed default for auto-starting dQuery on a new install of dBASE Plus so that dQuery will not auto start unless the user chooses to enable it.



Upgraded dQuery as follows:
- added support for the use of beforeRelease() events within a datamodule
- fixed several potential sources of instability that could lead to Memory Access Violations
- removed requirement that user save datamodule before opening it in the Source Editor
- fixed problem where Multi-Table View definition and custom report list were lost if datamodule was opened in Source Editor





Implemented incremental search in Navigator file list.

Instead of allowing searches for just the first character of a filename, the Navigator now supports multiple character searches allowing you to type as many characters as needed to pinpoint a file. After each character is typed the Navigator will add the most recent character to its internal search string and search for the first file matching the string. If backspace is pressed, the last character in the search string is removed and a search is repeated for the updated search string.
The search is NOT case sensitive.
The search string will be cleared when the following occurs:
- When Navigator is created
- When Navigator file list window receives focus
- When Left or Right mouse down event occurs on Navigator file list window
- If more than 1.5 seconds have elapsed since the last search character or backspace has been pressed.
- If you press backspace enough times to remove all characters in the search string.

Runtime Engine

QAID:6451 Modified command line processing logic for the -C switch to check for leading and trailing double quotes in order to support long path names and embedded spaces in the specified .ini file path when launching plus.exe or plusrun.exe

Also added new error message:
Error #404 "Unbalanced quotes in path for .ini file"

This error will be triggered if a leading double quote is detected
after the -C switch but no trailing double quote is found.

Form Components

QAID:3280 Added onOpen() event to Container
QAID:761/1825/4511 Added OnClose() events to all Form Components.
Added OnOpen() and OnDesignOpen() and OnClose() events to ReportViewer

Added OnClose() event to following form objects:

Added OnOpen() and OnDesignOpen() events to the ReportViewer class.

QAID:1825 Added OnClose() event to Container class
QAID:4511 Added OnClose() event to PushButton Class
QAID:1155 Added code to fire OnClose() events for report components. Note that Report's OnClose() events only fire when report's Close() method is run explictly.

Form, SubForm, Report, Form Components, Data Objects

QAID:6452 Added event beforeRelease() to most built-in classes including Form, Subform, Report, Label and components.

BeforeRelease() can be used to perform cleanup tasks prior to a form or subform being destroyed.

Added event beforeRelease() to the following classes:

All Form Components:

Procedure Files

QAID:6453 Added function ProcRefCount() to dBASE Plus. ProcRefCount() returns the number of references to a procedure file.

Added function ProcRefCount() to dBASE Plus.

ProcRefCount() returns the number of references to a procedure file.


ProcRefCount(<procedure file expC>)

procedure file expC - The filename or the path and filename of a procedure file

Use PROCREFCOUNT( ) to find the number of references to a procedure file.
PROCREFCOUNT( ) accepts a single parameter which is the name of the Procedure file or the full path and name of the procedure file for which you want the count returned.
The returned value is numeric.

Each time a procedure file is loaded its reference count is incremented by one.
Each time a procedure file is closed its reference count is decremented by one.

When a procedure file's reference count reaches zero, the procedure file is removed from memory and its contents are no longer accessible.

Use SET PROCEDURE TO <procedure file expC> to load a procedure file.
Use CLOSE PROCEDURE <procedure file expC> to close a procedure file.

QAID:6459 Increased number of dbase program files that can be open simultaneously (via SET PROCEDURE or via DO <program>) from 512 to 2048 to reduce the occurrence of inaccurate "Not Enough Memory" errors due to attempting to load more that 512 program files.


QAID:6573 Changed default for auto-starting dQuery from True to False so that dQuery is not automatically started unless the user chooses to enable it.



ActiveX class

QAID:6423 Modified dBASE ActiveX Control so it triggers an the Show() event of any activex control hosted within it. This fixed a problem with the GD Viewer Pro ActiveX which expects to be notified when to activate its user interface (UI) and when to show itself. Previously, dBASE only notified an ActiveX to activate its UI.

Browse Command

QAID:6545 Fixed bug found in MSVC build that caused custom column headings in a
browse object to display as gibberish.

Custom column heading were specified via the FIELDS clause'

\H="headerstring" option, for example:

BROWSE FIELDS name\H="My Name"

The cause of the problem was due to a buffer containing the column heading being released too soon.
This has been fixed for both builds (BC5 and MSVC).

ColumnCombobox class

QAID:6425 Fixed regression that caused this.value to return an incorrect value within a columnComboBox's onChange event. Modified fix so that it does not break this.value when accessed in beforeCellPaint() and onCellPaint().
QAID:6526 Fixed flicker when painting columnComboBox that occurred when scrolling vertically through a grid column. The columnComboBox is now created invisibly to hide several initial repaints until it is sized to grid cell and its systemTheme has been set to match the grid.

Container and Notebook classes

QAID:1826/6164 Fixed Container and Notebook classes so that the OnClose() event of any contained controls will fire when form is closed.

DataModRef class

QAID:1901 Fixed Internal Error that occurred when using a shared datamodule via datamodref's on multiple forms and then switching between forms.
Fixed Internal Error that occurred when using a datamodref on 2 forms with the datamodule shared between the datamodrefs and then running one form and then closing it and switching to the second form, and then closing the second form and switching back to the first form.
When the first form was closed the shared datamodule was left parented to the first datamodref which was released after the second form opened. When attempting to switch back to the first form, an internal routine attempted to access the datamodule's parent object which no longer exists.

Form and SubForm classes

QAID:6544 Fixed the following resource leaks:
- When setting a form's icon property and then repeatedly issuing: do someform.wfm and then closing the form.
- In Notebook object when its systemTheme property is set to true and form containing notebook is opened and closed.
QAID:6547 Fixed flash during form opening that was caused by erasing and repainting the form's contents after all controls have been initialized and displayed, but before the form's onOpen events have fired.
Flash was most pronounced in form's containing large notebook controls that contained may components and with Visual Styles enabled.
QAID:6539 Fixed potential source of instability. Fixed internal function signature used for form and subform onMove() event. Parameter and return count was incorrectly set to 4 instead of 3.
QAID:6412 Fixed autoCenter property on form and subform so that it doesn't make a form (or subform) visible when visible is set to false.
QAID:6518 Improved algorithm used to decide where to automatically scroll a form or subform when a component receives focus and the component is outside the visible area of the form or subform.
QAID:6564 Fixed crash due to a recursive release sequence that occured if form.release() is called on a form that is open and whose onClose() handler calls form.release().
QAID:6571 In dBASE Runtime fixed firing of events while closing last open form in application. This fix allows canClose() and onClose() events to fire during form closing sequence (as well as new beforeRelease() event).

Form Designer

QAID:6530 Fixed potential source of MAV. Changed code to return a pointer to the string contained in the internal m_procedureNameList array (which is allocated on the heap) instead of a pointer to the string within a locally allocated CString (which goes out of scope when this method returns). This routine is called when changing the Form Designer's base form class and when streaming a form's code when saving within the Form Designer.

Grid class

QAID:6524 Fixed regression which prevented grid cell's from displaying as selected when grid first receives focus, such as when form opens, or when user tabs into grid.
Note that some grid property settings that are made after initial grid construction may prevent highlight from displaying in grid cell. In those cases call grid's refresh() method in grid's onOpen() event to fix display of cell's highlight.
(Regression occurred in fix for QAID: 6349 in build 2067)
QAID:6525 Fixed firing of beforeCellPaint() and onCellPaint() when grid is first created during form opening. Events were not firing until form fully opened due to the form turning off event firing while creating each component. Modified column controls to temporarily turn on the form's event firing while painting each grid cell (except when form is opened in the Form Designer).
QAID:6496 Fixed flicker of entire Windows desktop that occurred when changing a grid's datalink. The flicker occurred when the grid's hScrollbar property was set to 2 - Auto and the Grid's datalink was changed from Null to a valid rowset object.

ListBox class

QAID:72/1886 Fixed source of GPF in ListBox which was due to ListBox not using the correct mechanism to notify its underlying grid of changes to its datasource and font properties when the datasource is a field object. This also fixed ListBox's Font and Color Properties so that they worked properly especially after changing or restating ListBox's datasource.
QAID:6047 Fixed a listbox bug where the last item in the list is displayed as selected and at the top of the listbox when the listbox is first opened. The other items in the list are scrolled above the top of the listbox. This problem became apparent after the b1992 updates for QAID:5461, which fixed the grid auto vertical scroll bar mode so the vertical scroll bar doesn't display for a grid or listbox if the number of rows or items fits within the defined vertical space.
QAID:6559 Fixed double firing of ListBox OnSelChange() when datasource is a field in a table.

PushButton class

QAID:6424 Fixed pushbutton so it correctly sets its text color to use the foreground portion of its colorNormal property when its systemTheme property is set to True and version 6 common controls are available (on Win XP, Vista, Win 7)

Report class

QAID:1735 Fixed MAV that occurred when dragging field onto report from table open in a workarea.
QAID:3662 Fixed report.elements property so all report components are added to the elements array. (Does not include Bands, Groups, Streamsource, or PageTemplate objects)
QAID:3882 Fixed text object with variableHeight=true, to ensure that no lines of memo are dropped when wrapped to next page of report.

Rowset class

QAID:2016 Some rowset methods were not ensuring that the current rowset is synchronized with its parent rowset when the current rowset is setup as a child in a parent/child relationship. Fixed the following rowset methods: first() last() count() next().


QAID:6514 Fixed 2 bugs preventing SKIP and BROWSE from working properly with parent->child->grandchild relationship setup via SET RELATION and SET SKIP setup to move child and grandchild tables in sync with the parent table.

Fix 1
When parent was skipped to a row without any matching child or grandchild rows, dBASE was not loading the child and grandchild row buffers with empty data. Instead data matching the previous parent row was left in the child and grandchild row buffers.

Fix 2
Fixed BROWSE command so it correctly displays and moves through rows from parent, child, and grandchild tables in a parent->child->grandchild relationship.
Previously, data would initially display correctly, but when scrolling downward in the BROWSE (by pressing the down arrow key) past the last visible row the child and grandchild tables would not remain synchronized with the current parent row.

Source Editor

QAID:6302 Fixed Memory Access Violation that occurred when opening the Source Editor while running dBASE Plus on Windows Vista 64 bit or Windows 7 64 bit


QAID:6494 Fixed possible source of crash when comparing numeric values. Crash was found via QA automated testing. Found that internal buffer used when converting a number to a string of digits was sometimes too small for resulting value. Modified buffer size to ensure that it is always large enough for dBASE floating point values.
QAID:6474 Fixed source of some memory access violations that occurred when Query objects were notified recursively during release of their parent object (form or datamodule).


QAID:217 Fixed bug that allowed USE sometable EXCLUSIVE to open table in shared mode instead of throwing an exception or displaying an error message (when table was already open by another user or another session in shared mode)
Modified error message to include the table name when a USE ... EXCLUSIVE command fails due to the table already being in use in another session.