|
New: Native ActiveX support!
|
|
|
With Xbase++ 1.9 native and transparent ActiveX support
is available to anybody right out-of-the-box. Any ActiveX component
behaves just like any other native Xbase++ object with its instance
variables and methods. Consequently, MS Backoffice integration with Word, Excel
or Outlook is only a few lines of code away. See GetObject(), CreateObject(),
ComLastError(), ComLastMessage() functions for more details. New classes
such as AutomationObject() and ActiveXObject() were introduced for
easy and transparent access to COM/ActiveX components.
|
| |
|
|
New: Unlimited visual ActiveX components
|
|
|
With Xbase++ 1.9, the world of visual
ActiveX components and control libraries is at your fingertips. A new XbasePART
functioning as a generic ActiveX control container for embedding visual
ActiveX components was added. Now Xbase++ developers can mix standard XbasePARTS
and visual ActiveX components freely.
|
| |
|
|
New: .NET components and the .NET framework
|
|
|
The ActiveX technology included in Xbase++ 1.9 was enhanced
to support the COM Interop layer and the .NET Framework. With Xbase++
1.90, it is possible to use .NET components in Xbase++
applications.
|
|
| |
|
|
New: XbasePARTs for building GUI applications
|
|
|
New XbasePARTS such as XbpStatusbar, XbpToolbar, XbpRtf and XbpHTMLViewer.
These UI components will give your Xbase++ application
the standard Windows look-and-feel. The Editor application shown below
was added to the Xbase++ samples collection.
|
|
| |
|
| New:
Owner-drawing capabilities for XbasePARTS |
|
|
Right from the
start, Xbase++ has been customizable with regards to
the look & feel of existing UI components using the Xbase++
Graphics Engine. This
feature, however, is limited when it comes to changing the appearance
of the standard Windows UI components, such as listboxes or menus.
With Xbase++ 1.9, we provide owner-drawing for XbpMenu, XbpPushbutton,
XbpListbox and XbpComboBox. Simply customize the look of your application's
list or drop-down combo boxes! And all of your applications
will come along with that fancy appearance via MS Office-style menus!
The sample below shows an owner drawn XbpMenu() and a owner drawn XbpListbox().
It can be found in the source\samples\basics\ownerdraw directory of Xbase++ 1.9
|
|
| |
|
| New:
Extended locking for NTX and CDX DatabaseEngine |
|
|
Both NTX and CDX Index-Engines, now
support extended locking, which can dramatically increase multi-user performance
in network environments. More details about Table (DBF) and Index (NTX/CDX) file locking
can be found here (PDF Document).
|
|
| |
|
| New:
Sub-Index feature for NTX and CDX DatabaseEngine |
|
|
Create orders
by using records only visible to the current order and scope. You
can create orders faster with the SUBINDEX/ USECURRENT feature,
provided that only a subset of a table needs to be visible. This
feature is especially useful when it comes to query processing. While
expressions at index/order creation-time are supported, too.
|
|
| |
|
| New:
Custom and Candidate orders |
|
|
Using Custom Orders
you can roll your own order by manually adding or removing keys from
your index. The new functions OrdKeyAdd() and OrdKeyRemove() provide
an easy interface for implementing custom ordering of your tables.
This is a great feature for picklists or efficient maintenance of
specific subsets of a table.
Using Candidate Orders, you can prevent duplicate records from being
entered in the table by making keys truely unique. Using this feature,
you can have Xbase++ enforce key uniqueness automatically,
raising a runtime error whenever a breach of the criteria occurs.
This is a great feature for making sure that your primary key is and
stays unique.
|
|
| |
|
| New:
Like() and OrdWildSeek() for pattern matching and seek operations
|
|
|
Using Like(), wildcard
comparison of character strings is now supported right out of the box. With
OrdWildSeek(), you can perform super fast searches in existing orders using
wildcard patterns such as "Jo? Do*".
|
|
| |
|
| New:
FOXDBE Enhancements |
|
|
Support for new datatypes VARCHAR and VARBINARY. This is great for
fields where you don't want trailing blanks. Sequenced (or auto-incrementing)
fields allow to automatically maintain unique numbers per field. Null value-
support to identify fields which hold Nothing/No Value. This feature is important
for statistical functions such as calculating the average, for
example.
|
|
| |
|
| New:
NULL/NIL value support |
|
|
Various functions, such as IsNull(),NullIf(), Coalesce() have been added to simplify database expression
handling with respect to NULL/NIL value support. In addition SET NULLVALUE and DbSetNullValue() have been added to automatically transform NULL/NIL values into their corresponding empty values.
|
|
| |
|
| Updated:
Support of legacy xBase products |
|
|
To enhance backward compatiblity with legacy xBase systems such as
FoxPro 2.x and Visual Objects, the standard DatabaseEngine of Xbase++ 1.90 have been
enhanced. The CDX DatabaseEngine now supports FoxPro 2.x IDX index files.
The DBF DatabaseEngine can handle ANSI data in DBF/DBT files. The default Xbase++
DatabaseEngines guarantee concurrent and interoperable operations with Clipper (DBF/NTX/CDX),
Comix (DBF/CDX), Six (DBF/CDX), FoxPro 2.x (DBF/FPT,CDX/IDX), Visual FoxPro (DBF/FPT/CDX),
Visual Objects (DBF/NTX).
|
|
| |
|
| New:
DbUseArea(), DbCreate() and USE |
|
|
DbUseArea(), USE and DbCreate() now support an optional parameter
oSession to specify the session context. This feature makes your source code
cleaner and easier to write when dealing with multiple sessions.
|
|
| |
|
| New:
Drag and Drop events |
|
|
Xbase++ now supports Drag and Drop events for all Xbase Parts derived
from XbpWindow() or XbpCRT(). Furthermore the DragDataObject() class
was added. It provides automation interfaces for objects dropped onto an Xbase Part.
|
|
| |
|
| Updated:
Revised garbage collector and memory packer algorithms
|
|
|
With Xbase++ 1.9, the garbage collector gains a new level of performance.
Previously, some of our customers observed situations in which larger applications tended to slow down. It was also possible that the memory packer consumed 100% of CPU resources for a larger period of time, so that the end user might have thought that the application was hung. We resolved both problems with this version. In general, the garbage collector and memory packer consume, by far, a much fewer amount of CPU resources.
Furthermore, a new deadlock-detection mechanism was added to the Xbase++ kernel, which results in a smoother and finer multi-threading granularity.
|
|
| |
|
| Updated:
Support of Dynamic Execution Protection |
|
|
The Xbase++ runtime was adapted to work properly in cooperation with
the Hardware DEP (Dynamic Execution Protection) feature available under Windows XP SP2
and Windows Server 2003. Xbase++ 1.90 has been validated against Windows
XP 64Bit. Starting with Xbase++ 1.90, 64Bit Windows is officially supported
as a platform.
|
|
| |
|
| New:
Various small functions added |
|
|
Additionally, we included a bunch of new functions to make developers' daily life easier. Functions to create and resolve Windows shell links, utility functions to center an Xbase Part on its parent, new events, such as xbeM_Enter or xbeM_Leave, to name just a few.
|
|
| |
|
| Updated:
SET PRINTER TO now supports remote printers as well as USB printers
|
|
| SET
PRINTER TO now supports printers to be accessed either via their standard
port (eg. LPTx), their UNC share name (remote printers) or the Windows/Explorer
printer object. Hence output can now also be sent to USB printers.
Refurbish your mature application's reports by having them printed
on state-of-the-art printers!
The class XbpPrinter() now features enhanced page control which facilitates the
selection of different paper trays in a single print job. |
|
| |
|
| New:
NoIVar() and NoMethod() support |
|
|
New methods, such as NoIVar() to catch unknown instance variable
access and NoMethod() to catch unknown method access of an object
have been added to the Xbase++ OOP engine.
|
|
| |
|
|
Updated: Project Builder enhancements
|
|
|
PBuild allows now to have certain actions carried out either before
or after building each target of your project. These actions, called
PRE and POST actions, respectively, can be wholly specified
by you. Using a POST action, you can have PBuild copy files to
various locations on your system automatically, for example.
This feature has
proven to be really useful when it comes to the implementation of
deployment processes as a part of your project lifecycle.
|
|
| |
|