What's new in FiveWin 1.9.2 FiveWin 1.9.2
* New Ole Automation client support: New functions CreateOleObject(), OleInvoke() and OleSetProperty(). See SAMPLES\TestOle.prg. The perfect Microsoft Office-FiveWin intregation.
* New Office 97 look: Try the new NOBORDER clause for the ButtonBar buttons. See SAMPLES\FwBorl.prg buttonbar!
* The ATI video card bug has been fixed!!! Finally we discovered the ATI offending code and we fixed it!
* InterNet support: New Class TSocket provides FiveWin all the powerfull TCP/IP WinSock support. See SAMPLES\TestSock.prg for an impressive demo of a fully operative WEB server entirely written with Clipper & FiveWin.
Once you have TCP/IP installed on your machine, start TestSock.exe and press button start. The message bar will report your IP own address when you move the mouse over the main screen. Then, start Microsoft IExplore.exe and you will be impressed watching your app working as a real and self-contained WEB pages InterNet server. With these unique features, you may build the most powerfull IntraNet/InterNet applications.
* Fix: Thanks God we found the NetApi.dll bug when printing under Windows 3.1 for WorkGroups and using a remote printer. It was as simple as specifying a NAME for the print document:
PRINT <oPrn> NAME "WhatEver"
The Class TPrinter has been fixed to provide a "FiveWin Report" default name. It has been tested and no more NetApi.dll GPFs! <g>
* Fix: There was a wrong behavior when using BackSpace on a Get. It has been fixed.
* Enhancements on the FiveWin IDEs: Lately we decided that FiveWin should include two IDEs: the 'traditional' one (on the line of C++ IDEs) and a 'Visual' one (on the line of VB, Delphi). We will try to get them closer and closer as mush as possible (in fact we would like to have just one IDE which may works as 'traditional' or as 'visual').
We have done recent work on the traditional IDE (IDE directory) and now it is already possible to edit, compile and link from it. Projects are still not supported, but soon will be implemented. Be sure that the TOOLS directory is available and that your paths are properly set at the LNK files. Soon all this setup will be automatically managed.
* Enhancement: Class TVbxControl were not properly managing array properties. Now it is working ok! We have defined a new class TVbxArray that it is automatically managed by VBX controls. See SAMPLES\ChartFX2 for a superb VBX graphics demo!!!
* Enhancement: Class TReport has been enhanced so now all codeblocks automatically receives Self as the first parameter. The Report groups receive the group object instead of the report object (the group object keeps a reference to the report object at DATA oReport).
* Very important: Clipper 5.2 has a bug at Alloc.obj module. This bug is fixed at Clipper 5.3. In case you are not still using Clipper 5.3, please extract Alloc.obj from Clipper 5.3 Clipper.lib and linking in your application. This solves many DBF management potential errors. These problems normally will only manifest on very large applications.
From Clipper 5.3 do: LIB Clipper.lib * Alloc.obj;
And use it at your LNK file: FI Alloc.obj
We do recommend to use Clipper 5.3. It is a better Clipper. Based on our own tests, Clipper 5.3 MDX and CDX support it is working ok.
* Very important: FiveWin.lib keeps growing and we are very close to the LIB size limit. We are still resisting to split the library into two: FiveXX.lib (for PRGs) and FiveC.lib for C language code. But for now, if you keep replacing your own modules at FiveWin.lib you could reach a critic LIB size.
How do you know if there is a problem there ? If you try to execute your application and you get an error saying "one of the devices related to the application is not found" under Windows 95. This means that the EXE is corrupted caused by the LIB size.
The solution is to use your own LIB for your modules or modifications on FiveWin modules. Don't modify FiveWin.lib. * New: There is a new method EditCol() for Class TWBrowse that lets you do non-modal editing on a browse. Remember that the actual lEditCol() method of Class TWBrowse is modal, so you can not click outside the bounds of the Get to switch to an adjacent cell.
* New: clause WHEN for MenuItems !!! This really saves a lot of coding to automatically activate and deactivate MenuItems. Also, the clause BREAK has been implemented: very usefull when managing very large popups that now can be broken in several vertical sections.
* New: Standard Editing capabilities. The METHOD AddEdit() of the Class TMenu implements standard editing capabilities to your app (following the Microsoft interface tendencies). This means that you can perform a UnDo, ReDo, Cut, Copy, Paste, Find, FindNext, Replace, Delete, SelectAll and Properties to any element of your interface.
Just define the codeblocks: bUnDo, bReDo, bCut, bCopy, bPaste, bFind, bFindnext, bReplace, bProperties and FiveWin will automatically route those requests to the control that currently is focused. These methods have been added to TWindow (and all inherited classes), TMdiFrame and TMdiChild.
* New: 32 bits API support!!! FiveWin lets you easily access the Windows 95 and Windows NT 32 bits DLLs. See SAMPLES\ Test32.prg for a working demo. It is as easy as use a new DLL32 clause when accessing run-time DLLs. You can also LoadLib32() and FreeLib32(). Our next target is to be able to start a FiveWin application as a real 32 bits app.
* New: The source code of the FiveWin debugger has been published. We will be happy to review all your suggestions and enhancements to have a much better and usefull debugger. See FUNCTION\ FWDGBP.prg !!!
* New: The FiveWin ErrorSys DialogBox has been modified to give it a more modern look. Generate any Clipper error and have a look <g>.
* Enhancement: Class TComboBox has been enhanced to get a better DropDown (including a GET!) use. See Samples\ DropDown.prg sample. Thanks a lot to Jerry Shaw for his great help! Warning: Previous versions of FiveWin required to redefine the contained oGet of a dropdown ComboBox. Now this is no longer required.
* Enhancement: RADIOS now accept different Help IDs for each element. See SAMPLES TestRad2.prg.
* Important Enhancement: Class TDataBase has been greatly enhanced, and all its C source code has been removed. We received a lot of request from FiveWin users to have full access to its source, so we decided to code it in standard Clipper. Class TWorkArea no longer exists. In fact, the new Class TDataBase now contains all the older TWorkArea Class functionality.
Class TDataBase now automatically work on a NetWork, issuing the locks and unlocks as required. It is a very powerfull class we strongly recommend you to use. See the documentation for an indeep explanation and recommendations about its use.
* New: Clipper KEYBOARD command and __Keyboard() function are already available! Also Clipper LastKey(). You must give the focus to a control or windows prior to send it some keystrokes. Control keys are not supported yet. See SAMPLES TestKey.prg
* New: Clipper Alert() function is supported as in MsDos. See SOURCE FUNCTION Alert.prg and SAMPLES Alert.prg. Syntax: Alert( <cMsg>, <acOptions> [,<cTitle>] ) --> nSelectedOption
* Enhancement: Class TFolder. Folders may be now created from source code. See SAMPLES TestFld3.prg and SAMPLES GenFold.prg.
* New: Class TWBrowse admits now to use different colors for painting each browse row, based on a codeblock. You can have great looking browses with a minimum work on your side. See SAMPLES FwBrow.prg for a working demo.
* New: We are using CTL3DV2.DLL instead of older CTL3D.DLL. There is no code change required in your apps, just be sure to supply your customers CTL3DV2.DLL instead of CTL3D.DLL. CTL3DV2.DLL must be copied to your WINDOWS/SYSTEM directory or it will not be found by your app.
* New: We have adapted FiveWin colors to use the Windows current colors.
* New: Class TPages, it lets you manage multiple DialogBox pages in the same way as folders. See SAMPLES TestPage.prg for a working sample. * Very important: NEVER mix Clipper 5.3 and previous Clipper versions code if you are using a previous Blinker version to 3.2. To mix Clipper 5.x and Clipper 5.3 code you MUST use Blinker 3.2. No problem if you use Microsoft Link or Symantec OptLink.
* New: Much improved FiveWin DGROUP consume. We have reduced almost entirely the DATA segment used by FiveWin. We needed this because Blinker does not compress Clipper symbol tables over 64 Ks. So, in very large apps (around 2 megas) Blinker stops doing it and suddenly the app consumes more DGROUP, so we needed to control this. Our tests here are going 100% OK!
* New LoadAccelerators() function.
* Improved MAPI support, perfect for quick sending NET documents from your app, just calling MAPISendDocument(). See SAMPLES FivEdit.prg.
* Improved Network connection and disconnection functions, for easily access all Network resources from inside your app: WNetConnectDialog() and WNetDisconnect(). Users will not need to access FileManager or Explorer to connect on the Network. See SAMPLES FivEdit.prg.
* New support function for Placeable MetaFiles (now you can use Corel Draw or similars to generate MetaFiles that could be used from your apps. Perfect for invoices, bills, and general free-forms printing techniques). See SAMPLES Corel.prg.
* New Multimedia SndPlayRes() function to reproduce WAV files from resources (no external WAV files required).
* New automatic Alignment capabilities. Controls automatically adjust their positions in screen. This save hours of work! New DATAs: oTop, oLeft, oBottom, oRight and oClient and a new TPanel Class to place auto-alignment controls inside other controls! See SAMPLES TestAlig.prg.
* Much improved DDEML support. There is a new Class TDDEML which easily automatizes it. See SAMPLES DDEMLSvr.prg and DDEMLCli.prg.
* New nRandom() function for easily generating random numbers in your apps.
* New powerfull hashing function to incredible quickly access your huge-arrays elements. nStrHash(). See SAMPLES TestHash.prg.
* New: See Class TTxtEdit. It is a powerfull and 100% configurable, text editor with syntax color highlighting. See SAMPLES FivEdit.prg.
* New: SET MULTIPLE ON command, permits to run multiple instances of the same FiveWin EXE. Use this to let your users run your app multiple times at once. Important: ONLY FOR Windows 3.1. Not for Windows 95 and NT.
* Important: Clipper 5.3 users: ExoSpace.lib is no longer required when linking your applications. Also, NtxPos() has been updated to properly work with CA-Clipper 5.3.
* New security functions: nStrCRC() to get the checksum of a text and nFileCRC() to get the checksum of an entire file. This is the perfect way to ensure that your final EXE is not modified at all! See SAMPLES TestCRC.prg
* New ListBox METHODs: SwapUp() and SwapDown(). They let you move up and down a listbox item.
* New nSerialHD() function to retrieve the harddisk serial number. Many people were requesting this to copy-protect applications. See SAMPLES TestHard.prg.
* Bug Fixed: Methods oReport:PhyWidth() and oReport:PhyHeight() did not work correctly because the non-printeable area was excluded from the widht and height, if you need the printeable area use the method nHorzSize() and nVertSize() of the printer object.
* Bug Fixed: oPrn:SetLandScape()
* Bug Fixed: oPrn:SetPortrait()
* Bug Fixed: oPrn:SetCopies( nCopies )
* New!!!: New clause on the PRINT command:
PRINTER oPrn TO "HP" PRINTER oPrn TO "EPSON" PRINTER oPrn TO "FAX"
Now you can choose any printer just indicating part of his name when you defined them in the Windows control panel
PRINTER oPrn TO 2
You can also choose the printer indicating his ordinal number on the printer list.
(Remember to copy the new PRINT.CH to your INCLUDE directory)
* New: New method oPrinter:GetOrientation() that gives you the current orientation of the printer:
#define PORTRAIT 1 #define LANDSCAPE 2
* New: New method oPrinter:SetSize(nWidth, nHeight) on the the printer object to change the dimension of the page (in milimiters)
* New: New method oPrinter:GetPhySize(@nWidth, @nHeight) on the the printer object to find the physical size of the page.
Yoy may pass by reference the variables wich hold the data but also the method returns a two-dimension array with the data as well.
* New: New methods to do some conversions with the printer object:
- Pix2Mmtr(nRow, nCol) - Pix2Inch(nRow, nCol) - Cmtr2Pix(nRow, nCol) - Inch2Pix(nRow, nCol)
Yoy may pass by reference the variables wich hold the data but also the methods returns a two-dimension array with the data as well.
* Bug Fixed: Methods SayBitmap(), Box() and Line() did not work properly, now it is ok.
* Bug Fixed: The PREVIEW clause did not work and the report was always sent to the printer (Bug in FW 1.8e)
* New: New version of PREVIEW.DLL that includes all the printing messages for the report engine and the preview program. You should update the version of PREVIEW.DLL wich is on your WINDOWS SYSTEM with the new one located at CLIPPER5 FWXX SAMPLES REPORT.
You will se at least two DLL's at the .. SAMPLES REPORT directory, PREVIEW.DLL wich is en english and PREVSP.DLL wich is in spanish, if you want to use the spanish version just rename PREVSP.DLL to PREVIEW.DLL on your WINDOWS SYSTEM directory.
This tecnique will take it possible to have a Preview multi-language, just use the WorkShop to change all the messages to your own language.
* New: Method SetTxtColor(nColor, nFont) to change the color of nFont For example: oReport:SetTxtColor(CLR_RED, 1) will change the default color to Red
* New: Method SetShdColor(nColor) to change the color of the shadow when the clause SHADOW is used on any column.
* New: Method SetPenColor(nColor) to change the color of the pen used for horizontal lines. To change the color of vertical lines just indicate the color when you create the pen, for example:
DEFINE PEN oPen WIDTH 1 COLOR CLR_RED
* New: Method CellView() on class TReport to give to you report a Spread Sheet style (It also works with the clause TO FILE ...)
* New: Data lJoin on class TReport to join all the lines in your report (It also works with the clause TO FILE ...)
* New: Data lSeparator on class TReport to draw a separator line between all the records of your report (It also works with the clause TO FILE ...)
* New: Data Cargo on all the Report engine classes
* New: Data nOrder on TRGroup and TRColumn that holds the relative order creation of the object, for example, the second column of your report will have nOrder == 2
* New: Data lSeparator on TRColumn when .T. the column will have a separator line.
* New: Data lDobleSep on TRColumn when .T. and if the data lSeparator is .T. the separator line will have two lines.
* New: Data lTextSep on TRColumn when .T. and if the data lSeparator is .T. the separator line will have the width of the text printed, if not the width of the separator line will be the same as the column. For example if you want the first column of your report to have a double underline, do the following:
oReport:aColumns[1l:lSeparator := .T. oReport:aColumns[1l:lDobleSep := .T. oReport:aColumns[1]:lTextSep := .T.
* New: Method Separator() on TRColumn to print separator lines on any column manually. The method Separator() receives the following parameters:
- lTextSep : if .T. the separator Width will be the same as the DATA - lDoblSep : if .T. the separator line will have two lines - nLine : Line number of the DATA column - nRow : Row number to start printing the separator line
For example: Put the salary doble underline when is greater than 100
REPORT oReport .... ....
COLUMN DATA Db->Name, Db->Salary ; TITLE "Name", "Salary"
ACTIVATE REPORT oReport ON CHANGE ChkSalary(oReport) .... ....
FUNCTION ChkSalary(oReport)
IF Db->Salary > 100 oReport:aColumns[1]:Separator(.T., .T., 2) ENDIF
RETURN NIL Back |