
                New features and bug corrections for FiveWin
                ============================================

FiveWin 1.4
===========

 * New: PullDown Menu from resources !!! And also, MenuItems bitmaps
   from resources.


 * Bug: cCtrl2Chr() admits now any length (always less than 64Ks). This
   was detected when doing MemoEdits from source code with char variables
   bigger than 200 characters:

               @ nRow, nCol GET cText DIALOG oDlg MULTILINE


 * Bug: We detect when compiling with /b and avoid errors. We are working on
   the debugger for Windows.


 * WndCenter() now accepts two parameteres:

        1. The hWnd of the Window to be centered.
        2. The hWnd of the Parent Window. GetDesktopWindow By default.

   A new method added to TWindow:  Center( oWnd )


 * Clause ON CHANGE / ON CLICK added to RadioButtons!


 * SET RESOURCES now admits as many DLLs as we need. They automatically
   get freed when application ends. We may select an active RESOURCES DLL
   doing SET RESOURCES TO ...  -previously opened DLL-.


 * New clause for Scrollbars: ON THUMBPOS YourAction( nPos )

     This event is generated when the user moves the Scrollbar Thumb
     and places it into a new position.

     We automatically supply nPos parameter wich is the ScrollBar
     Bar in Range new nPosition. It is responsability of you to let
     the scrollbar updates its thumb:

     REDEFINE SCROLLBAR oScrollBar ...
       ...

     ON THUMBPOS ( DbSkip( nPos - RecNo() ),;     // To move through DBF
                   oScrollBar:SetPos( nPos ) )    // We let the ScrollBar
                                                  // updates its pos

     If you don't clearly understand what means nPos, try this:

     ON THUMBPOS MsgInfo( Str( nPos ) )


 * New and incredible powerfull print methods!!! :

   :Print( oPrint, nRow, nCol, nScale )     // Print any Window on printer oPrn

   :HardCopy( nScale )    // Makes a hardcopy of any Window, Dialog, Control,
                          // Bitmap, etc... to printer

   They admit a nScale factor! to set the desire size we want!

   -try FwBorl.prg and press Print button on Clients Dialog Box! Really hot!


 * New Clause ON CLICK / ON CHANGE for Browses.


 * New Clauses ON [ LEFT ] CLICK and ON RIGHT CLICK for Bitmaps!

   Three parameters are automatically supplied: nRow, nCol, nKeyFlags when
   executing the action you provide for those events.

           ON CLICK MsgInfo( Str( nRow ) + ";" + Str( nCol ) + ";" + ;
                             Str( nKeyFlags ) )



FiveWin 1.5
===========

 * Reset() method added to TComboBox Class -it was missing!- It resets
   the contents of a ComboBox and also empties the associated array.

 * TRadMenu:Refresh() method added. Also, TRadio:lIsChecked() method added.

 * Automatic defaults values for TRadMenu -to 1- and for TCheckBox -to .f.-.
   This avoid crashing the system when the user forgets to properly
   initialize variables.

 * New PIXEL clause now added to ScrollBars. We are testing this Clause to
   be soon implemented to all controls.

 * New scrolling methods for Bitmaps!!! Really nice! You may Scroll a bitmap
   in the four directions inside its own area.

   ::ScrollUp(), ::ScrollDown(), ::ScrollLeft(), ::ScrollRight()

   You may review now bitmaps bigger than their visible area !!!

 * All the above -Scrolling Bitmaps- it is automatically! executed when
   doing a @ ..., ... BITMAP ... SCROLL...      It is extremely easy!

 * Bug fixed: Missing correct initialization when doing @ ...,... SCROLLBAR.
   Now everything goes fine!

 * New INLINE clause added in OBJECTS.CH. INLINE Clause gets converted into
   a BLOCK clause but it is much more easier to manage. We are preparing
   FiveWin for the new OBJECTS 3.0 engine will be included in next version
   of FiveWin. We will replace BLOCK clauses into INLINE -better xBase!-

 * More capabilities: Max number of INSTVARS -DATA- now up to 100!
   Thanks Miguel! If someone needs more, please say. -Those enhancements
   have been done inside OBJECTS engine modules- If you are using OBJECTS
   also for your Clipper DOS Classes, you just need DATA.OBJ from inside
   FiveWin. Take it using LIB.EXE FiveWin * Data,,

