May 2018
========
* GET:
- New style CLAUSE BOTTOMBORDER: Instead of enclosing the Get in a rectangle,
painted transparently with an underline only.
* Window.prg:
- New ACCESS DATA: HasFocus --> .t. if the window has focus.
- Enhanced method Line( nTop, nLeft, nBottom, nRight, nColor, nPenSize )
Additional optional parameters nColor and nPenSize
- Enhanced method Box( nTop, nLeft, nBottom, nRight, nColorOrPen )
Additional optional parameter nColorOrPen can be nColor, hPen or oPen
* XBROWSE:
- Enhancement: When several columns are set as rows with SetColsAsRows(), inline
edit is invoked through TDataRow of such columns, other than ReadOnly columns.
The edit dialog uses font of the column and is anchored to the active cell.
- Enhancement: Runtime errors might occur when datasource is closed, while
the browse is still active. This normally happens when dialogs are closed
with valid clause closing datasource. This causes lot of annoyance and
incovenience to the users of the software by terminating the application.
In such cases runtime errors are prevented.
Navigation and edits are disabled but the browse continues to be displayed
as seen before closing the datasource.
- TXBrwColumn: New method AnchorToCell( oDlg/oControl)
The dialog / control is aligned to bottom of the active cell.
- Fix: lFitGridHeight is not behaving correctly when lFooter is .t.
Fixed.
- New data nClrBorder: When lDrawBorder is set to .t., border is drawn
using nClrBoder if specified. Default is coldivider color.
- New DATA aFilter: If assigned with an array of record numbers, the browse
displays only those record numbers in that order. Setting the data to nil
reverts to display of all records. When this filter is on, seek, setorder
do not work. Methods toExcel, Report etc are not compatible.
Eg:
oBrw:aFilter := { 10, 30, 230 }
oBrw:Refresh()
// view only records 10,30,230
oBrw:aFilter := nil
oBrw:Refresh()
// View all records
- Enhancement: method SetTree( [<nLevels>] )
The normal usage of oBrw:SetTree( oTree, ... ) continues.
If oBrw:SetTree( [<nLevels>] ) is called after a normal browse of sorted
data is setup from any datasource, oTree is automatically built from the
existing data and switched to TreeView. Original view can be toggled by
using the usual Set...() methods.
fwh\samples\xbrtree.prg
viewtopic.php?f=3&t=35827
- New alternative syntax:
While creating xbrowse, columns can also be created using a texutal
descriptive syntax:
@ <r>,<c> XBROWSE oBrw <clauses> ;
COLUMNS "TRIM(FIRST)+', '+TRIM(LAST) AS FullName PICTURE @! WIDTH 150 ALIGN CENTER SORT FIRST", ;
"STREET+CHR(13)+CHR(10)+CITY AS Address WIDTH 100", ;
....
- New method ResetData( [<uSource>], [<aCols> ] ) --> lSuccess
Enables switching of datasource and/or columns during runtime.
At lease one of the parameters need to be provided.
1) uSource: Can be cAlias, oTDataDbf, oRecordSet, oQry, oRowSet, oRecSet
If nil, present source continues to be used
2) aCols: Array of column names, expresssions.
* BTNBMP
- Method ShowPopUp() encounters runtime error when btnbmp is created on
a modal dialog. Fixed.
- Method ShowPopup( oPop/bPop ) now accepts oPopmenu or codeblock which
creates a popmenu as a parameter. When specified, the popup specified as
paramter is displayed irrespective of the value of oBtn:oPopup
* TIMEPICKER: bChange is working now.
viewtopic.php?f=3&t=35796
* SCROLLPANEL (scrlpanl.prg) enhancements:
- :bPainted can be used
- :lTransparent or :nOpacity := <n> both work
- Can use gradient and resizable image brushes
* Fix: Class TEdit now properly supports the vertical scrollbar:
viewtopic.php?p=213460#p213460
* function SummaryDataAsTree( bSkip, bEof, aGroups, bCargo )
in trees.prg enhanced. Can be used to automatically create a tree
object from any sorted datasource. Mainly used as support function
in XBrowse method SetTree(). Refer to this method as an example of
usage of the function.
* Drag and Drop Simplification: Till ver.18.04, bDropInfo was evaluated
with 4 params:
Eval( ::bDropOver, uDropInfo, nRow, nCol, nFlags )
nRow and nCol are relative to the window from which the drag began.
The destination windows needs to convert nRow,nCol to coordinates
relative to itself, without even knowing the source window.
Now, bDropOver is evaluated with two more additional paramters.
Eval( ::bDropOver, uDropInfo, nRow, nCol, nFlags, aPoint, oSourceWnd )
aPoint is { nRow, nCol } relative to the destination window.
oSourceWnd is the window where the drag began.
* EASY REPORT RUNTIME:
FWH now includes easyreport runtime. It is not necessary to link with
vrd.lib or vrd.prg,vrditem.prg,etc to run easyreports.
Some programmers developed their own forks and are using their own
versions. FWH implementation does not conflict with such individual
adaptations. They can still continue to link their own versions and
continue without any conflicts.
To use FWH runtime, #include "vrd.ch" should be replaced with
#include "easyrep.ch" in the application programs.
* Fix: functions GetExcelRange() and GetExcelBook() in olefuncs.prg.
These functions were unable to open files on network. Fixed