July 2008
=======
* Enhancement: function GradientFill() now allows to specify horizontal or vertical painting. Please review samples\TestGrd2.prg
* New: Class TDialog TRANSPARENT clause admits the use of bitmaps (not as brushes). Please review samples\TestTrn2.prg
* New: samples\MyDLL.prg and samples\TestMyDL.prg show how to build a Harbour self contained DLL and how to use it.
* New: Class TReg32 Method GetBinary( cSubKey ). It retrieves binary values from the registry.
* Fix: Class TActiveX added missing lines in function OleInvoke().
* Enhancement: Class TActiveX improved used functions OleSetproperty(), OleGetProperty() and OleInvoke().
* Fix: Class TComboBox Method DrawItem(), its working fine now when a popup menu is used as a popup of the combobox.
* Enhancement: Class TSay was not properly setting the default text width when creating the SAY or later on when changing its text. Now it is fine.
* Fix: Class TWBrowse was not providing the column index when lCellStyle is true and a codeblock is used for nClrText and/or nClrPane. Now it is fine.
* Fix: FWPPC function lRmDir() properly implemented. Please review samples\folder.prg example.
* New: Class TControl Method LDblClick(), it detects if a control is in design mode (clause DESIGN) and avoids to leave the mouse captured.
* New: function cValToStr( uVal, cPicture ), similar to FWH cValToChar() but allows the use of a PICTURE mask, including extended pictures masks for dates values.
* New: function WheelScroll( [nLines] ) --> nLines, sets or retrieves the amount of lines to use for the mouse wheel scroll. Actually used from Class TXBrowse.
* Enhancement: Class TSmtp with enhancements from different FiveWin users. This class has been around for some time and finally we include its changes in the original FiveWin Class TSmtp. Thanks to all its contributors. Some minor editing and changes added.
* Enhancement: fwh\makes\BorMake.zip has been updated with new Harbour libraries names. It has been tested here and it is working fine.
* New: function GradientFill( hDC, nTop, nLeft, nBottom, nRight, aGradient ) where aGradient can contain any number of gradients and should be specified the following way:
{ { nPart, nClrStart, nClrEnd }, { nPart, nClrStart, nClrEnd }, ... }
nPart is to be specified as 0.25, 0.5, etc. and should agregate to 1.
This function is used from Class TXBrowse, Class TBar and Class TBtnBmp. Please review samples\TestGrad.prg
* Fix: MsgBar items prompts, using 2007 clause, were not properly centered. Now it is ok.
* Fix: Class TWBrowse Method Resize() was changing the selected cell if DATA lCellStyle is .T.. Now it is ok.
* New: We are actually porting the Class TXBrowse to FWPPC. Still is a work in development, but if you are interested in beta testing it, please contact us.
* XBROWSE:
1. Post Edit navigation:
(a) If get is exited with up or down arrow, cursor is moved to previous or next row as the case may be.
(b) If lFastEdit is true, cursor goes to the next editable cell in the same row. If the edited cell is the last editable cell in the rown, cursor goes to the first editable cell of the next row.
2. Tooltips for headers: New data cToolTip of TXBrwColumn can be assigned with a toolip as character value / array / codeblock. The tooltip will be shown when mouse hovers on the header of the column.
3. Mouse Wheel: Now mouse wheel works only when the mouse is in the browse's data area and number of lines scrolled depends on the window's settings. Thanks to suggestions from Manuel Mercado and James Bott.
3. SetArray( <hash> ) is implemented for xharbour.
4. User speicified date formats can be assigned to oCol:cEditPicture and dates will be shown in the specified format will be used for display in xbrowse and export to excel. The formats are the same that are used for formatting dates in excel. ( eg dd/mm/yyyy, mmmm dd yyyy, etc )
5. Sorting RDD. Repeated click on the header toggles ascending / descending order of the sort even for RDD ( if the RDD supports ), in the same way like arrays and recordsets
6. Sorting on columns is possible for TDatabase ( and similar objects ) set with SetoDbf(...) or with commands, by assigning data name to oCol:cSortOrder. This works if the data object contains method by name SetOrder( <corder> )
7. In earlier versions a column object can be retrieved by oBrw:oCol( <cHeader> ). Now it is possible to retrieve a column object with new syntax oBrw:cHeader. It is also possible to create new columns with this syntax.
Example:
oBrw:SalePrice := { || oBrw:Sales:Value / oBrw:Quantity:Value }
Above stament adds a new column with the header 'SALEPRICE' whose value is the value of column with header 'SALES' divided by the value in the column with header 'QUANTITY'.
oBrw:Sales:nEditType := EDIT_GET
Column with header 'SALES' is set to editmode.
8. New Function XBROWSE( [cAlias/aData/oRs/oDbf], [cTitle], [lAutoSort], [bSetUp] ) for quick browse of any datasource.
Example:
use customer
xbrowse()
or
xbrowse( aArray / oRs / oDbf / cAlias / hHash )
Additional features can be provided by the programmer through bSetUp codeblock, which receives the browse object as parameter.