New FTDN December 2019 (FWH 19.12)
Posted: Sat Dec 21, 2019 5:59 pm
October, November, December 2019
======================
* Fix: TArratData: Bold font internally created in the method ShowTable()
is not being released. Fixed.
* Fix: TGraph: When :lViewVal is true and if ::aSeries[x,5] is nil raises
runtime error. This happens when values of :aSeries are assigned manually
by the programmer, instead of using the prescribed method AddSerie()
Fixed.
* Fix: FWMariaRowSet: Runtime error when using methods CancelBatch() and
IsBatchEdited() introduced in FWH1909 fixed.
* FWMariaRowSet: Now accepts SQL statement "WITH RECURSIVE "
http://forums.fivetechsupport.com/viewt ... VE#p226372
* FWMariaRowSet: New sample fwh\samples\marialok.prg for locking records while
editing.
http://forums.fivetechsupport.com/viewt ... =3&t=37928
* FWMariaRowSet METHOD EditBaseRecord( cFieldList, lNew, bEdit, oBrw, lLock )
If lLock is set to .t. or a codeblock is specified, the record is locked while
reading and on failure to read, the codeblock is evaluated with the rowset as
parameter.
Till FWH1909, read is attempted with clause "LOCK IN SHARE MODE". This approach
was not giving the expected results as other users also are able to read the
record for lock and attempt to write was resulting in deadlock issues.
This is now modified to read with clause "FOR UPDATE". This change is working
as expected.
http://forums.fivetechsupport.com/viewt ... =3&t=37928
* FWMariaRowSet(): Method NewSql() fix.
* Fix: Due to a bug in the function FW_ReadImage() in imgtxtio.prg, painting
of png images by TBtnBmp is of low quality. Fixed.
http://forums.fivetechsupport.com/viewt ... 00#p226800
* XBrowse:
- Fix: In some cases, if :cFooterPicture is specified without specifying
:cEditPicture, the cFooterPicture is ignored. Fixed.
http://forums.fivetechsupport.com/viewt ... 04#p226804
- Improved painting of transparent buttons.
- Fix: EDIT_LISTBOX: Text corresponding to a blank item in aEditListBound is
not displayed. Fixed.
http://forums.fivetechsupport.com/viewt ... =3&t=37965
- New data nLbxAt in the column object. Has meaning only when nEditType is
EDIT_LISTBOX. (Not applicable to EDIT_GET_LISTBOX also).
This data is set to the item number in the aEditListTxt/Bound for each row
and can be used to display/set values in other columns.
See: fwh\samples\xbrlbxat.prg
* Window class: Methods SaveState() and RestoreState() were not working with
MDICHILD windows. Now fixed.
http://forums.fivetechsupport.com/viewt ... =6&t=37962
* Enhancement: TClipBoard class: Now TClipBoard class works even when no window
or dialog is opened in the application.
TClipBoard():New():SetText( "SomeText" ) works even if there is no window or
dialog opened.
* Enhancement: DTPICKER can now be used for DateTime values also
New clause "STYLE <nStyle>"
Optional nStyle can be a combination of any of the styles defined in
dtpicker.ch
#define DTS_UPDOWN 0x0001 // use UPDOWN instead of MONTHCAL
#define DTS_SHOWNONE 0x0002 // allow a NONE selection
#define DTS_SHORTDATEFORMAT 0x0000 // use the short date format DEFAULT
#define DTS_LONGDATEFORMAT 0x0004 // use the long date format
* Fix: Report.prg: In the preview of a report, the button Excel remains
disabled wrongly. This was a bug introduced in FWH1909. Fixed now.
http://forums.fivetechsupport.com/viewt ... =6&t=38053
* Treatment of ADO Date and DateTime fields/values
XBrowse, TDataRow, TRecSet and function FWAdoStruct( oRs )
In many databases like MSAccess, MSSQL, Oracle only DateTime field type is
avaiable for storing both simple dates and date-time values. Whether a
particular field is to be treated as Date or DateTime field mostly depends
on the usage. Accordingly FWH libraries treat fields containing pure Date
values (without any time-part) as Date fields and fields containing DateTime
values are treated as DateTime fields. While this approach works satisfactorily
in most cases, there could be exceptions and the programmer needs to have
the facility to override the default behavior.
Databases like MYSQL,POSTGRE provide separate field types for Date and DateTime
and the above approach is not relevant in these cases.
Now from this version:
In cases of databases MYSQL,POSTGRE field types as reported by ADO are used
irrespective of the values stored.
In case of other databases, the existing default behaviour will continue and
the programmer can override by:
oCol:cDataType := .T. // xbrowse
oRec:FieldType( "fieldname", "T" ) // DataRow and TRecSet
http://forums.fivetechsupport.com/viewt ... =3&t=37792
* TGet:
- A codeblock can be specified in the COLOR clause instead of color constant.
If a codeblock is specified, it is assigned to oGet:bColor.
The codeblock is evaluated on every refresh with the get object as parameter.
The codeblock should return an array of two colors, which will be used as
foreground and background colors.
- Fix: When text is pasted in a Password Get, the entire text is converted
into asterisks. Fixed.
http://forums.fivetechsupport.com/viewt ... =3&t=37880
- Fix: In Unicode applications, disabled password get was displaying the text.
Fixed.
- New: Method ShowPassword()
Method MaskPassword( [nMaskChar] )
DATA nPasswordChar [:= nChar] // Gets/Sets password mask char
- Now a bitmap handle also can be specified in the clause BITMAP.
http://forums.fivetechsupport.com/viewt ... =3&t=38244
* Combobox Enhancement:
Additional clause "OWNERDRAW <uOwnerDraw>" allows specifying a function for
owner draw of combobox items.
http://forums.fivetechsupport.com/viewt ... =3&t=37878
Samples\cbxowner.prg
- The function <uOwnerDraw> is suppied with parameters Combobox object, nIdCtl,
oItemStruct, nPItem. oItemStruct is an object of TDrawItemStruct, with the same
datas corresponding to DRAWITEMSTRUCT.
https://docs.microsoft.com/en-us/window ... itemstruct
oItemStruct DATAs are
CtlType, CtlID, itemID, itemAction, itemState, hwndItem, hDC, aRect, itemData,
nTop, nLeft, nBottom, nRight, nWidth, nHeight.
All the datas are readonly. Usage can be seen in the above sample.
* TBlockChain CLASS:
Compatibility with xHarbour: fixed
* FWPDF class: New datas added to store METDATA information in the pdf.
cAuthor,cCreator,cTitle,cSubject
lTimeStamp (default .T.) stores the creation date time
cCreator can be a character string or a logical .T.. If .t., the
name of the exe without path is stored as "Application" in METADATA.
* function FW_AdoExportToDBF( oRs, cDbf, [lEditStruct] )
When the recordset has AutoIncrement field, that field is being
created as an autoincrement field in DBF also. This resuls in different
numbers in the exported DBF. Now this field is created as a simple
numeric field so that the exported data exactly matches the source data.
* Fix: MDI frame window. In a Unicode application, changing the title of the
main MDI frame window was not working correctly. Fixed.
http://forums.fivetechsupport.com/viewt ... 02#p227902
======================
* Fix: TArratData: Bold font internally created in the method ShowTable()
is not being released. Fixed.
* Fix: TGraph: When :lViewVal is true and if ::aSeries[x,5] is nil raises
runtime error. This happens when values of :aSeries are assigned manually
by the programmer, instead of using the prescribed method AddSerie()
Fixed.
* Fix: FWMariaRowSet: Runtime error when using methods CancelBatch() and
IsBatchEdited() introduced in FWH1909 fixed.
* FWMariaRowSet: Now accepts SQL statement "WITH RECURSIVE "
http://forums.fivetechsupport.com/viewt ... VE#p226372
* FWMariaRowSet: New sample fwh\samples\marialok.prg for locking records while
editing.
http://forums.fivetechsupport.com/viewt ... =3&t=37928
* FWMariaRowSet METHOD EditBaseRecord( cFieldList, lNew, bEdit, oBrw, lLock )
If lLock is set to .t. or a codeblock is specified, the record is locked while
reading and on failure to read, the codeblock is evaluated with the rowset as
parameter.
Till FWH1909, read is attempted with clause "LOCK IN SHARE MODE". This approach
was not giving the expected results as other users also are able to read the
record for lock and attempt to write was resulting in deadlock issues.
This is now modified to read with clause "FOR UPDATE". This change is working
as expected.
http://forums.fivetechsupport.com/viewt ... =3&t=37928
* FWMariaRowSet(): Method NewSql() fix.
* Fix: Due to a bug in the function FW_ReadImage() in imgtxtio.prg, painting
of png images by TBtnBmp is of low quality. Fixed.
http://forums.fivetechsupport.com/viewt ... 00#p226800
* XBrowse:
- Fix: In some cases, if :cFooterPicture is specified without specifying
:cEditPicture, the cFooterPicture is ignored. Fixed.
http://forums.fivetechsupport.com/viewt ... 04#p226804
- Improved painting of transparent buttons.
- Fix: EDIT_LISTBOX: Text corresponding to a blank item in aEditListBound is
not displayed. Fixed.
http://forums.fivetechsupport.com/viewt ... =3&t=37965
- New data nLbxAt in the column object. Has meaning only when nEditType is
EDIT_LISTBOX. (Not applicable to EDIT_GET_LISTBOX also).
This data is set to the item number in the aEditListTxt/Bound for each row
and can be used to display/set values in other columns.
See: fwh\samples\xbrlbxat.prg
* Window class: Methods SaveState() and RestoreState() were not working with
MDICHILD windows. Now fixed.
http://forums.fivetechsupport.com/viewt ... =6&t=37962
* Enhancement: TClipBoard class: Now TClipBoard class works even when no window
or dialog is opened in the application.
TClipBoard():New():SetText( "SomeText" ) works even if there is no window or
dialog opened.
* Enhancement: DTPICKER can now be used for DateTime values also
New clause "STYLE <nStyle>"
Optional nStyle can be a combination of any of the styles defined in
dtpicker.ch
#define DTS_UPDOWN 0x0001 // use UPDOWN instead of MONTHCAL
#define DTS_SHOWNONE 0x0002 // allow a NONE selection
#define DTS_SHORTDATEFORMAT 0x0000 // use the short date format DEFAULT
#define DTS_LONGDATEFORMAT 0x0004 // use the long date format
* Fix: Report.prg: In the preview of a report, the button Excel remains
disabled wrongly. This was a bug introduced in FWH1909. Fixed now.
http://forums.fivetechsupport.com/viewt ... =6&t=38053
* Treatment of ADO Date and DateTime fields/values
XBrowse, TDataRow, TRecSet and function FWAdoStruct( oRs )
In many databases like MSAccess, MSSQL, Oracle only DateTime field type is
avaiable for storing both simple dates and date-time values. Whether a
particular field is to be treated as Date or DateTime field mostly depends
on the usage. Accordingly FWH libraries treat fields containing pure Date
values (without any time-part) as Date fields and fields containing DateTime
values are treated as DateTime fields. While this approach works satisfactorily
in most cases, there could be exceptions and the programmer needs to have
the facility to override the default behavior.
Databases like MYSQL,POSTGRE provide separate field types for Date and DateTime
and the above approach is not relevant in these cases.
Now from this version:
In cases of databases MYSQL,POSTGRE field types as reported by ADO are used
irrespective of the values stored.
In case of other databases, the existing default behaviour will continue and
the programmer can override by:
oCol:cDataType := .T. // xbrowse
oRec:FieldType( "fieldname", "T" ) // DataRow and TRecSet
http://forums.fivetechsupport.com/viewt ... =3&t=37792
* TGet:
- A codeblock can be specified in the COLOR clause instead of color constant.
If a codeblock is specified, it is assigned to oGet:bColor.
The codeblock is evaluated on every refresh with the get object as parameter.
The codeblock should return an array of two colors, which will be used as
foreground and background colors.
- Fix: When text is pasted in a Password Get, the entire text is converted
into asterisks. Fixed.
http://forums.fivetechsupport.com/viewt ... =3&t=37880
- Fix: In Unicode applications, disabled password get was displaying the text.
Fixed.
- New: Method ShowPassword()
Method MaskPassword( [nMaskChar] )
DATA nPasswordChar [:= nChar] // Gets/Sets password mask char
- Now a bitmap handle also can be specified in the clause BITMAP.
http://forums.fivetechsupport.com/viewt ... =3&t=38244
* Combobox Enhancement:
Additional clause "OWNERDRAW <uOwnerDraw>" allows specifying a function for
owner draw of combobox items.
http://forums.fivetechsupport.com/viewt ... =3&t=37878
Samples\cbxowner.prg
- The function <uOwnerDraw> is suppied with parameters Combobox object, nIdCtl,
oItemStruct, nPItem. oItemStruct is an object of TDrawItemStruct, with the same
datas corresponding to DRAWITEMSTRUCT.
https://docs.microsoft.com/en-us/window ... itemstruct
oItemStruct DATAs are
CtlType, CtlID, itemID, itemAction, itemState, hwndItem, hDC, aRect, itemData,
nTop, nLeft, nBottom, nRight, nWidth, nHeight.
All the datas are readonly. Usage can be seen in the above sample.
* TBlockChain CLASS:
Compatibility with xHarbour: fixed
* FWPDF class: New datas added to store METDATA information in the pdf.
cAuthor,cCreator,cTitle,cSubject
lTimeStamp (default .T.) stores the creation date time
cCreator can be a character string or a logical .T.. If .t., the
name of the exe without path is stored as "Application" in METADATA.
* function FW_AdoExportToDBF( oRs, cDbf, [lEditStruct] )
When the recordset has AutoIncrement field, that field is being
created as an autoincrement field in DBF also. This resuls in different
numbers in the exported DBF. Now this field is created as a simple
numeric field so that the exported data exactly matches the source data.
* Fix: MDI frame window. In a Unicode application, changing the title of the
main MDI frame window was not working correctly. Fixed.
http://forums.fivetechsupport.com/viewt ... 02#p227902