*  ADJUST clause for Bitmaps! Now, it is possible to make a Bitmap adjust
   its picture to its own visible area!

   @ nRow, nCol BITMAP oBmp ... ADJUST ...

   or just doing:

   oBmp:lStretch = .t.
   oBmp:Refresh()

   or

   oBmp:lStretch = .f.
   oBmp:Refresh()

   to restore it to its normal state!

* Bug correction: in Browses ON THUMBPOS did not activate ON CHANGE clause.
  Now it works correctly!


FIVEWIN 1.5 b
=============

* DOUBLES numbers params added to CallDll() and DLL.ch.
  Thanks Miguel!

* New BUTTONSIZE clause for BUTTONBARs: Now it is possible to define the
  desired width and height of the Buttons of the ButtonBar when creating
  the ButtonBar.

          DEFINE BUTTONBAR oBar BUTTONSIZE 80, 40 OF oWnd

  Also, they have been enhanced to support 256 colors! and the ability to
  adjust automatically its size to the whole area of the button:

          DEFINE BUTTON OF oBar ...  ADJUST

* We are already using intensively the OOPS clause INLINE. It is very
  fast and very nice xBase!

* Bug fixed: Method TTimer:DeActivate(). Now it is ok. Thanks Javier Blasco!

* New Pixel param added to TWindow:Say() method:

       oWnd:Say( nRow, nCol, cText, nClrText, nClrBack, oFont, lPixel )

  If lPixel is .t. FiveWin uses pixels instead of characters.



FiveWin 1.6
===========

* New RecAdd() method for TWBrowse. Adds a new record to the Alias where
  the TWBrowse was created. RecAdd() evals a codeblock placed at the
  instvar :bAdd. Change that codeblock to suit your particular needs
  for adding records from inside the Browse.

* New UpStable() method for TWBrowse. This avoid the typicall Clipper
  Browse bug when seeking to an above item in the Browse. Call :UpStable()
  to properly stabilize browses in those situations.

* Bug fixed: TWindow:Move() method was not updating the Window coors!
  Now it is working fine.

* Bug fixed: ListBox created from source code were not properly initializing
  its items. Now it is ok. A new Method added: TListBox:Default() which
  initializes items from source code and form resources also.

* We are removing the 3D effects we implemented in previous versions of
  FiveWin. Much better to use CTL3D.DLL so we will move easily to next
  Windows 4 - named Chicago.

* New INDEXED FILTERS for Browses !!! Now you can use Indexed Filters,
  wich are extremely fast- with Browses. This means, you may especify
  a selection to be only shown on the Browse:

         @ ..., ... LISTBOX ... BROWSE ...
           ...
           SELECT <cField> FOR <uVal1> [ TO <uVal> ]


  cField is the name of the Index Key field. FiveWin will do a SEEK based
  on cField on the current INDEX. The SEEKed expression is <uVal1> and
  the Browse will show from that value up to the next change of the Index Key
  or <uVal2> if especified.

  Before ACTIVATING the Dialog where the Browse control is Shown, you MUST
  SEEK the <uVal1> expression to properly place the RecNo of the DataBase.

  See FwBrow.prg for a complete demo of the new powerfull Clause!!!

  Also a new method :SetFilter() has been implemented in Browses, letting
  you change the indexed filter on the fly!!! Extremely powerfull!

* Bug fixed: INI file is working fine now! Sorry, we forgot about it.
  See the new IDE.prg for a complete example about how to manage them.
  Extremely easy!

* Fonts for Browses! Now you may specify any font to be used by the Browse.
  Uhhhh! Really elegant!

* VALID for Windows: We are implementing VALIDations for :End() ing Windows.
  MDI Child already support them. Very, very usefull when you have to close
  an area before ending the Window.

* We are almost ready for Trees! in FiveWin! Like the ones you may see at
  Chicago or at OS2 ! Now you can review the information like a 'tree':
  opening and closing the tree extensions. Trees are implemented on Clipper
  Linked Lists (yes, like C ones!). We are going to inherit from TWBrowse.

* 24/04/94: Objects 3.0 has been added to FiveWin. Now FiveWin is much faster
  , less stack consuming and has a _lot_ of new features. We will cover in
  the documentation all the new aspects of Objects 3.0 engine!

