January to April 2023
======================
* FWMariaConnection:
- Method QueryResult( cSql ) enhanced to
QueryResult( cSql, [aParams] )
* New Function JsonView( cJsonText/File, [cTitle] )
* function FW_CopyToClipBoard( uValue, [nFormat] ) --> lSucess
now supports UTF8 text also.
* Fix: function GetProfString() was causing a GPF in Windows 7 if compiled using Visual C 2022.
viewtopic.php?p=258683#p258683
Many thanks to Giovany for the finding and to Enrico for testing it.
* New: new 'slide to unlock' example using a ButtonBar and a button, samples\slide.prg
* Fix: samples\buildg.bat and buildg64.bat were missing -lws2_32 -liphlpapi. Included and
now working fine.
* New: samples\chatgpt.prg allows you to use chatGPT from FWH apps. You need to get an OpenAI key
and copy inside chatgpt.prg. Many thanks to Carlos Gallego!
* New: samples\phind.prg allows you to use the www.phind.com AI unofficial API from your FWH apps.
Users don't need to register, neither you, neither you need to get a key like OpenAI. Totally free.
Many thanks to Carlos Gallego, Charly, Cristobal, Giorgio, etc. These are great news! Soon we
plan to provide more AI power from FWH in the autoGPT way of work. Edited: phind.com API is
discontinued for now.
* New: samples\autogpt.prg is an extension of great chatgpt.prg example from Carlos Gallego.
This example shows how to keep a context when using OpenAI and also implements a Class TOpenAI
that you can use from your FWH apps.
* New: Class TWindow METHODs RegisterDragDrop() and RevokeDragDrop(). They allow you to drop
images and text from the Web browser and other apps. Please review samples\imgdrop.prg for a
working example.
* New: samples\barchange.prg, developed by Cristobal Navarro, shows how to replace the buttons of
a ButtonBar.
* Enhanced: function FW_AReverse( aArray, [nStart], [nCount] )
--> aReversed.
Using the newly added optional parameters nStart and nCount,
it is possible to restrict the range of reversal. The original
array is not disturbed.
* Enhanced: FW_ASort( aArray, [nStart], [nCount], [bBlock/naCols] )
for multi-column sort.
4th Parameter:
-nil/codeblock: functionality is exactly same as ASort(...)
-nColNo: Sortede on nColNo asc if +ve and desc if -ve.
-aCols: Array of column numbers or codeblocks. Multi-column
sort is performed on the column numbers in the array. Asc if
the number is +ve and desc if -ve.
If any element of the array is codeblock, the comarison is made
{ |x,y| Eval( b,x ) < Eval( b, y ) }
All string comparisons are case insensitive and values of
different datatypes are sorted on the type.
* New: function FW_GetClipboardData( [[@]Format] ) --> uData
Similar to FW_CopyToClipboard(...), this function can be
used to get data from clipboard without opening and closing
clipboard within the application. This single line function
saves much coding.
If nFormat is specified, data of that format is obtained.
If the param is ommited or nil, data of availabe format is
obtained. If @nFormat is passed by ref and nFormat is nil,
the format is returned in this parameter.
* New: FW_ImageToBlob( [npImage], [cType], [nJpgQuality], ;
[lAlpha], [nClrBack], [nWidth], [nHeight] ) ;
--> cBlob
- 1.npImage: Optional. hBitmap or GDI+ image pointer
If nil, defaults to hBitmap from Clipboard, if available.
- 2.cType: Optional. Can be bmp,jpg/jpeg,png,tif/tiff,gif.
Defaults to bmp.
- Other parms are self explantary. Note: nClrBack is not
used in this version.
This function is intended to covert hBitmap/pImage, mostly
obtained from clipboard, for assigning to MEMO/BLOB fields.
* TGET:
- While editing Date and DateTime variables, following keys
have this functionality:
"=" Assigns Current Date
" " Assigns Blank date
"+" Increments the get by one day/month/year/hour,etc
depending on the position of the cursor
"-" Decrements the date as above.
This feature can be disabled or enabled by assigning
classdata TGet():nDateKey := 0 or 2
* XBROWSE:
- Autosort of array browse was sorting on a single column only.
Now it is possible to specify multi-column sort by assigning
an array of column numbers to oCol:cSortOrder.
- SeekNext: In case of Incremental seek normal and wildseek,
it is now possible to go to next row with the same seek value
by pressing F3 key.
Now implemented for arrays, DBF, TDatabase, all ADO databases
and FW MariaDB rowsets only.
- Sorting on Computed columns: It is now possible to sort on
computed columns also for all datasources. For this,
Set oCol:lSortVisible := .t.
Supports incremetal seek, wildseek and seeknext.
Note: Incremental filters are not supported yet.
- function HashTree( hHash ) --> oTree enhanced. Now can
handle nested arrays of hashes also.
- New METHOD ToArray( [aCols] ) --> aData
- oCol:aDataFonts, aClrText, used for multiline text can
now be codeblocks also.
* new function MergeDocs( cDest, aMergeDocs, [lShow] ) --> cDest
cDest: Merged Doc name. Can be docx or pdf
aMergeDocs: Can be doc,docx,rtf,pdf,text,bmp,jpg,png
Known Issues: works in portrait mode only
* New: print commands:
OPEN PRINT_QUEUE [<prevw: PREVIEW>] [[TO] FILE <cFile>]
//
CLOSE PRINT_QUEUE [<prevw: PREVIEW>] [[TO] FILE <cFile>]
Outputs of all PRINT and REPORT commands in between OPEN
and CLOSE commands are treated as a single document and
displayed in a single Preview and saved as a single document.