New FTDN February/Febrero 2017 (FWH 17.02)
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
February 2017
=============
* XBROWSE:
- Method oBrw:Delete() was not evaluating bChange. Now fixed.
- Automatic Recalculation of aggregates improved to cover bSumCondition also.
- When the value of a sorted field is modified, it is not enough to
refresh the row. It is necessary to refresh the entire browse to reposition
the row in the sorted order. In case of inline-edit of sorted column,
xbrowse was automatically deciding whether to refresh row or entire browse.
In all other cases, the programmer has to decide this increasing the
complexity of code. Now RefreshCurrent() method decides whether the value
of a sorted column is changed or not and accordingly decides to refresh
browse or row. So now it is enough to call RefreshCurrent() after editing.
- Now, locking and unlocking actions of browse do not disturb any file or
record locks ( flock() / dbrlock(nrec) ) already placed by the programmer.
Also, now internal locking by xbrowse includes evaluation of bOnChange also.
- Fix: Seekbar box is being painted in the fist column of a Group
when order is set to last column of a Group. Fixed.
viewtopic.php?f=3&t=33589&p=198365#p198365
- New DATA lLockFreeze INIT .f.:
Setting to .T. prevents navigation by arrow keys into the frozen cells
- New DATA lScreenUpdating INIT .t.
If this data is set to .f. during runtime, screen updating of browse is
suspended. When a browse is being displayed any other dialog that has focus
is moved over the browse, the browse keeps getting constantly refreshed.
While that is not a problem in many cases, in case of very slow data access,
browse refresh may be too slow. In such cases setting lScreenUpdating to .f.
when out of focus and setting to .t. when got focus could help.
- Enhanced Progressbar:
Syntax (unchanged ): oCol:SetProgBar( nProgTotal, nWidth, bClrProg )
So far bClrProg is expected to return array of two colors.
Now the array contain any two of
- colors, alpha colors, color gradients, brush handles/objects
or
- two bitmaps. In case of bitmaps, the array elements should be
indexes into the oCol:aBitmaps array.
Eg:
oCol:AddBitmap( { image1, image2 } )
bClrProg := { || { 1, 2 } }
- Method Report() now configures progressbar columns also
* Class Report: Enhancement:
Can now define a column to print progressbar also.
Syntax:
COLUMN HEADER <hdr> DATA <data> PROGRESSBAR MAXVAL <nmaxval> ;
COLORS <clr1>,<clr2>
<clr1>,<clr2> can be either colors, alphacolors, gradients, brushes
or both can be bitmap handles
* FWMARIADB
- oCn:InsertSQL(...). If the length of the fields and values differ,
the sql statement prepared is adjusted to the length of fields,
avoiding mysql server error while executing.
- New: oCn:UpdateSQL( cTable, aFields, aValues, cWhere ) --> cSql
aFields: Single field name, list of fields, array of field names
or array of fieldname and value pairs
aValues: Single value or array of values
cWhere: where condition
* MENUITEMS
- Change prompt in POPUP MENUS. Fixed
* New CLASS TAdoCommand ( adofuncs.prg )
DATAS (all readonly)
oCn (ADODB.Connection Object)
oCmd (ADODB.Command Object)
lFunction
nAffectedRecords
METHODS
New( oCn, cCommandText, nCommandType, aParamters ) --> Self
Execute( [aParams] ) --> funtion return value/affected records/recordset
* New function ADORollupTree( oRs, [@aHead], [nGroups] ) -- oTree
Prepares Tree from a recorset that is a result of GROUP BY..WITH ROLLUP.
Optionally returns an array of Headers to be shown in xbrowse.
oTree:Cargo contains an array of grand aggregates.
* New function ADORollupTreeBrowse( oRs, [bSetup], [aColors], [aFonts], [aPictures] )
Prepares a tree from a Rs with result of GROUP BY .. WITH ROLLUP and
browses the tree.
The above two functions work with any ADO recordset when the RDBMS supports
ROLLUP. These functions also work with FWHMYSQL Rowsets
* TSwitch.prg: New data lReadOnly init .f. added
* DataRow.prg: When the default edit dialog is activated, focus is set
to the first Get even when it is Readonly. Now focus is set to the
first get that is not readonly. If all the controls are readonly focus
is set to the close button.
* Fix: FW_NumToWords() is wrongly additing extra "and" in some cases. fixed/
* FW_IsTouchScreen() improved.
* New: functions GetBmpWidth( bmp ) and GetBmpHeight( bmp ).
Parameter can be either GDI bitmap handle or GDI+ image pointer.
* New: function DrawProgressBar( hDC, aRect, nValue, nTotal, aColors, lBorder )
aColors can be an array of 2 colors, alpha colors, brushes, gradients or
an array of 2 bitmaps (handles or pointers)
* Enhancement: FWH debugger now loads PRGs much faster. Thanks to Gustavo!
=============
* XBROWSE:
- Method oBrw:Delete() was not evaluating bChange. Now fixed.
- Automatic Recalculation of aggregates improved to cover bSumCondition also.
- When the value of a sorted field is modified, it is not enough to
refresh the row. It is necessary to refresh the entire browse to reposition
the row in the sorted order. In case of inline-edit of sorted column,
xbrowse was automatically deciding whether to refresh row or entire browse.
In all other cases, the programmer has to decide this increasing the
complexity of code. Now RefreshCurrent() method decides whether the value
of a sorted column is changed or not and accordingly decides to refresh
browse or row. So now it is enough to call RefreshCurrent() after editing.
- Now, locking and unlocking actions of browse do not disturb any file or
record locks ( flock() / dbrlock(nrec) ) already placed by the programmer.
Also, now internal locking by xbrowse includes evaluation of bOnChange also.
- Fix: Seekbar box is being painted in the fist column of a Group
when order is set to last column of a Group. Fixed.
viewtopic.php?f=3&t=33589&p=198365#p198365
- New DATA lLockFreeze INIT .f.:
Setting to .T. prevents navigation by arrow keys into the frozen cells
- New DATA lScreenUpdating INIT .t.
If this data is set to .f. during runtime, screen updating of browse is
suspended. When a browse is being displayed any other dialog that has focus
is moved over the browse, the browse keeps getting constantly refreshed.
While that is not a problem in many cases, in case of very slow data access,
browse refresh may be too slow. In such cases setting lScreenUpdating to .f.
when out of focus and setting to .t. when got focus could help.
- Enhanced Progressbar:
Syntax (unchanged ): oCol:SetProgBar( nProgTotal, nWidth, bClrProg )
So far bClrProg is expected to return array of two colors.
Now the array contain any two of
- colors, alpha colors, color gradients, brush handles/objects
or
- two bitmaps. In case of bitmaps, the array elements should be
indexes into the oCol:aBitmaps array.
Eg:
oCol:AddBitmap( { image1, image2 } )
bClrProg := { || { 1, 2 } }
- Method Report() now configures progressbar columns also
* Class Report: Enhancement:
Can now define a column to print progressbar also.
Syntax:
COLUMN HEADER <hdr> DATA <data> PROGRESSBAR MAXVAL <nmaxval> ;
COLORS <clr1>,<clr2>
<clr1>,<clr2> can be either colors, alphacolors, gradients, brushes
or both can be bitmap handles
* FWMARIADB
- oCn:InsertSQL(...). If the length of the fields and values differ,
the sql statement prepared is adjusted to the length of fields,
avoiding mysql server error while executing.
- New: oCn:UpdateSQL( cTable, aFields, aValues, cWhere ) --> cSql
aFields: Single field name, list of fields, array of field names
or array of fieldname and value pairs
aValues: Single value or array of values
cWhere: where condition
* MENUITEMS
- Change prompt in POPUP MENUS. Fixed
* New CLASS TAdoCommand ( adofuncs.prg )
DATAS (all readonly)
oCn (ADODB.Connection Object)
oCmd (ADODB.Command Object)
lFunction
nAffectedRecords
METHODS
New( oCn, cCommandText, nCommandType, aParamters ) --> Self
Execute( [aParams] ) --> funtion return value/affected records/recordset
* New function ADORollupTree( oRs, [@aHead], [nGroups] ) -- oTree
Prepares Tree from a recorset that is a result of GROUP BY..WITH ROLLUP.
Optionally returns an array of Headers to be shown in xbrowse.
oTree:Cargo contains an array of grand aggregates.
* New function ADORollupTreeBrowse( oRs, [bSetup], [aColors], [aFonts], [aPictures] )
Prepares a tree from a Rs with result of GROUP BY .. WITH ROLLUP and
browses the tree.
The above two functions work with any ADO recordset when the RDBMS supports
ROLLUP. These functions also work with FWHMYSQL Rowsets
* TSwitch.prg: New data lReadOnly init .f. added
* DataRow.prg: When the default edit dialog is activated, focus is set
to the first Get even when it is Readonly. Now focus is set to the
first get that is not readonly. If all the controls are readonly focus
is set to the close button.
* Fix: FW_NumToWords() is wrongly additing extra "and" in some cases. fixed/
* FW_IsTouchScreen() improved.
* New: functions GetBmpWidth( bmp ) and GetBmpHeight( bmp ).
Parameter can be either GDI bitmap handle or GDI+ image pointer.
* New: function DrawProgressBar( hDC, aRect, nValue, nTotal, aColors, lBorder )
aColors can be an array of 2 colors, alpha colors, brushes, gradients or
an array of 2 bitmaps (handles or pointers)
* Enhancement: FWH debugger now loads PRGs much faster. Thanks to Gustavo!