* New Clause 3D for ButtonBars. Now you can have the same look as Borland's
  ButtonBars. Try it with BUTTONSIZE clause also, to make them larger!

* CursorHand() now let show the nice WinHelp Hand Cursor! It is not necessary
  to load any DLL as we create the cursor inside FiveWin.lib !!!

* Also try CursorCatch()

* SetDate( nDay, nMonth, nYear ) new function to change System Date from
  Windows.

  Example: SetDate( 25, 11, 1982 )  --> returns .t. if success

* Bug fixed in xPad...() functions. Now we use as default Chr(32) instead of 32.

* Bug fixed in Popup Menus: They worked fine but they did not process
  actions. Thanks Miguel!

* cGetFile() have been enhanced! Now you may use all these ways:

              cGetFile( "*.dbf", "Select a DataBase" )

              or

              cGetFile( "Clipper DataBase (*.dbf) | *.dbf |" + ;
                        "Paradox DataBase (*.db) | *.db |" + ;
                        "ODBC DataBase (*.odb) | *.odb", "Select a DataBase" )

In this last example you may specify a third parameter to indicate in which
kind of file you want to start:

              cGetFile( "Clipper DataBase (*.dbf) | *.dbf |" + ;
                        "Paradox DataBase (*.db) | *.db |" + ;
                        "ODBC DataBase (*.odb) | *.odb",;
                        "Select a DataBase", 2 )      // Starts with Paradox

* Colors standarization: We are using for GETs now the standard colors
at Windows. You may select any color -from @ or from REDEFINE- on GETs
-normal GETs and multiline GETs-. Thanks to Jon Kilburn!

* We have implemented COLOR clause in all Windows and almost all controls.
 Also, now it is possible to use COLOR <cXBASEColor>, the standard color
 strings format:

     ... COLOR "W+/B"

 See Color Management at the documentation NG file.

* Warning, warning, warning:
  We have been checking the new Borland's C++ 4.0 BWCC.DLL and
  be aware that we have found some problems with colors in controls.
  It seems the new BWCC.DLL does not work properly, or at least in
  the same manner as in the previous version. We needed one full day
  work to find this bug!!!  Be aware of the BWCC.DLL you use !!!

* ChooseColor() has been changed. Now it returns the nRGBColor we provide
it in case the user selects cancel.

* Bug fixed: ::BeginPaint() was not initializing ::nPaintCount. Now it is
  Ok!

* VALID clause added to Windows. Try TestEnd.prg. Now we can decide if
  allow to :End() a Window.

* VALID clause working also in MDI Windows! The main MDI Frame Window will
  request its MDI Childs to VALID before ending :End() them.

* We are controlling Palettes!!! When a bitmap gets focus also set its
  palette. All is done automatically!

* :SelFont() method has been enhanced. Now we automatically detect previous
  font used by the Object, and also we select the color the user chooses.

* Focus management changed: Now we have :SetFocus(), :GotFocus() and
  :LostFocus() methods.

  To give the focus to a control just do:  oCtrl:SetFocus()

* Automatic Cursors management for all Windows and controls. Now you can
  assign a nice mouse cursor to be automatically selected when the mouse
  is over your control or window.

  See TestCurs.prg

* Bug corrected: We were duplicating ComboBox items when initializing.
  This was already solved in ListBox Class but it was missing in ComboBox.
  Sorry!

* ODBC is working: Yes! See TestODBC.prg for a full working demo. In previous
versions we had the bug ODBC only manages LONG handles! God! Now it is
going super! We have been testing it with the xBase ODBC driver provided
with Borland's Visual Solutions Pack. Please, if you develop some ODBC
examples send some to us. Thanks!

* Communications are working! See TestComm.prg for a full working version.
We would like to add ZModem support to FiveWin. If you please know about
some freeware zmodem code please let us know! Thanks!

* New Methods: :Hide() and Show() . They have been implemented at TWindow
base Class, so all Objects which classes inherits from TWindow may use
them! Hide() hides an Object and Show() shows the Object <g>.

* New methods: :Save() for TGet and TMultiGet Class. They updates the
Clipper character related variable with the screen control text.
