September 2013
==============
* New: Class TAnimate Method FileVerif(). Thanks to SGS:
viewtopic.php?p=151544#p151544
* New: function FWJPGTOPDF( aJpgFiles, cPdf ). Mainly intended for export of
jpegs produced by other report writers to pdf. Works in portrait mode only.
* Rprevie.prg: Fix: For exporting the report to PDF, if :bSaveAsPDF is assigned by
the programmer, this codeblock us called. Otherwise, the program checks if
MSWord 2007 or later is installed with PDF Plugin. If installed MSWord is
used to save as PDF. In the last resort, internal function FwSaveAsPDF() is
used. Normally when installation of MSWord with PDF Plugin is detedted, saving
though Word is mostly successful. In rare cases, where this fails, a message
was shown and no further efforts are made. Now, in such cases of failure also
internal function FWSaveAsPDF() is used.
When once the program detects absence of working MSWord with PDFPugin, no effor
is made to check for MSWord in subwequent calls.
* database.prg: Backward compatibility issue due to some recent improvements in
method SqlQuery() is fixed.
* Enhancement: Command BUTTONBMP: Now it is possible to use clause BITMAP or
RESOURCE to specify either bitmap file, resource name or a bitmap handle.
* New: function RichEdit( @cText, cTitle, nTop, nLeft, nBottom, nRight ) --> lChanged
is a powerfull FWH function MemoEdit() replacement based on the RichEdit control.
It provides a complete toolbar so you can use it a a small rich text editor from
your own apps. Please review samples\testmemo.prg
* New: Class TLayout by Daniel. Please review samples\layout.prg and layout2.prg.
It allows us to build layouts inside our windows, allow auto adjust control inside
container, we will can forget @ row, col and control size. To see the effect, please
resize the main window.
* Enhancement: XBrowse: Painting of footers and headess when oBrw:lFlatStyle is .t.
is improved.
* Fix: xbrowse: It is reported that in some older versions of xHarbour / SQLRDD,
DBINFO( DBI_READONLY ) is returning NIL instead of logical value, resulting in
runtime errors. This unexpected behavior is taken care of now.
* New: Functions in olefuncs.prg
ExcelLangID() --> nExcelLangID
ExcelLang() --> en,es,fr,pt,de,it
ExcelTranslate( cFunc ) --> Translated function
Dbf2ExcelNumFormat( cPicture ) -> cExcelPic
* Enhancement: XBrowse now uses the excel language functions in olefuncs.prg
* Enhancement: Report class' method toExcel(), using the new functions can now
function with Excel installed in French, Portugese, German and Italian in addition
to Spanish.
* Enhancement: Class TPrinter Method New() has been improved so the selected
printer (default printer) remains the same all the app life. Thanks to Enrico!
viewtopic.php?p=152663#p152663
* New: function FWLoadStrings( cFileName ) loads the strings to be used in your app
for international languages support. Thanks to Silvio!
viewtopic.php?p=152770#p152770
* Enhancement: XBrowser.prg.
New CLAUSE [SHOW] RECID (or) SLNUM
Shows RecNo or KeyNo in the first column in addition to the columns specified, with
total number of records in the footer. Clicking on Header toggles display of RecNo
and KeyNo. Entering a new number in this column changes the record position to the
new record / ordkey.
Example: XBROWSER ...... SHOW RECID
XBROWSER ...... SHOW SLNUM
* New translates in fivewin.ch for range check:
<x> [is] between <a> and <b>
<x> [is] not between <a> and <b>
Usage
if dDate between dStart and dEnd
<action>
endif
if nVar not between 100 and 200
<action>
endif
* New function XEval( bBlock/uVar, param1, ... paramN ) returns
uVar if the first parameter is not a codeblock or
result of evaluation of the codeblock in the first parameter with paramters 2 onwards.
(xbrowse.prg)
* Enhancement: TDataRow class ( datarow.prg )
New: Datas cAlias, nArea, cFile for compatibility with tdatabase class (valid
only when used with RDD.
New: Method SetDefault( cField, uDefaultValue ). Parameter can be an array also
To be used only when appending a record.
New: DATA bValid. Record is saved only when Evaluating bValid, with self as
parameter returns .t.
New: Method lValid(). Used to evaluate bValid
New: Method EditedFlds() --> Array of field information edited (modified).
* Fix: FW_OpenAdoConnection() was failing when dbf/mdb path contains spaces. Fixed
* New: DATA bExcelProgress in TReport class. When oReport:ToExcel( bProgress ) is
called without paramters, bExcelProgress is used by default as bProgress.
* Enahancement: OleFuncs.prg: When the functions WinWordObj(), ExcelObj(), SunCalcObj()
are called for the first time, the status of installation is noted in static variables.
If they applications are not installed, second and subsequent calls return nil without
calling GetActive/CreateObject() functions, saving time.
* Fix: database.prg: Inline edits in xbrowse are not getting saved. Fixed.
* Fix: Xborwse.prg: Fix in SetODbf() method by assigning DATA bSaveData for generic
classes.
* Enhancement: Class TControl Method KillFocus() added support for Class TRBtn controls.
Thanks to Cristobal!
viewtopic.php?p=153365#p153365
* New: samples\profiler.prg shows how to use Harbour or xHarbour profiler to analyze
the functions of your app that consume more times and that are more often called.
* Enhancement: XBrowse: When the value of a cell is codeblock, result of evaluation
of the codeblock is diaplayed. When edited the codeblock is evaluated with the new
value and column object as parameters. Therefore it is now possible to have
setget blocks as contents of cells. This is particulary useful while browing arrays.
We can have codeblocks as some of the cells operating on the entire array and makes
if possible to have excel like calculations in the browse. It is the programmer's
responsibility to avoid circular references and ensure that evaluation of codeblocks
does not result in errors.
Example: aData[ 4, 3 ] := { |x| If( x == nil, aData[ 2, 1 ] * aData[ 3, 2 ], ;
aData[ 2, 1 ] := x / aData[ 3, 2 ] ) }
* New: function FW_ArrSum( aArray, nbCol, nStart, nCount ) --> nSum
nbCol can be column number that is to be totalled. Or nbCol can be a codeblock.
Codeblock is evaluated for every row, with parameters, arrayrow, rownumber
and fullaray. Errors on evaluation are ignored. Non-numeric values are ignored.
* Enhancement: When browsing arrays numeric values are formated by default
according to FWNumFormat() settings.