August 2016 (FWH 16.08)
=======================
* FWMYSQL: Many enhancements to be detailed in the forums
* New functions (source\function\valtostr.prg)
- FW_DT2STR( dDate/tDateTime )--> strDate/strDateTime
in format "YYYY-MM-DD" / "YYYY-MM-DD HH:MM:SS"
Useful for conversion to use with SQL
- FW_STR2DT( cDateStr/cDateTimeStr ) --> dDate / tDateTime
depending on the length and contents of the string.
Useful for conversion of output from some SQL
- UTC_TIMESTAMP( [tDateTime] ) --> tUtcDateTime
- Harbour provides functions HB_UTCOFFSET and HB_TStoUTC
FWH provided these function for xHarbour applications
* New: samples\dshow.prg shows how to take photos using
your webcam. This example only works with MS Visual
Studio Community 2015. To build it simply do:
FWH\samples\buildh32.bat dshow
* New: Xbrowse: When browsing Arrays, deleted records, if
any are collected in DATA oBrw:adeleted().
* Fix: XBrowse: RDDIncremental Filter results in runtime
error when dbf is in natural order. Fixed. In such cases
incremental field defaults to all fields (except memo fields)
* Enhancement: XBrowse: aCols parameter of MakeTotals() method
can now be specified as column names or numbers also.
* XBrowse(..) function now returns oBrw object.
XBROWSER command also is changed as #xtranslate.
oBrw := XBROWSER <clauses>
In case of MODAL usage, oBrw object is returned after
the dialog is closed. In case of NOMODAL usage the
object is returned soon after display of the browse.
* function FW_DbfToArray() in database.prg enhanced
The field list can contain "*" which means all fields.
Example:
USE STATES
cList := "*,RECNO()"
aData := FW_DbfToArray( @cList )
? cList // --> "CODE,NAME,RECNO()"
* New function DBFAPPEND() in database.prg
Automatically recycles deleted records in case of
DBFCDX RDD and if index on "DELETED()" is availble
by name "DELETED"
* Enhanced: function FW_FieldsPut( aFields, aValues, ;
nLockWaitSecs, lAppend/nRecNo, bTrigger ) in database.prg
4th param: If logical .T. indicates Append and .F.
indicates replace current record.
This param can now be a number also. If numeric, changes
are made to the record number specified and also Recalled
if the record is already deleted and if the record does
not exist ( 0 or > lastrec() ) then a new record is appeneded.
If the list of fields contains the expression "RECNO()", this
value is used in the same way as above.
* New FW_SaveArrayToDBF( acFields, aData )
This function works complimentary to FW_DbfToArray() if
one of the fields names in the list is RECNO().
Example:
cList := "*,RECNO()"
aData := FW_DbfToArray( @cList )
oBrw := XBROWSER aData FASTEDIT SETUP ( ;
oBrw:cHeaders := FW_ListAsArray( cList ), ;
ATail( oBrw:aCols ):lReadOnly := .t. )
Edit the data and then
FW_SaveArrayToDBF( cList, aData )
* Fix: TDataRow class (datarow.prg)
Method FieldName( nLastFieldNumber ) returns an empty string.
Fixed.
* TDataRow: When bEdit is evaluated, the workarea of the record
is selected for the duration of the edit.
* Enhancement: function PopupBrowse() now supports an optional
fourth parameter to specify the column value of the browse
that we want to be returned. By default it is 1. Please review
samples\yunus.prg
* Enhancement: function PopupBrowse() now works on windows too,
besides dialogs and xbrowses.
* New: samples\yunus.prg is a complete invoicing app that you
can use as a template for your apps. It shows how to use the
function PopupBrowse() from GETs in dialogs and from XBrowses
* Fix: Method Redefine Class TRichEdit5
* Fix: dtpicker.ch was supplying wrong parameters to the ON CHANGE
clause. Now it is ok. Thanks to Biel!