August 2020
===========
* adofuncs.prg:
- function FW_OpenAdoConnection( acConStr/Spec, lShowErr, @oErr ) --> oCon
New 3rd parameter receives the ado error object, in case of error.
* msgget.prg: Enhancement: Password Get now has button to show/hide
password.
* FWMariaConnection:
- New Readonly DATAS OS, lWindows: OS of the Server and if it is Windows.
- New method DbExists( [@]cDatabaseName ) --> lExists
The comparsion is case insensitive even on Linux.
If the fist parameter is by reference, the database name with correct
case is returned in the parameter.
- Enhanced Method TableExists( [@]cTableName, [[@]cDatabaseName], ;
[[@]cTableType] ) --> lExists.
a) Temporary tables are also covered in this version.
b) cTableName can also be given as db.table.
c) cTableName and cDatabase names are case insensitive except for
temporary tables.
d) if cTableName and optional cDatabaseName are by reference, names
with correct case are returned.
e) 3rd parameter cTableType can be
- empty to check for base tables/views/temporary tables
- "BASE" to check only basetables
- "VIEW" to check only for views.
- "TEMPORARY" to check only for temporary tables.
- "WRITE" to check for base and temporary tables but not views.
- If empty password is passed by reference, the table type, i.e.,
BASE TABLE/VIEW/TEMPORARY is returned in the parameter.
- Methods RowSet(tablename), Insert, etc are case insensitive and
now support temporary tables also.
- Method CreateTableSQL( cTable ) --> SQL to create the table.
Now, cTable can be a View also and returns SQL to create the view.
- Enhanced method SaveToDBF( cTable/cSql, cDbf/cNewAlias, lForUpdate )
If the 2nd parameter is an unused alias name, a temporary dbf with
that alias is created with the data. This can be used for editing,
appending and then updating the table with
( cAlias )->( oCn:UploadFromAlias( cTable ) )
This is another way of batch mode editing.
* Dialog.prg: When a dialog is activated as mdichild, the tab order of
the controls is reversed. Fixed now.
viewtopic.php?f=3&t=36244&p=234254#p234254
- samples\mdidlg.prg revised.
* TWindow methods WinStyle( nStyle, [lOnOff] ) and WinExStyle( nStyle, [lOnOff] )
apply to windows, dialogs and all controls.
In case of dialogs and controls created on dialogs, it is no more necessary
to use the methods in the on init clause of dialog. It is now possible to use
them even before activating the dialog.
* TGraph.prg: Fix: DATA lFlat is not initialized in case of Redefine() resulting
in runtime error. Fixed.
* Enhancement: MENUITEM ... WHEN clause now receives oMenuItem (Self) as the parameter.
* Enhancement: samples\fivedbu.prg now shows as selected the current index tag from
the button "index" side popup.
* XBrowse:
- New column data: bHRClickMenu: If specified, this will be added to the
SetColumns popup menu when header is right-clicked.
- SetColumns() popup menu is aligned with the bottom of header.
- method DelCol() was changing nCreationOrders of all the columns incorrectly,
when deleted after swapping/moving some columns. fixed.
- GroupHeaders:
- When group headers are specified, oBrw:nHeaderHeight assigned by the programmer
was being ignored. Now this value is considered.
- Sixth parameter nHeight is added to method SetGroupHeader. If specified, this value
is used for the group header.
Method SetGroupHeader( cGroupHeader, nFromCol, nLastCol, oFont, nAlign, nHeight )
- DATAS bClrStd, bClrSel and bClrSelFocus:
- Both browse and columns have these Datas. When the browse is initialized (in the
Adjust() method) datas from browse are copied to all the columns, except where
the datas of individual columns are already diectly assigned with different values.
From that time, all cells are painted using column's datas only (except when
oBrw:lFastDraw is set to .t.) ignoring any further changes to the datas of browse
object. As a result any changes made to the datas of browse at runtime are ignored.
only way is to change all or any columns datas.
From this version, cells are painted using columns' datas when specifically assigned
or the current datas of the browse object. This makes it possible to change the
colors of the cells at runtime by changing the datas of the browse object.
- Now all these datas are evaluated with browse object as the parameter.
When these datas are evaluated by the column object, they are evaluated with
browse object and column object as two parameters.
- Method Adjust(): Fixed memory leak by creating hRowPen, withour releasing the existing
pen. viewtopic.php?p=234672#p234672
* Report:
- New DATA nAlignTitle in TRColumn class. This makes it possible to have
alignment for the column title different from column data
Example usage:
COLUMN oCol TITLE "SALARY" DATA FIELD->SALARY FONT 1
oCol:nAlignTitle := RPT_CENTER
Now the title is displayed centered, while data is aligned right.
viewtopic.php?f=6&t=39312
* TArrayData: Method SetFilter( cFilter ) fails when the filter expression
contains a field name more than once. This is due to a bug in the function
FW_ExprnAsBlock() in fwh\source\function\vstrfun1.prg. Now fixed.
viewtopic.php?f=6&t=39322&p=234654#p234654
* function FWCheckExpression( cExpression, [uVal], [@uRet] ) --> lValid
Optional 3rd new param by ref contains the result on evaluation of the expression.
* xbrowser.prg: Pressing Ctrl-E + Ctrl-X enables entering any expression that will
be evaluated and result displayed. In the expression, we can use variables oBrw and
oCol, which are current browse and selected column object.