home *** CD-ROM | disk | FTP | other *** search
/ ftp.alaska-software.com / 2014.06.ftp.alaska-software.com.tar / ftp.alaska-software.com / updates / xppw32e2.txt < prev    next >
Text File  |  1999-12-01  |  22KB  |  568 lines

  1. /*
  2.  * XPPW32E2.TXT 
  3.  *
  4.  * Service Level 2 notes for Xbase++ Version 1.20.178
  5.  * for Window NT and Windows 95/98 (WIN32T)
  6.  *
  7.  * International Edition
  8.  * 
  9.  * Date: 10/27/1999
  10.  * 
  11.  */
  12.  
  13.  ____________________________________
  14.  0. Information for beta participants
  15.  
  16.     In this section you find important information that applies to the
  17.     different beta builds of Xbase++ Service Level 2. You find latest
  18.     information at the top of this section. Note that this information
  19.     is cumulative, e.g. information for build 204 is also valid for
  20.     build 205.
  21.  
  22.  
  23.               ----- information for build 212 ------
  24.  
  25.  a) This patch can only be applied to Xbase++ version 1.20.178 which is
  26.     Service Level 1.
  27.  
  28.  b) You can order a new product CD that includes a complete installation
  29.     version of Xbase++ Service Level 2 for a fee of US$ 25.- (DM 50.-)
  30.  
  31.  c) There are new example programs in these directories:
  32.  
  33.        ..\SAMPLES\BASICS\PRESPARA
  34.        ..\SAMPLES\BASICS\QBROWSE
  35.  
  36.  
  37.               ----- information for build 210 ------
  38.  
  39.  a)         *** !!! V E R Y    I M P O R T A N T !!! ***
  40.  
  41.     You must rebuild your index files to make sure that your application
  42.     will not be affected by PDR 3342 that is closed with build 210. Under
  43.     certain circumstances the OrdCreate() function has created a corrupt
  44.     index file. You cannot be sure that your index files are free of
  45.     errors unless you rebuild all indexes from scratch.
  46.  
  47.  
  48.  b) The PagedDataStore class was renamed to DacPagedDataStore to reflect
  49.     its relation to the Data Access Chain. This breaks the code you
  50.     have written for XBpQuickBrowse. The former PagedDataStore class function
  51.     must be prefixed with DAC.
  52.  
  53.  
  54.  c) The XbpCrt class has got the following new methods
  55.  
  56.        :currentPos()   , :setPos()
  57.        :getFrameState(), :setFrameState()
  58.        :toBack()       , :toFront()
  59.        :isVisible()
  60.  
  61.     This caused these instance variables and methods to become obsolete:
  62.  
  63.        :xPos, :xSize, :yPos, :ySize
  64.        :minimize(), :maximize()
  65.  
  66.     For compatibility reasons, they are still supported but will 
  67.     be dropped from a later Xbase++ release. Please make sure to 
  68.     replace in your code:
  69.  
  70.        :xPos  and :yPos            with :currentPos()
  71.        :xSize and :ySize           with :currentSize()
  72.        :minimize() and :maximize() with :setFrameState()
  73.  
  74.  
  75.  d) In the XbpMenuBar class, changes are made on callback code blocks and
  76.     methods (this affects XbpMenu as well, since it is derived from
  77.     XbpMenuBar):
  78.  
  79.        :activateItem is renamed to :itemSelected for consistency reasons.
  80.            The old name is still supported in order not to break code, but
  81.            you should rename :activateItem to :itemSelected to be prepared
  82.            when the iVar is dropped in a later release.
  83.  
  84.        :itemMarked is new and indicates that a menu item is hilighted.
  85.  
  86.        :beginMenu and :endMenu are new.
  87.  
  88.  
  89.  e) The methods :setColRepresentation() and :getColRepresentation()
  90.     of the XbpQuickBrowse and XbpMultiCellgroup classes are
  91.     changed. This allows for defining two different images to be
  92.     displayed for a given value. One image is used if a row is highlighted,
  93.     the other is used for normal display of rows in a browser column.
  94.  
  95.  
  96.  f) The presentation parameters of all Xbase Parts are revised. They
  97.     support foreground and background colors and react to changes made
  98.     in the system control panel due to their revised default color settings.
  99.     Refer to the new chapter "Presentation Parameters for Xbase Parts"
  100.     in the online documentation for details. You can link to it from
  101.     the "list of changes window"
  102.  
  103.     The basic mechanism of presentation parameters is demonstrated in the
  104.     new example program \BASICS\XBPSTYLE\PRESPARA.PRG
  105.  
  106.     To see an example of colored entry fields refer to the new example 
  107.     program \BASICS\XBPSTYLE\SLESTYLE.PRG
  108.  
  109.  
  110.  g) There is a new example program \BASICS\GUIEVENT\SHUTDOWN.PRG that
  111.     demonstrates how to react to, or reject, a system shutdown.
  112.  
  113.  
  114.  h) Changes are made in the example directory \SOLUTION\XBPGET
  115.       :renamed
  116.          EDITCOL.PRG is renamed to GETCOL.PRG
  117.  
  118.       :added
  119.          COMBOCOL.PRG = How to use a combobox for editing in a browser
  120.          SPINCOL.PRG  = How to use a spinbutton for editing in a browser
  121.          MLECOL.PRG   = How to use a multi line edit for text editing in a browser
  122.          COLTEST.PRG  = Test program for the above
  123.  
  124.       :changed
  125.          XBPGET.PRG   = XbpGet has received an own context menu
  126.  
  127.  
  128.  i) The OrdKeyNo() function is no longer recommended to be used when
  129.     browsing indexed databases with XbpBrowse.
  130.  
  131.          oXbpBrowse:posBlock := {|| OrdKeyNo() }
  132.  
  133.     This approach results in a slow browser response, especially when
  134.     large databases are displayed. To speed the browser up, it has received
  135.     a new instance variable :goPosBlock so that a relative navigation
  136.     is possible when the vertical scrollbar is used for browsing.
  137.     This is the recommended replacement for OrdKeyNo():
  138.  
  139.          oXbpBrowse:posBlock   := {| | DbPosition()    }
  140.          oXbpBrowse:goPosBlock := {|n| DbGoPosition(n) }
  141.  
  142.  
  143.  
  144.               ----- information for build 205 ------
  145.  
  146.  a) Windows 98 is now an officially supported platform for Xbase++.
  147.     The (really hard to find) reason for the 0x0E exception causing
  148.     blue screens -especially when debugging an Xbase++ application-
  149.     has been identified, resolved, and proven to be gone with
  150.     beta build 204.
  151.  
  152.     Alaska Software officially announces Xbase++ to work under
  153.     Windows 95, 98 and NT (Win2000 looks very promising so far).
  154.  
  155.  
  156.  b) CLOSEPDR.TXT is now divided into separate build sections so that
  157.     PDRs closed in a particular release can be identified more easily.
  158.  
  159.  
  160.  c) The "show stopping" PDRs in the area of database and index operations
  161.     that slipped into build 204 are closed. Please refer to the CLOSEPDR.TXT
  162.     file and test all related PDRs extensively.
  163.  
  164.  
  165.  d) The Caps-Lock PDR 3032 is closed. Since this dependends on the country
  166.     settings, please make sure that Caps-Lock works in your environment.
  167.  
  168.  
  169.  e) The management of presentation parameters is optimized. If you find
  170.     anomalies in this area, immediately report them in our beta news group.
  171.  
  172.  
  173.  f) The default presentation parameters of XbpQuickBrowse are changed so
  174.     that the browser looks more system compliant in its default appearance.
  175.  
  176.  
  177.  
  178.               ----- information for build 204 ------
  179.  
  180.  a) This patch overwrites all files in the ..\XPPW32\SAMPLES directory tree,
  181.     except for the files located in the ..\XPPW32\SAMPLES\DATA directory.
  182.     If you have made changes in example source code files, you must copy
  183.     them into another directory if you want to keep the changes.
  184.  
  185.  
  186.  b) One #define constant of DMLB.CH to be used for the FieldInfo() function
  187.     changed its meaning. If you use the constant FLD_TYPE in your programs
  188.     and pass it to FieldInfo(), the function returns a character instead
  189.     of a numeric value. To get the numeric value, the new constant
  190.     FLD_TYPE_AS_NUMERIC must be used.
  191.  
  192.  
  193.  
  194.               ----- information for build 200 ------
  195.  
  196.  a) Pbuild is fixed so that it recognizes the OBJ_DIR setting correctly.
  197.     However, this requires all file names listed in the section between
  198.     $START-AUTODEPEND and $STOP-AUTODEPEND not to include any path
  199.     information. Only the file names with extensions are allowed.
  200.  
  201.     We recommend to run PBuild once using the -g switch, so that the
  202.     dependencies are correctly updated in a Project file.
  203.  
  204.  
  205.  
  206.             ----- information for earlier builds ------
  207.  
  208.  a) Refer to the section #5B below
  209.  
  210.  
  211.  ____________
  212.  1.0 Overview
  213.  
  214.      This file contains important information about the installation
  215.      procedure of this Service Level beta version. 
  216.  
  217.      You can find a list of changes in the section "Important notes" below
  218.      and in the chapter "Changes" of the Xbase++ online documentation.
  219.  
  220.      The list of the closed PDRs is found in CLOSEPDR.TXT
  221.  
  222.  
  223.  ____________________________________
  224.  2.0 Check your existing installation
  225.  
  226.      Please make sure you have the following product completely installed:
  227.  
  228.        - Xbase++ 1.20.178 Intl.
  229.  
  230.      If this is not the case, install Xbase++ completely new from your
  231.      CD-ROM and apply the Service Level 1, if necessary.
  232.  
  233.      To display the current version number of your Xbase++ installation
  234.      type on the DOS prompt:
  235.  
  236.          [C:\ALASKA\XPPW32]xppload version
  237.  
  238.      Please see chapter 6 how to contact Alaska Software.
  239.  
  240.  
  241.  2.1 NOTE FOR BLINKER 5.x USERS 
  242.  
  243.      If you have copied the ..\LIB\OMF files into the ..\LIB directory,
  244.      you must copy the files from the directory ..\LIB\COFF back into 
  245.      ..\LIB before you proceed with the Service Level installation.
  246.  
  247.      Due to some support issues we do not recommend any more to copy
  248.      the OMF libraries into the ..\LIB directory when Blinker is used.
  249.      Instead, we recommend to change the LIB environment variable so that
  250.      it points to the appropriate directory:
  251.  
  252.         SET LIB=..\LIB\OMF
  253.  
  254.  
  255.  2.2 NOTE FOR limited beta participants
  256.  
  257.      This patch cannot be applied to the intermediate beta release
  258.      versions of Xbase++ but only to version 1.20.178 (Service Level 1)
  259.  
  260.  
  261.  _______________________________
  262.  3.0 Copy the Service Level file
  263.  
  264.      Download the appropriate file to your computer:
  265.  
  266.         XPPW32E2.EXE   - International
  267.  
  268.      Now, copy the file XPPW32E2.EXE to the root path of your current 
  269.      Xbase++ installation.
  270.  
  271.         [C:\ALASKA\XPPW32]copy \<your download-dir>\XPPW32E2.EXE  .\
  272.  
  273.  
  274.  _____________________ 
  275.  4.0 Apply the changes 
  276.  
  277.      The XPPW32E2.EXE is a self-extracting archive with an auto-start 
  278.      feature. It unpacks the necessary files and applies all changes 
  279.      automatically.
  280.  
  281.      To install the Service Level 2, enter on the DOS prompt:
  282.  
  283.         [C:\ALASKA\XPPW32]XPPW32E2.EXE
  284.  
  285.      Pay attention if error messages are displayed during the installation
  286.      and/or check the SERVICE.LOG file for error messages.
  287.  
  288.      The patch works incrementally. If you cancel the process or if an 
  289.      error occurs which you are able to resolve, you can restart the 
  290.      process at any time by entering on the DOS prompt:
  291.  
  292.         [C:\ALASKA\XPPW32]SERVICE.EXE
  293.        
  294.      To check a succesful patch, call on the DOS prompt:
  295.      
  296.         [C:\ALASKA\XPPW32]XppLoad version
  297.      
  298.      The resulting output should display the release number 1.30.212.
  299.  
  300.  
  301.  ___________________
  302.  5.0 Important notes
  303.  
  304.   A) Recompile and link everything
  305.  
  306.      Before you run an executable with Service level 2 you must recompile
  307.      all your source code files, otherwise your application will fail!
  308.  
  309.      Use "PBuild -a" to rebuild an entire project.
  310.  
  311.      If something does not work after a first re-build, please make sure
  312.      that there are no binary "leftovers" from a previous Xbase++ version
  313.      somewhere on your system (OBJ, LIB, DLL files) that are "accidentially"
  314.      linked.
  315.  
  316.  
  317.   B) Changes since Xbase++ 1.20.178
  318.  
  319.      1. Database performance
  320.  
  321.         Database access speed improved drastically.
  322.  
  323.         DatabaseEngines use now a dynamic approach for I/O caching.
  324.         This has reduced memory-consumption significantly. In fact, 
  325.         DBEs consume up to 6 times less cache memory than in
  326.         Xbase++ 1.2.
  327.  
  328.         The database-kernel of the Xbase++ runtime features now an
  329.         optimized merge/sort engine. This results in increased
  330.         performance of DbSort(), DbCreateIndex(), OrdCreate() operations.
  331.  
  332.         Specifically long key-values or large data-sets will be 
  333.         reindexed faster than with Xbase++ 1.2.
  334.  
  335.  
  336.      2. Code generation
  337.  
  338.         The Xbase++ compiler optimizes operation execution for all LOCAL
  339.         variables which are not detached. This leads not only to a faster
  340.         code execution but also to a smaller code size and reduces linker
  341.         fixups.
  342.  
  343.         A code block was formerly known as a sequence of pseudo codes,
  344.         which, in turn, were executed at runtime. In certain cases, the
  345.         compiler is now capable of generating native code linked to
  346.         the code block, but keeps the pseudeo code as well.
  347.  
  348.         The macro-compiler optimizes simple expressions which results in a
  349.         significant speed improvement by the factor of 10 or more, depending
  350.         on the macro-expression.
  351.  
  352.         A lot of string operations could be improved, which results in speed
  353.         gain and saved memory. You will discover the most extreme
  354.         acceleration when executing inline string concatenations like:
  355.  
  356.                         c := ""
  357.                         FOR i:= 0 TO 100000
  358.                            c += "Hi"
  359.                         NEXT
  360.  
  361.  
  362.      3. Memory management and GUI resources
  363.  
  364.         The memory manager is improved to arrange the memory blocks more
  365.         tightly and, thus, save memory against the operating system's
  366.         virtual memory manager. It also detects if there are pages
  367.         of unused memory over time and releases them back to the OS.
  368.  
  369.         The boost methods for the garbage collector were changed to behave
  370.         properly for most of the application scenarios.
  371.  
  372.         An internal cache/resource manager for GUI resources is added
  373.         which has reduced the consumption of GUI resources from the
  374.         operating system N times, depending on the application type. It
  375.         also provides automatic resource reuse strategies to avoid the
  376.         Windows 95/98 GUI resource problems which are intrinsic to these
  377.         operating-system family.
  378.  
  379.  
  380.      4. Compiling
  381.  
  382.         The Xbase++ compiler accepts as command line parameters multiple 
  383.         PRG file names or a script file containing a list of PRG files.
  384.  
  385.             xpp file1.prg file2.prg /link
  386.  
  387.             xpp @list.txt /link
  388.  
  389.         Pbuild makes use of this feature already which decreases your
  390.         turn-around time up to 50%.
  391.  
  392.  
  393.      5. STD.CH
  394.  
  395.         All database related commands are changed in order to perform
  396.         "early binding" when a macro expression is used as a command
  397.         parameter. This improves the speed of commands like
  398.  
  399.            cFilter := "My Filter Expression"
  400.            SET FILTER TO &cFilter
  401.  
  402.  
  403.      6. DBESYS.PRG
  404.         
  405.         In addition to DBFDBE and NTXDBE, the DatabaseEngines DELDBE and
  406.         SDFDBE are loaded as default DBEs.
  407.  
  408.  
  409.      7. Event handling
  410.  
  411.         Callback methods are changed from "asynchronous" to "synchronous"
  412.         mode. That means: if you derive a class from an Xbase Part that has
  413.         a default event-handler and overload an event-handling method, the
  414.         corresponding default event-handling method is NOT executed unless
  415.         you call the same method in the super class.
  416.  
  417.         We have included some PRGs to demonstrate this important change.
  418.         Have a look at the new example programs:
  419.  
  420.            ..\SAMPLES\BASICS\GUIEVENT\USERPBN.PRG
  421.            ..\SAMPLES\BASICS\GUIEVENT\USERSLE.PRG
  422.  
  423.            ..\SAMPLES\SOLUTION\CALCSLE\CALCSLE.PRG
  424.  
  425.         NOTE: The callback code blocks are treated as in the previous
  426.               version. I.e. an event is handled before the corresponding
  427.               code block is executed.
  428.  
  429.  
  430.      8. XPF and XFF files
  431.  
  432.         The file format for XPF files (XFF files of the FormDesigner) is
  433.         changed. SL2 detects the old XPF format and converts it to the new
  434.         one, i.e. SL2 is downwards compatible and existing XPF and XFF files
  435.         can still be read. However, Xbase++ versions prior to SL2 cannot
  436.         read the new file format (SL1 cannot read XPF files created by SL2,
  437.         but SL2 can read XPF files created by SL1).
  438.  
  439.  
  440.      9. XbpGet class
  441.  
  442.         We have refined the XbpGet class in terms of Pre and Post validation.
  443.         You can define Pre and Post validation rules for an XbpGet object,
  444.         no matter whether it resides in a modal or modeless window. However,
  445.         the "XbpGet is in a modeless window" situation required us to add
  446.         an XbpGetController class that handles focus changes between single
  447.         XbpGet objects. That means: you have to adjust your code that uses
  448.         the XbpGet class. An XbpGet object does not work without the aid of
  449.         an XbpGetController object.
  450.  
  451.         Both classes, XbpGet and XbpGetController, are included in PRG
  452.         source code (see ..\SAMPLES\SOLUTION\XBPGET). If you are interested
  453.         in the Xbase++ internal works, take the chance and study the files
  454.         XBPGET.PRG and XBPGETC.PRG carefully. They demonstrate how you can
  455.         customize an entry field to the utmost extent using Xbase++ base
  456.         classes.
  457.  
  458.  
  459.     10. XbpBrowse is editable
  460.  
  461.         You can build an editable browser with the XbpBrowse class since the
  462.         required methods are refined and documented now. However, the
  463.         editing issue does not affect the XbpBrowse but the XbpColumn class,
  464.         which has got methods required for editing a single cell of a
  465.         browser column (see the "Changes in documentation" online-help window).
  466.  
  467.         We have included two new example programs which demonstrate how to
  468.         make an XbpBrowse() based browser editable.
  469.  
  470.         The example PRGs implement an editable XbpGetColumn class that uses
  471.         XbpGet objects for editing within an XbpBrowse object. The
  472.         XbpGetColumn class is derived from the XbpColumn class (Xbase++ at
  473.         its best). We recommend to study carefully:
  474.  
  475.           ..\SAMPLES\SOLUTION\XBPGET\GETCOL.PRG
  476.           ..\SAMPLES\SOLUTION\XBPGET\EDITBROW.PRG
  477.  
  478.  
  479.     11. XbpColumn components are doc'ed
  480.  
  481.         The "secret" of the XbpColumn class is lifted: the XbpCellGroup
  482.         class is documented and available for you. Note that we consider
  483.         the XbpCellGroup class as a class providing services to other
  484.         classes. XbpCellGroup objects are useful as components of other
  485.         objects, but are almost useless on their own. However, embedding
  486.         three XbpCellGroup objects in an XbpStatic object makes up something
  487.         like an XbpColumn object. Now you can build the browser class you
  488.         always wanted to have.
  489.  
  490.  
  491.     12. The Quick Browser is there
  492.  
  493.         A new browser class is available for quick browsing of (huge)
  494.         databases. It is named (guess what?) XbpQuickBrowse() and follows
  495.         a completely different approach than the XbpBrowse class, because it
  496.         uses an object as its data source. It does not operate directly on a 
  497.         data base, or work area, but requires the services of the
  498.         new DacPagedDataStore() class.
  499.     
  500.         Once you become familiar with the XbpQuickBrowse class you will
  501.         notice the trade-off when your goal is speed: there is less comfort
  502.         in customizing the browser compared to the XbpBrowse class. The
  503.         reason is that only one XbpMultiCellGroup() object displays all
  504.         data to be browsed. This requires much less GUI resources compared
  505.         to the XbpBrowse class, where one XbpColumn object is used for each
  506.         browser column. Using only one object for all browser data is a
  507.         major factor for speed gain and loss of comfort. 
  508.  
  509.         We recommend to use XbpBrowse for a customized browser and
  510.         XbpQuickBrowse for fast browsing, as it is required in a look-up
  511.         table, for example.
  512.  
  513.  
  514.     13. Online Help
  515.  
  516.         The online help is further enhanced with a window displaying
  517.         functions and commands by the group they belong to. This offers you
  518.         another possibility to search for a particular function. The new
  519.         window is opened via the "See also" button in the main help window.
  520.  
  521.  
  522.     14. XbpCrt:configure()
  523.  
  524.         A change made in the :configure()-method of XbpCrt objects now 
  525.         causes the text screen buffer to be preserved by the operation. This
  526.         may cause problems in applications that assume that the window is
  527.         cleared after :configure(). To clear an XbpCrt window, CLS can be
  528.         used.
  529.  
  530.  
  531.     15. XbpWindow:setFontCompoundName()
  532.  
  533.         The return value of the :setFontCompoundName() method now reflects
  534.         the font actually set. This may introduce problems for applications
  535.         that make assumption about the return value of this function, such
  536.         as expecting it to always return the same string as was passed to
  537.         the function.
  538.  
  539.  
  540.     16. GRA_CLR_BROWN + SetColor( "GR" )
  541.  
  542.         The color produced when specifying GRA_CLR_BROWN was incompatible
  543.         in that it did not match the appropriate color in the standard VGA
  544.         palette. Furthermore, the color wasn't present in the system palette
  545.         (not a standard system color) causing GRA_CLR_BROWN to be mapped to
  546.         some shade of red on systems using 256 colors. This pertains to both
  547.         applications that used GRA_COLOR_BROWN for GRA output as well as to
  548.         text or hybrid mode applications that specified the respective color
  549.         via the SetColor() function.
  550.  
  551.         This was changed to conform to the standard VGA palette. However,
  552.         since the correct color is slightly different from the color used
  553.         previously, this may cause problems for applications that rely on
  554.         that specific color.
  555.  
  556.  
  557.  _________________________________
  558.  6. How to contact Alaska Software
  559.  
  560.     Please use the following news group to send your feedback
  561.     about this release to us:
  562.  
  563.         news://news.alaska-software.com/alaska-software.news.xbase++           
  564.  
  565.     Thank you and enjoy SL2!
  566.  
  567.     Your Alaska Xbase++ Team
  568.