Page 1 of 1

New FTDN March 2016 (FWH 16.03)

Posted: Wed Mar 30, 2016 8:14 am
by Antonio Linares
March 2016
==========

* New: FWH 64 is fully compatible with Borland BCC 7.0 and 7.1 64 bits

* Fix: ButtonBmp (buttonb.prg ): Backward compatibility issue fixed
http://forums.fivetechsupport.com/viewt ... 63#p187463

* Fix: gdiplus.cpp: HB_FUNC( GDIPLUSCREATECOLOR )
Color clr = Color( hb_parnl( 1 ), hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ) );

* Improvement: gdiplus.cpp: HB_FUNC( GDIPLUSIMAGEPIXTOGRAYCOLOR )
Now Alpha incorporate

* Fix: Resize() method of GdiBmp class was wrongly calculating width,
when paramter width is nil. Fixed.

* New: gdiplus.cpp: HB_FUNC( GDIPLUSPENSETLINEJOIN )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSDRAWTEXT )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSDRAWTEXTFONT )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSFONTCREATEFROMHDC )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSPATHADDELLIPSE )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSTEXTTOBMP )

* New: gdiplus.cpp: HB_FUNC( GDIPLUSBMPFROMTXTCENTER )

* Improvement: gdiplus.cpp: HB_FUNC( GDIPLUSIMAGESAVE )
Fix name of file

* Improvements: Class Graphics
METHOD DrawText
now allowed to pass as a parameter the name of the font or object

* New: Class Graphics
METHOD DrawTextLFont
Use LOGFONT of font object actual

* New: Class Pen
METHOD SetLineJoin

* New: Class Path
DATA lNoHighQuality
METHOD AddString( cText, cFont, nStyle, eMSize, nTop, nLeft, nRight, nBottom )
METHOD FillPath( oGraphics, oBrush, oWnd )
METHOD DrawPath( oGraphics, oPen, oWnd )

* Unicode:
- GDIP_ImageFromFile() now accepts Unicode filename also

* Fix: There was a bug in Class TDde. Now it is ok:

http://forums.fivetechsupport.com/viewt ... 30#p188030

* Fix: DLL FUNCTION ... for FWH 64 bits was not properly supporting the
parameters supplied by reference. Now it is ok:

http://forums.fivetechsupport.com/viewt ... 63#p188063

* New color conversion functions:
- RGBTOHSL( nRGB ) --> { hue, saturation, luminence }
or RGBTOHSL( { r, g, b } )
or RGBTOHSL( R, G, B )
- HSLTORGB( { h, s, l } ) --> { R, G, B, nRGB }

* New: Class TToast implements Windows desktop notifications,
with header, footer, bitmap, settings menu, button close, and possibility of
add controls of notification.
Also, It can be used to create a standard tooltip control with the same
properties as notifications.

http://forums.fivetechsupport.com/viewt ... st#p187571

Please review samples\toastest.prg for a working example.

* XBROWSE:
(a) Fix: Veritcal resizing of row height with mouse at runtime
stopped working from ver.15.12. Fixed
(b) Enhancement: SetCheck() was required to be called only before the
Adjust() method of xbrowse was executed. Now SetCheck() can be called
at anytime, including runtime.
- SetCheck() also centers header.

Note: When XBrowse is created in a Window, Adjust() is called during
execution of CreateFromCode(). In case of dialogs, Adjust() method is
executed during Init of the Dialog.

(c) Enhancement: AutoFit() can be called at anytime now:
AutoFit( [aColsToFit], [lVisibleOrNumRows], [lDataOnly], [nMaxWidth] )
aColsToFit: Optional array of columns to fit.
Defaults to all columns, if called after Adjust() method
Defaults to only those columns to which nWidth is not expressly
assigned (and EDIT_LISTBOX), if called before Adjust() method.
lVisibleOrnumRows: When .T. is specified during runtime, only visible
rows are adjusted. If a number is specifed, only the first specified
of rows are adjusted.
Default is all rows. This may be slow for large disk based datas sources.
lDataOnly: Default .f. If .t. width is adjusted to fit data only and header
and footer widths are not considered.
nMaxWidth: If specified the width of any column is limited to this maximum.

(d) New data lDrawBorder (default .f.)
If set to .t., draws a single line border around the browse. Useful when
not having recordselector, headers, or scrollbars.

* New Class TArrayData:
Can be used with multi-dimentional arrays the same way as TDatabase and
TRecset.
Usage:
oData := TArrayData():New( aArrayData, aStructure )
aStructure is similar to dbf structure.
Method SetArray( aData ) can be used to set / reset array data.

- Fields can be accessed and assigned simlar to TDatabase like
oData:Salary := 2500

- All navigational methods similar to DBF and also RecordSet can be used
(eg. gotop(), gobottom(), movefirst(), movelast(), etc )

- While it is desriable to initialize with multi-dim array conforming to
the data structure provided, single dimentional and ragged arrays are
converted as multidimentional arrays of the required number of columns
initially by the class.

- Datatypes not matching with the types in the aStrcture are converted
suitably while accessing and assignment.

- Expressions like "QUANTITY * PRICE" can be used. Eg:
? oData:FieldGet( "QUANTITY * PRICE" )

- Sorting: Method SetOrder( fieldname, nil, lDescend )
- SetOrder is possible only with single fieldname.
- :SetOrder( 0 ) restores natural order. The same order at the time of
creation of the object
- oData:Sort := "SALARY DESC" also is possbile like a RecordSet.

- Filtering: Method SetFilter( <expression> )
eg: oData:SetFilter( "QUANTITY > 2000 .AND. YEAR(INVDATE) == 2016" )
oData:SetFilter( "" ) clears filter.
oData:Filter := "STATE == 'NY'" also is possible