February 2021
=============
* Fix: FW_ReadImage() and FW_DrawImage() functions(fwh\source\imgtxtio.prg)
These function are failing when a memo field containing image data is
directly provided as paramter. It was necessary to first assign the field
value to another variable and then call these functions. Fixed now.
Eg:
FW_ReadImage( nil, FIELD->IMAGE ) was failing where as
cImage := FIELD->IMAGE
FW_ReadImage( nil, cImage ) was working.
Same is with FW_DrawImage() also.
Now it is possible to call both the functions directly with the field.
FW_ReadImage( nil, FIELD->IMAGE ) and FW_DrawImage( hDC, FIELD->IMAGE,...)
both work now.
Many other controls that display images like XImage, Bitmap, Buttons,
etc. also had the same issue and that is fixed now.
* Fix: FW_StriCmp(): Results were wrong if one of the values is a memo-field.
fixed now.
* FW_ArrayAsList( aArray, [cDelim = ","], [lTrim = .f.] )
If the new 3rd param is .t., strings are trimmed.
* New function FW_CRC8( cStr ) --> nCRC8 (source\function\fwcrc8.c)
http://forums.fivetechsupport.com/viewt ... 14#p239014
* New function IsRomanNumber( cText ) --> True, if cText is a
valid roman numeral.
* New function FW_ProperCase( cText, [lRomanUpper=.t.] ) --> cProper
Converts text with each word capitalized. Roman numbers are fully
capitalized by default.
? FW_ProperCase( "he is in cLaSS-viii" )
--> "He Is In Class-VIII"
* TGET:
- oGet:oGet:Name is showing the name of the control variable,
instead of the name of variable being edited, in case of gets
created from source code. Fixed.
http://forums.fivetechsupport.com/viewt ... 36#p239036
- New clause in @ r, c GET command:
CASE UPPER or CASE LOWER or CASE PROPER. Forces upper/lower/
proper case to get entry.
Note: Presence of "!" in the picture clause ignores this setting.
- New method SetCase( "UPPER/LOWER/PROPER" ) --> cPrevCase
- Enhancement in SAY/GET command. New subclause WIDTH <nSayWidth>
in clause SAY <cSay>
Eg: @ nRow, nCol SAY cSay PICTURE "@!" WIDTH 100 GET oGet ...
* XImage.prg:
- method Save( lAsViewed, cFile, nQuality ), when lAsViewed is .t., is
saving only the basic image but not any freehand drawins drawn by the
user over the image. Fixed.
Window.prg, imgtxtio.prg and gdipfwh.cpp are changed for this purpose.
http://forums.fivetechsupport.com/viewt ... 32#p239101
- Resource leak in Paste() method fixed.
* TClipboard:
method SetBitmap( ohBitmap ) reports resource leakage. Fixed:
http://forums.fivetechsupport.com/viewt ... d1#p239130
* Enhancement: function FW_ExcelToDbf( oRange, cFieldList, lHasHeaders, bProgress )
Now cFieldList can also be a two-dimensional array:
First element of each item contains the field name and
the second element contains the corresponding header in the excel range or
number of the excel column or alpha-column number like "A", "C", "AB", etc.
http://forums.fivetechsupport.com/viewt ... 70#p239170
* Report.prg:
- Fix: Export to Excel encounters runtime error where the report
has groups and also the first column has totals. Fixed.
* XBrowse:
- Method ReArrangeCols() now includes Refresh() also and returns Self
instead of nil.
- Many commonly used methods now return Self instead of nil, making
it easy to call multiple methods in a single line of code.
- New Method SetMultiSelectCol( [uCol], [lFooter] )
If called without params or uCol as nil, a new column is inserted
as the first column and set as multi-select-column. If uCol is
specified that column is set as multi-select column.
[lFooter] defaults to oBrw:lFooter and set to display total selected
columns.
This column displays checkboxes indicating the selected status of the row.
Header displays a checkbox indicating if all rows are selected or not.
Double click, Ctrl-Click or space key in this column toggles selection.
If oBrw:lDblClick is nil double click on any column toggles selection if that
column's bLDclickdata is also nil.
If FastEdit is .f., pressing space key in any column toggles selection.
Shift-click selects all rows from the last selection till the current row.
Click on header toggles selection of all rows.
- When oBrw:aSelected has only one record, all rows are sent to report/excel. Fixed.
* TGRAPH:
- New method Define() supported by new command DEFINE GRAPH to create
graph object not as a control on a dialog/window. This is basically intended
to print one or more graphs without creating a dialog/window as well as to
generate and save graphs as images.
#xcommand DEFINE GRAPH <oGraph> [ SIZE <nWidth>, <nHeight> ] ;
[ TITLE <cTitle> ] ;
[ <pixel: PIXEL > ] ;
[ <l3d: 3D> ] ;
[ <lxGrid: XGRID> ] ;
[ <lyGrid: YGRID> ] ;
[ <lxVal: XVALUES> ] ;
[ <lyVal: YVALUES> ] ;
[ <lLegends: LEGENDS> ] ;
[ TYPE <nType> ] ;
[ FONT <oFont> ] ;
=> ;
<oGraph> := TGraph():Define( <nWidth>, ;
<nHeight>, <cTitle>, <.l3d.>, <.lxGrid.>, ;
<.lyGrid.>, <.lxVal.>, <.lyVal.>, <.lLegends.>, <nType>, <oFont> )
This command creates a tgraph object without displaying on any dialog/
window as control.
This object can be used to generate and save as image using
oGraph:SaveAsImage( cFile ), where cFile can be bmp, png, jpg, tif, etc.
This object can also be used to print or generate pdf using the new print command
@ nRow, nCol PRINT TO oPrn GRAPH oGraph SIZE nWidth,nHeight INCHES/CM/MM
- New Access Method aTable
- see fwh\samples\graphprn.prg
* New bitmap function HDCBITMAP( hDC, nTop, nLeft, nBottom, nRight ) --> hBmp
Can extract any part of HDC as bitmap.
* FWMARIALIB:
* FWMariaConnection and FWMariaRowSet (both)
New Data aSql --> Array of last 10 sql statements executed
New Data cLastSQL -> Last sql statement executed
New Data cSaveSQL (RowSet object only) Last sql saving any data
* PRINTER:
Can now save preview to jpg / png files also same way like pdf/emf.
eg:
PRINT oPrn [PREVIEW] FILE "name.jpg/png"
If preview has more pages, first page is saved with the speicified name
and other pages are saved with <name><pagenum>.jpg/png.