DECEMBER 2018
=============
* New methods in TWindow, applicable to dialogs also, but not controls,
mdichild windows and child windows.
- METHOD SaveState() --> cState //text string of 88 chars containing
encoded information of the postion ans state of window, for saving and
later using with RestoreState
- METHOD RestoreState( cState ) //Restores window to the previusly saved
state.
Usage:
ACTIVATE WINDOW oWnd ;
ON INIT oWnd:RestoreState( MemoRead( "wndstate.txt" ) ) ;
VALID ( MemoWrit( "wndstate.txt", oWnd:SaveState() ), .t. )
- METHOD Arrow( r1, c1, r2, c2, [nClr], [nPenSize] )
Draws an arrow from point r1,c1 to r2,c2 with arrow head pointing to
r2,c2.
* Multiple Monitors support functions:
fwh\source\function\getsysin.prg
- FW_ActiveMonitors() --> nMonitors
Number of extended monitors currently active.
- FW_VirtualScreen() --> oRect
TRect object representing the area of virtual screen covered by all the
extended monitors. (Note: The object has datas nTop, nLeft, nBottom,
nRight, nWidth, nHeight)
The total width of the rectangle is the sum of horizontal resolutions of
all the monitors and height is the maximum of the vertical resolutions
of all the monitors.
Recommended reading for better understanding
https://docs.microsoft.com/en-us/window ... ual-screen
https://docs.microsoft.com/en-us/window ... y-monitors
- FW_GetMonitor(params) --> oMonitor (TMonitor object)
params:
FW_GetMonitor() --> oPrimaryMonitor
FW_GetMonitor( n ) --> nth Monitor object. Defaults to primary monitor
if there is only one active monitor.
FW_GetMonitor( oWnd/hWnd ) --> oMonitor containing max area of the window
FW_GetMonitor( nRow, nCol ) --> oMonitor containing the coordinates
- TMonitor class datas and methods
DATAS:
lPrimary // Is primary monitor
nTop, nLeft, nBottom, nRight, nWidth, nHeight
CenterPt --> { nRow, nCol }
METHODS:
Row( nMonitorRow ) --> nRow on Virtual Screen
Col( nMonitorCol ) --> nCol on Virtual Screen
Center( oWnd/hWnd ) --> Centers the window inside the monitor
Move( oWnd/hWnd ) --> Sets the window in the monitor with the same
relative coordinates
Example Usage:
ACTIVATE WINDOW oWnd ON INIT FW_GetMonitor( 2 ):Center( oWnd )
ACTIVATE WINDOW oWnd ON INIT FW_GetMonitor( 2 ):Move( oWnd )
If the program is run on a single monitor the display defaults to the
primary monitor
* Ximage: Cropping feature. While saving, the bounding dotted rectangle
was also being saved along with the cropped image. Fixed.
* XBrowse:
- Array of hashes: Now the entire array is scanned and all keys found
in any hash in the array are included in the columns.
- Added new style 2018 in addition to existing 2007,2010,2013 and 2015.
which looks like Excel of Office 360.
oBrw:SetStyle( 2018 )
- Method SetStyle( bClrGrad ) now accepts bClrGrad as parameter. This
allows implementation of custom color scheme. bClrHeader and nRecSelColor
are derived from the bClrGrad.
* BtnBmp:
- Fixed repainting issues when button is resized at runtime
(bug introduced in fwh1804).
viewtopic.php?f=3&t=36510
- Improved appearance of focus rect when btnbmp standard style has
focus.
* Enhancement to FW_ExcelToDBF() and FW_ArrayToDBF()
It is now possible to skip some columns in Excel range or array while
saving to dbf.
Example:
Excel range consists of 6 columns A,B,C,D,E,F and we need to save only
columns B,D,F to fields FLD1,FLD2,FLD3.
FW_ExcelToDBF( oRange, ",FLD1,,FLD2,,FLD3" )
or
FW_ExcelToDBF( oRange, "SKIP,FLD1,SKIP,FLD2,SKIP,FLD3" )
* New functions:
- GetWindowPlacement( hWnd ) --> cSave (binary string of 44 bytes)
- SetWindowPlacement( hWnd, cSave )
TWindow methods SaveState() and RestoreState( cState ) use these
functions.
- GDIP_DrawArrow( hDC, r1, c1, r2, c2, [nClr], [nPenSize] )
Draws arrow from r1,c1 to r2,c2 with arrow head pointing to r2,c2.
- FW_ClrToHTML( nClr ) --> cHtmlClr ( format "#rrggbb" )
Example:
? FW_ClrToHTML( CLR_BLUE ) --> #000080