Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- FiveWin 1.9.2 - January 97 - fivewin 1.6 e http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 FiveWin 1.6 e
=============

* Bug corrected: We were not initializing ::oFont in MdiFrame and
  MdiClient. This bug only appeared when trying to place a Bitmap
  on the oWndClient DATA of a MdiFrame window.

* Enhancement: The constructor method ::New() of the Class TPrinter
  now support creating the object without showing the typicall
  Print dialog Box. So, it is possible to start a print work without
  showing that dialog box. See PRINT.CH for new syntax added.

* Missing: Clause MESSAGE was missing on ComboBox! It has been
  corrected. Thanks Garry!

* TIcon::SetName() was not working properly. Check now TestIco.prg and
  it will work fine!

* Enhancement: PIXEL clause was missing at @ ... LISTBOX ... FIELDS.
  Now it is ok.

* New method ::Enable() and ::Disable() for RadMenu objects. They
  work on every Radio contained in the RadMenu object.

* Bug corrected: ComboBoxes when losing focus where not updating properly
  its ::nAt data.

* New CodeBlock DATA for Dialog Boxes: ::bStart. This CodeBlock if exists
  will be evaluated after the first time the Dialog Box is painted. Here
  you have a great chance to start executing some processes that can not
  be issued from the ON INIT clause, because at that time the Dialog Box
  is not already visible !!! See the source code of MsgMeter.prg to see
  an example of use.

* New user interface Message function: MsgMeter(). This function shows a
  Modal Dialog Box which has a meter and a cancel button. This is the
  perfect funtion for building indexes, searches, etc... You have to
  supply this function a CodeBlock that will be executed as soon as the
  message appears on the screen:

         MsgMeter( bAction, cMessage, cTitle )

  bAction is a CodeBlock which receives the following parameters:

          bAction  ==>  { | oMeter, oText, oDlg, lEnd | ;
                          MyFunction( oMeter, oText, oDlg, @lEnd ) }

  oMeter is the Meter object, so you can change its ::nTotal represented
  value and also you can ::Set() it new values. Don't forget to call
  SysRefresh() when you change its value to give Windows some time to
  stabilize (Clipper runs faster than Windows!!!). oText is the SAY object,
  so you can change its contents asn many times as you want. oDlg is the
  Dialog Box itself, do what you want with it! And lEnd is a variable by
  reference which will change as soon as the user press cancel.

  The source code of MsgMeter() is supplied in  SOURCE FUNCTION MsgMeter.prg
  feel free to study and modify it if you need to.

* Bug corrected: VALID clause in Non-modal Dialog Boxes were being tested
  many times, when returning .f.. Now it is ok.

* Enhancement: New Clause OF <oDevice> for Fonts creation:
  Many of you inform us that the same font on diferent printers returned
  different sizes. Now you can easily avoid this problem:

      PRINT oPrn NAME "MyDoc"

         DEFINE FONT oFont NAME "Arial" SIZE 0, -20 OF oPrn

         ...

  This will automatically create a specific font of -20 points for THAT
  specific printer !!!

* Bug corrected: Bitmaps with automatic scroll were not working when only
  one scrollbar (vertical or horizontal) were shown. Now it is working ok!

* TBrowse::lEditCol() method is ready !!! Now you can edit Browse cells on
  the fly!

  Syntax:  oBrw:lEditCol( nCol, @uVar, cPicture, bValid, nClrFore, nClrBack )

  Parameters:

  nCol            The column of the browse to be edited
  uVar            A variable passed by reference. Remember to use @Var
  cPicture        The picture for the Get
  bValid          the get validation
  nClrFore,       The colors of the Get, by default we use Browse colors
  nClrBack

  Return:         .t. or .f. if the Get was completed or Esc was pressed

  The new value for uVar gets automatically stored (this is why you have
  to use it by reference) in uVar. If the user cancel the operation, uVar
  again will have the same original value before editing.

  Example:

              local cName := "Hello"

              if oBrw:lEditCol( 2, @cName,,;
                 { || MsgInfo( "Hello" ), .t. } )

* Bug corrected: SAYs with fonts produced _blinking_ due to a repaint of its
  container. In TWindow::SetFont we removed the :Refresh() call. Corrected!
  If you want the new font to appear inmeadiately after changing it, then
  :Refresh() it.

* Bug corrected: when pressing the "." or "," in a numeric GET with
  ( i.e.) PICTURE "999.99", the position of the cursor and the visible
  result was not properly updated. Now it is ok!

* Enhancement: New resizing capability automatically available from Browses.
  Now you can click on a browse column border and resize the column just
  draging with the mouse. Really usefull! Try it!

* New! New! New!!! The incredible FiveWin Report Engine is working!!!
  Thanks very much to our friend and excelent programmer Ignacio Ortiz de
  Zu.iga who did a super job!

  The FiveWin Report Engine has a powerfull xBase syntax -all based on
  true Objects- which lets produce very easily reports very, very
  sophisticated. In just two minutes of having a look at its syntax
  you will learn how to use them. In fact... you already know how to
  use them! (the magic of FiveWin and OOPS!)

  See TestRpt(x).prg demos for a complete review! Your FiveWin applications
  will produce incredible reports with a minimum effort by your side!

* bug corrected: We were loosing Windows resource-memory. It was a quite
  hidden bug but now it is 100% ok. We could not solve this before because
  we did not find any way to inspect it. Now it is working perfect!

* Warning, warning, warning !!! We have changed some parameters order in
  the SAY.prg Class. If you are using SAYs objects directly you may have
  troubles! Please check that your parameters (only for those of you who
  uses :New() and :Redefine() directly).

  Now we have very powerfull features in SAY objects:

                CENTERED, RIGHT, BORDER, SHADED, BOX, RAISED

* WHEN clause it is working!!! Thanks very much to Jose Gabriel Escobedo
  for helping us enhancing FiveWin syntax. Gracias Jose.

  Warning: Mouse driven enviroments as Windows do not allow to execute
  code in WHEN clauses. WHEN _only_ controls if a control must be shown
  disabled or enabled. Do not perform any other tasks there !!!

  Two new methods added:

  TWindow():AEvalWhen()    It is automatically called to :Enable() .or.
                           :Disable() controls when the window or
                           dialog is being activated.

  TControl():ForNext()     It evals the WHEN clause of the next or previous
                           control to get focus, and disable or enable it
                           acording to its WHEN logic result.

  One new DATA added in
  TWindow() class:

  TWindow():nLastKey       It keeps the value of the latest keyboard
                           navigation value pressed.

* New DBMS classes and Data dictionaries: Thanks very much to Jose
  Mariano Rodriguez. Some of them are still under development, but
  it is an excelent approach to modern DBMS for those of you who are
  interested in data dictionaries for application development.
  Thanks Jose!

* TRtfFile Class enhancements: Thanks to Manolo from I2 for these new
  RTF supported features. See RtfFile.prg for details. Thanks Manuel!

* Warning: We have detected that Clipper DbCreate() does not close
  (at least in Windows) the handle of the file that creates. This means
  that in some circunstances where you create many new files, you may
  don't have enough availables file handles. The solution to this is
  to call DbClose() or DbCloseAll() which does close the just created
  new DBF handle.



Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson