home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 16
/
CD_ASCQ_16_0994.iso
/
news
/
4611
/
fw16d.ins
/
WHATSNEW.16
< prev
Wrap
Text File
|
1994-06-12
|
24KB
|
608 lines
New features and bug corrections for FiveWin
============================================
FiveWin 1.6 d
=============
* Bug corrected: numeric GET correctly updates now when loosing focus.
* Bug corrected: moving left or right in numeric gets now properly
updates cursor position.
* Bug corrected: We were not properly controlling Bad Dates on a date
GET. Now it is working ok! See TestDat2.prg sample.
* Enhancement: Now we you finish typing in a GET -i.e.: when you finish
typing a date- the focus automatically jumps to the next control.
Like in Clipper MsDos! See TestDat2.prg sample.
* Enhancement: Now it is possible to set the message ::cMsg of any control
so when the mouse moves over the control the message bar of the container
window of the control will show on its message bar (if defined) the
control message. This is very usefull to let the user identify the
functionality of all the differents elements of the screen just moving
the mouse over them. See IDE.exe for a good sample.
The message of the control also gets automatically selected when the
control gets the focus. So the message stored in the data ::cMsg of
a control will be shown when the mouse moves over it and also when the
control gets focused.
FiveWin 1.6 c
=============
* Bug corrected: When pressing the up or down arrows on the ScrollBar of
a ListBox a Clipper error was generated. Now it is Ok! Thanks Garry &
thanks Manuel Pino! See TestLbx.prg for a sample.
* TestPop.prg sample has been corrected, now it is working properly.
nRow, nCol coordinates were mixed, Thanks John.
* Popup menus may be created now also from resources. This is a feature
Windows does not offer, but FiveWin yes! Now you can easily store
Popup Menus in resources. See TestPop2.prg for a sample.
* Enhanced behavior: Ctrl-F4 and Ctrl-F6 keystrokes are properly working
now on MdiChilds Windows !!!
* Today we got an incredible hidden bug! When were adjust the ButtonBar
we were changing its zorder !!! My God! Now it is over and remember
it for the future: always use SWP_NOZORDER when calling SetWindowPos(),
you will sleep much better! <g>
* New MESSAGE clause added to all controls! Now you may specify message
information for every GET, CHECKBOX, LISTBOX, etc... Remember that for
using this capability you have you have to specify which window is the
owner of the Dialog Box:
// OF oWnd let us show the messages at oWnd
DEFINE DIALOG oDlg RESOURCE "Clients" OF oWnd
...
REDEFINE GET ... ... MESSAGE "Whatever..."
* TextMetrics in Dialog Boxes has been corrected! Thanks Derk and Miguel!
Now, the dimensions of a Dialog Box and Windows dont change if you change
the screen mode.
* New clause CENTERED added to SET MESSAGE OF oWnd TO ...
SET MESSAGE OF oWnd TO "Whatever..." CENTERED
* Hot, hot, hot!!! We have a new DataBase Class that lets you manage
DataBase as Objects. You may access the Fields as DATA of the DataBase
Object:
USE MyDbf
DATABASE oDbf // Automatically builted from the Alias
// We automatically inherit a new Class
// from TDataBase and we automatically
// instanciate an Object!
@ nRow, nCol GET oDbf:Name OF oWnd
We access the fields as DATA ! So there is no need to declare an keep
local variables! The information of the DataBase is automatically
managed through a buffer ! So this is the perfect way to access DataBases
in NetWorks! Try them ! See DBF01.prg. FiveWin will follow this system
more and more in the future.
* New method :Update() added in Class TWindow. :Update() checks which
of its controls need to be :Refresh()ed. This is extremelly usefull
to avoid declaring controls Object references in Dialog Boxes:
We usually did:
local oName
REDEFINE GET oName VAR cName ID ... OF ...
Now we can simply do:
REDEFINE GET cName ID ... OF ... UPDATE
Later, when we want to repaint these controls, we just have to
do:
oDlg:Update()
and only the UPDATE controls will be :Refresh()ed.
Resuming: :Update() method is a selective :Refresh() that only works
on some controls (those which have been declared with UPDATE clause).
It is a very simple system ! That let us reduce a lot of code.
Try this powerfull feature with the new DataBase Class and you will
avoid a lot of writting code in your programs!!! Review the sample
DBF01.prg and you will see how easy it is !!!
We will follow this techniques more and more in the future!
* New method :Set3DLook() added to Controls. Now you can make 3D look
any control no matter if they are placed on a Dialog Box (in that
case it gets 3D automatically if you did SET 3DLOOK ON).
* Bug corrected: We were not default initializing control's :nId before
calling -internally- ::DefControl(). Now it is ok! This only affected
people who create Dialog Boxes from source code -You all should use
Borland's Resource Workshop! and resources <g>-
* Enhancement: Now it is possible to :End() a Window from a floating
PopupMenu! Thanks Miguel Oliveira. It was quite sofisticated but...
we did it! See TestPop2.prg for a sample.
* REDEFINE SAY clause has been enhanced to use both VAR | PROMPT, also
you may specify FONT clause and the Say object gets automatically
related with the shown value (we create a bSETGET codeblock!) , so
changing the value and doing :Refresh() is ok to redisplay the SAY.
* See MMedia.bat and MMedia files for an incredible MultiMedia demo
completelly builted with FiveWin. -Configure your in screen in
800x600 to test it better- Thanks Santi for this excelent FiveWin
demo! We are MultiMedia 100% !
* New method added to TWindow base Class, ::Iconize() automatically
iconizes a Window. Also a new method has been added to MDIFrame
Windows, ::IconizeAll() which ::Iconize() all MDIChild Windows.
Also a new default option has been added to standard MDI menu:
"&Iconize All" which executes ::IconizeAll() method.
* New method added to Menu Class, ::AddMdi(), automatically creates
the standard MDI popup to control MDI Child windows from a MDI
enviroment. See TestRpt1.prg to see how easy and powerfull is this
new method!
FiveWin 1.6 b
=============
* New bMMoved data added to base Class TWindow. Now we can defined actions
to performed when the mouse is moved:
oWnd:bMMoved = { | nRow, nCol, nKeyFlags | ... }
* Dialogs ON INIT Clause is now working. When and Init clauses were
incorrectly managed. WHEN shoud avoid Dialog Execution and INIT, now,
properly initializes if defined. Thanks Satiago Perez!
* We have added control to Windows WM_QUERYENDSESSION, that is, the message
Windows sends to check if we allow to finish Windows execution. When we
receive this message we try to :End() the window or the DialogBox. If
successfully then we allow Windows to End(). Try this:
DEFINE WINDOW oWnd FROM 1, 1 TO 10, 50 TITLE "You can not end me!"
ACTIVATE WINDOW oWnd ;
VALID MsgYesNo( "Do we let Windows end ?" )
Execute it and try to End Windows!
* ON [ LEFT ] DBLCLICK clause added to standard ListBoxes! It was missing.
* ADJUST clause on ButtonBitmaps was missing! Now it is ok.
* The Windows Help designer at the IDE is working! Now you may easily
create Windows Help files without having to use any word processor!
Extremely easy to build documentation for applications! The Norton
Guides generation support will be added pretty soon.
* Now to refresh a SAY on screen you may just change the associated
variable value and then do :Refresh() to the SAY Object. We have added
this behavior to standarize it with the rest of Controls we manage.
Also, it is possible to especify VAR or PROMPT, as now we will reflect
automatically -when :Refresh()ing- the new values of the VARiable.
* We already have SET KEYs !!! like in MsDos !!! My God! How easy was it
to implement it and how blind we were <g> !!! Enjoy SET KEY power !!!
Look at TestKeys.prg example.
* The debugger is working !!! Just compile with /b and... uhhhhhhh!!!
We have modified BUILD.BAT to easily debug a program, just do:
BUILD MyProg /b
The whole debugger has been written using FiveWin !!! We are going to
provide all the debugger source code so you will be able to customize
the debugger to your own needs !
* The Windows Help files generator is working from the IDE !!! Try it!
You will be able to write HLP files in a matter of minutes... !!!
You need the utility HC.EXE or HC31.EXE to generate the HLPs from
inside the IDE. Look at your Borland\bin directories or at Microsoft.
You may even place bitmaps in your HLPs very easily.
* The Dialog Box designer from inside the IDE is almost ready. Start
testing it, and see how quicly FiveWin generates source code !!!
Now we must add VALID, etc... capabilities. We are working on it.
* A new expression Builder is almost ready. Review Indexes from the IDE.
To build an expression just do:
cGetExpression( [ cOldExpression ] [, cTitle ] )
with expression-syntax checking and the ability to review all workareas
fields, variables, ...
* New method :SetFore() for Bitmaps Objects. This Method forces the
Bitmap to implement its own palette, so its image gets properly
-with its colors- displayed. See FwRes.prg for an example.
* What is the next ? We go for documentation... yes, very soon, as
quickly as we can. And meanwhile we are preparing something really
hot: Drag&Drop FiveWin own interface. Visual Programming is nothing
for what you are going to see very soon... The next step in CASE
technologies is about to arrive... stay tuned! <g>
* We have been reducing the .CH files trying to avoid Clipper 5.01
memory overbooked problem when compiling. Sorry for this. We were
using version 5.2 and we forgot about 5.01 problems. If you get
this problem try to remove unnecessary CH and, if you can, use
Clipper 5.2 !
* We want to thank all the people who is helping us. From all countries
people is providing very important help to develop FiveWin. An
incredible Reporting engine is about to be added coming from Madrid
-thanks Ignacio!-, a superb-Browse is near to be ready coming from USA
-thanks Kevin!-, an incredible Data-Driven-Dictionary is beeing builted
-thanks J. Mariano!-, the power to read and write RCs from FiveWin is
coming from Netherlands -thanks Derk!- Thanks Alan Ashendorf for his
support, his ideas and experience. Thanks all of you for putting
your heart on this project!
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.
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.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 ) )