WinSizer 2.1D (Second Release)
Delphi 1.0/2.0 Compatible
Shareware Distribution w/Documentation

Background:
     WinSizer, provides the programmer with an easy-to-use interface for object
     sizing and position control.  All the programmer has to do is drop this
     component on his form and activate it and watch it do it's thing.
     WinSizer also provides programmer to customize which controls to size and
     which not to, double click the icon to access built in component editor.
     Ease of use, since there are no functions to call, this component is the
     easiest to utilize.

Feature(s):
     ** Sizes / Resizes all or specified control's on the form, including
        tabsets/notebooks....default all
     ** Store's forms position and size
     ** Allows user to adjust size the control without sizing the font, or size
        the control and the font.
     ** restricts Sizing of the form below the original created dimensions
     ** Automated control over forms creations and destruction, no functions to
        call
     ** Fully customized component editor, to edit all restricted properties.
     ** ReScans all components dynamically at runtime to prevent any that were
        missed, and automatically adjusts them

     (All of the above operations can be individually controls, double click the
     icon after dropping it on the form to access component editor);

Future Enhancement(s):
     ** Save Form for CBT or Documentation
     ** Incoherent Gray Screen Function
     ** Automatic Cursor Management ... Keeps track of cursor changes and
                                        restores previous one when required.
     ** And any other requests from other programmer(s)

*******************************************************************************
*******************************************************************************

Copyright Notice:
     THESE COMPONENTS ARE DELIVERED AS IS.   NEITHER "Seraj S Dhaliwal" OR
     "PC Net/Com" (trademark) CAN OR SHOULD BE HELD LIABLE FOR ANY DAMAGE OR
     TIME LOST TO YOU BY USING/INSTALLING THESE COMPONENTS.  ALL COMPONENTS ARE
     PROVIDED IN FULL WORKING CONDITION W/NO RESTRICTIONS OR PROVISIONS.  ALL
     REGISTERED USER'S WILL BE PROVIDED WITH A REGISTRATION CODE FOR ALL FUTURE
     CORRESPONDENCE.  ONLY TWO (2) UNREGISTERED CORRESPONDENCE WILL BE ANSWERED
     OR LOOKED AT.  USER CAN REDISTRIBUTE THIS VERSION UNREGISTERED VERSION AS
     IS, WITH ALL ORIGINAL FILES INCLUDED, WITHOUT PERMISSION.  USER CANNOT
     MODIFY OR REDISTRIBUTE OR RESELL THE REGISTERED VERSION WITHOUT EXPLICIT
     PERMISSION FROM THE AUTHOR.

     WINSIZER HAS A PROPERTEY, REGISTRN, THAT IS READONLY.  FOR UNREGISTERED
     VERSIONS THIS CONTAINS "#R# V2.0A".  ALL REGISTERED VERSIONS SHOULD READ
     "|R| AAA BBB" WHERE AAA DENOTES COMPONENT VERSION NUMBER AND BBB DENOTED
     PERSONAL REGISTRATION NUMBER.

     COPYRIGHT: (C)'1994- Seraj/PC Net/Com(t)

Registration:
     $5.00 only,  Registrated user will be provided with the full documented
     source code, and other updated component's as they are revised for free.
     All update(s) and change(s) to documentation will be provided for free,
     electronic media.  Source will be emailed out after payment has been
     received.

     NOTE: I am willing to work with any programmer that is having problem
     using this component, registered or unregistered, no questions.

Contact/Assist/Demo/Payment Information:
     Seraj S Dhaliwal    Email: ssd.trktoon@worldnet.att.net          Primary
                         3149B Tamayo Ct, Irvine, CA-92782            Payment(s)

     ** All checks should be made payable to Seraj S Dhaliwal **
     ** Phone number will be issued only after registration. **

     WSTEST.* is provided as a demo for both 16Bit/32Bit.

*******************************************************************************
*******************************************************************************

Personal Information:
     A C/C++ Programmer who does not even want to look at C/C++ anymore.  There
     has been not one thing I cannot do with Delphi, not one.

     Programming for 10+ years, Active Military USMC, mostly to eliminate
     repeated daily work load on personnel, IE: if a person performs same job
     every day, using the same tools, but a number of different one(s), I
     design a consolidated workbench to allow this person to work that one job
     in one program.  Learned about 14 different language(s) variants, from
     Honeywell DPS6 assembler to Cobol to Pascal to Fortran to C then to C++
     and finally to Delphi........Also worked with SCO Unix, Coherent PC Unix,
     and ATT System 7.....Lan background is TokenRign to TCP/IP to Banyan and
     back to TCP/IP.....Computer Based Training Software....ToolBook 3.0.

     Programs:
          Interactive Local/Lan Message Viewer Program (DOD Spec/MDS Replacement)
               ** Online Compression For Space Saving
               ** Local Online Historical Archive
               ** Search/Tag By Category (Automatic/Manual)
                    ** w/Permanent User Defined Search List's
                    ** Multiple Search String Per Search
               ** SSIC Load Specification
               ** Interactive Editor Option
               ** MultiUser Access To One PC or LAN Based MultiUser Installation
                    ** Comprehensive ADMIN/MASTER Logon Functions
               ** DELPHI

          Administrative Management System
               ** Local SOP Management or Division SOP Management
                    ** Tracks Training
                    ** Tracks Individual Status/MIL Data
               ** Stores Multiple Address (Leave/Current/Deployed....)
               ** User Configure able Reports or Custom Reports
                    ** User Can Store His Reports For Multiple Uses
               ** TOOLBOOK 3.0 (Pre Delphi)

          Deployable Packup Management System
               ** Online Item/Inventory Management
               ** Reorder(s) and Demand Recording By Individual UIC
               ** Multi UIC Management By Local Stock Number
               ** Complete Historical Archive For All Actions
                    ** Issue, Reorder, Gains/Losses, Transfer(s)
               ** Inventory Management Functions
                    ** Location Changes (Global/Individual)
                    ** Inventory Scheduling/Update Options
                    ** Automatic Gain/Loss Processing
               ** TOOLBOOK 3.0 (pre Delphi)

          PC/Computer Detailed Custodial Inventory Mgmt Program
               ** Historical Tracking
               ** Serial Number Management
               ** Multiple Issue To A Serial Number Management
               ** DELPHI

*******************************************************************************
*******************************************************************************

Component Documentation:
     Installation: (suggested)
          I created a separate directory where I keep all other than controls
          that are not Delphi supplied, IE: LIB\OTHER.

          PKUNZIP WINSIZER.ZIP -D \YOUR_DIRECTORY_NAME

          {Copy WSAVER16/WSAVER32 DCU files into directory under Delphi,}
          .. LIB\OTHER.
                File List:      PCNTCM16.PAS            16Bit Regist. File
                                PCNTCM16.DCR            16Bit Bitmap ResFile
                                WSAVER16.DCU            16Bit WinSaver Comp
                                WSAVER16.DFM            16Bit Form Comp Ed
                                PCNTCM32.PAS            32Bit Regist. File
                                PCNTCM32.DCR            32Bit Bitmap ResFile
                                WSAVER32.DCU            32Bit WinSaver Comp
                                WSAVER32.DFM            32Bit Form Comp Ed

          16-Bit:
          Activate Delphi, Select "Options", Select "Add Components".
               Select Add, and browse to LIB\OTHER directory and select
               .. PCNTCM16.PAS.
               Select Ok.

          32-Bit:
          Activate Delphi, Select "Compoents", Select "Install".
               Select Add, and browse to LIB\OTHER directory and select
               .. PCNTCM32.PAS.
               Select Ok.

          Once, the library has been recompiled, a new toolmenu item will be
          .. added, PC Net/Com.  Select the component, and use it. (Have Fun....)

          Demo Project:
                Under 16Bit & 32Bit directories, there is a project named,
                WSTEST.DPR.  There are no differences between the projects.

     Upgrading from V2.0A to V2.1D.
          To upgrade from older version of this component to the newer version,
          following step(s) need to be followed:
                - Open your project that utilized this component.
                - Remove this component from the project
                - Save the project (Alt-V)
                - Drop the new version of the component on the form
                - Set the ACTIVE property to TRUE
                - Double-Click the component icon and set custom properties.

     Fix(s) and Enhancement(s) in V2.1D and higher:
        ** Fixed ReSize Dialog/String list
                - It was not showing the last sorted item for user to edit on
                  the screen.
        ** Screen Resolution Problem
                - Program worked fine in same resolution but would go wacky in
                  enhanced resolutions, ie: if designed in 640x480 the form
                  would seem to keep enlarging in 800x600 mode.
                - This was caused if user enabled FIXRESOLUTION property, which
                  would readjust the form to 640x480 but not the components.
                  -  Removed option from the component, all works fine.
                - Added AutoResolution validation in the program, if the
                  application was designed in 640x480 mode, and then ran on
                  800x600 mode, the component adjusts all the components
                  properly.
        ** Repaint/Refresh Problem
                - Some components would not update when the form was resized,
                  some would.  The component calls each components RePaint
                  method and forces the form components to repaint without
                  erasing the existing contents of the screen, ie: Refresh.
        ** Design Time Sizing and Reseting
                - Added functionality for user to be able to control wether he
                  wants the form to resize at design time or not.  Also added
                  option to reset the user's form, if he does not like the new
                  size to the original size the form was designed at.
                - These properties can also be accessed from the application,
                  itself, when the program is compiled and running:
                        - WinSizer1.DesignMode := TRUE; will stop the form from
                          resizing at runtime.
                        - WinSizer1.ResetForm := TRUE; will reset the form to
                          it's original designed specification.

     Properties: (EDITABLE)
          Active       Modified in V2.1D and higher versions.
                       True/False  This controls the component behavior.  This
                                   property controls all aspects of the
                                   component, ie: if set to FALSE the component
                                   has no functionality at all.

          Initialize   V2.0A Only  Deleted in all other versions.
                       True/False  This property re-initialize the internal
                                   component list by re-reading the components
                                   from the form.  You will loose any
                                   configuration options you specified prior
                                   to this operation, default, all components
                                   will be resized and their fonts adjusted.
                                   This property reset's itself to False once
                                   component's have been re-read in the list.

          Update       V2.0A Only  Deleted in all other versions.
                       True/False  This property updates the internal component
                                   list, without destroying old configuration
                                   information.  It add's any new components/
                                   controls found on the form.  This property
                                   reset's itself to False once any new
                                   component's have been read and added to the
                                   list.

          Registration Modified    ReadOnly.
                                   UnRegistered User: #R# V2.1D
                                   Registered   User: |R| V3.1D XXXXX

          DesignMode   Added V2.1D and higher.
                       TRUE/FALSE  This is a custom property, use it with care.
                                   At design time this property will always
                                   default to TRUE.  If user sets this to true
                                   then the form will Resize at design time
                                   also.
                                   THIS PROPERTY IS NOT STORED.

                                   At runtime programmer can set this property
                                   to TRUE to prohibit the form from getting
                                   resized.  It reset's to default, every time
                                   the program is initialized.

          ResetForm    Added V2.1D and higher.
                       TRUE/FALSE  This is a UHOH type property.  If for some
                                   reason the user had changed the DesignMode
                                   property to FALSE and then resized his form,
                                   where now he just wants his form to look as
                                   it looked before he started resizing it at
                                   design time, this will reset the form for
                                   you to it's original dimensions.
                                   NOTE: This property is automatically set to
                                         FALSE once the form has been reset.
                                   THIS PROPERTY IS NOT STORED.

                                   At runtime programmer can set this property
                                   to TRUE, which caused the WinSizer to reset
                                   the form to it's original designed dimensions.
     Properties: (HIDDEN/PRIVATE)
          ** Below listed properties can only be accessed after double-clicking
             the WinSizer icon on the form **

          ** These properties are stored just like other properties in the DFM
             file, but access is restricted. **

          [GLOBAL OPTIONS]
          ControlList               TstringList Component, that contains
                                    information about a component, name/
                                    classname/resize/fontresize.

          SaveFormPos  True/False   When set forms size & position is stored in
                                    the project INI file.  If none exists, then
                                    the file is created.  Activated when form is
                                    created, sized, moved, closed, windows
                                    termination.

          ReSizingRestricted
                       True/False   When set the form is restricted from being
                                    sized smaller than the original design
                                    creation size.  Activated when form is
                                    sized.  Note: If this option is not enabled,
                                    the form and all the components will be
                                    reduced as requested by resizing the form,
                                    but after a certain limit the form's scroll
                                    bar's will showup, when some of the
                                    components are positioned off the screen
                                    due to too much desizing.

          LockWindowUpdate
                       True/False   When set locks window from being updated
                                    until all the resizing operations have been
                                    completed.

          FixResolution
                       V2.0A Only  Deleted in all other versions.
                       True/False  This option was added after seeing Borlands
                                   TI2861, to automate the programmers job.
                                   Note: This option will only adjust the form's
                                   size, not every component's on the form.
                                   Also, if WinSizer is enabled, then this
                                   options is actually redundant.

          DeactivaeReSizer
                      Added V2.1D and higher.
                      TRUE/FALSE   Allows user to just diable the resizer
                                   functionality of the component without
                                   disabling any other functions.

          [LOCAL OPTIONS]
          ResizeAll & Resize None
                      Added V2.1D and higher
                      TRUE/FALSE   Allows users to specify the default
                                   behaviour of the component if it encounters
                                   a component that is not on the component
                                   list stored by the component.

                                   If RESIZEALL is checked, then this component
                                   will be resized and aligned properly.
                                   if RESIZENONE is checked, then this component
                                   will be left alone.

           HotKey {RESET}          Upcomming enhancements.
                  {CAPTURE}
                      

*******************************************************************************
*******************************************************************************

Credit(s):
     To all programmer(s) who like me are ready to share information which
     allows them(me) to learn more everyday from each other.

     Not to forget the Delphi book(s) I have invested in, basically all are
     priced at 39.99 or higher....................

*******************************************************************************
*******************************************************************************

Other Components/Units:
*****     Zstring   -    Pascal String Manipulation Routines (16Bit Only)
                         .. Working on 32Bit compatibility
          ** Note some of these functions already exists as native pascal
             routines, I converted these from my C library, so sorry for
             duplication. **

          z_MemMove      Moving data via address Like C
          z_SContains    Search for string in another string
          z_SWContains   Search for string(whole word) in another string
          z_SMiddle      Extract middle string from another string
          z_SLeft        Extract left string from a string
          z_SRight       Extract right string from a string
          z_SDelete      Delete a string from original string
          z_SDeleteAll   Delete all occurrences of one string from original string
          z_SInsert      Insert a string into another string at a given position
          z_CContains    Returns the position of char in a string
          z_CReplace     Replaces specified character with another in the string
          z_CDelete      Deletes specified character from a string
          z_SReplace     Replaces first occurrences of the string in another string
          z_SReplaceAll  Replaces all occurrences of a string in another string
          z_CCount       Returns the count of specified character in a string
          z_SCount       Returns the number of occurrences of a string in another string
          z_SCompare     Compares string, returns best match result like C
          z_STrim        Eliminates white spaces from right(trailing) of the string
          z_SLTrim       Eliminates white spaces from the left(leading) of the string
          z_SRTrim       Eliminates white spaces from the right(trailing) of the string
          z_SBTrim       Eliminates white spaces from both left & right of the string
          z_SPad         Pads a string with the specified character for a given length
          z_SCenter      Centers a string within a specified length
          z_SReverse     Reverses string data within the string
          z_SLJustify    Left justifies a string
          z_SRJustify    Right justifies a string
          z_SLRotate     Rotates string data left for specified length
          z_SRRotate     Rotates string data right for specified length
          z_SLShift      Shifts string data left for specified length
          z_SRShift      Shifts string data right for specified length

          z_SCheckSum    Returns checksum for a given string
          z_SCode        Encode/Decodes a string, given a key

          z_SCRC12       Calculates 12-bit CRC for a string
          z_SCRC16       Calculates 16-bit CRC for a string
          z_SCRC32       Calculates 32-bit CRC for a string
          z_FCRC         Calculates CRC for the specified file

          z_SExtractNWord  Extracts a word from a string, at a specified position
          z_SExtractWord   Extract a word from a string, by its ordeal number
          z_SWordCount     Returns number of words in a string

          z_ItemCount    Returns number of items in a string (one,two,three=3)
          z_ItemSet      Sets specified item in a string to a new value
          z_ItemGet      Returns the value of the specified item in a string
          z_ItemCheck    Returns true is the item is present in the string
          z_ItemCheckP   Returns the position value of the item in a string
          z_ItemDelete   Delete's the specified item from the string

          z_TempFile     Returns a temp file name, specified path/ext
          z_FCopy        Copies on dir/path to another (XCopy)
          z_FBFOpen      Open file for buffered mode (read) operations
          z_FBFReadLn    Read a line from the file (CR/LF=0d0a or 0c)
          z_FBFWriteLn   Write a line to file, specify if CR/LF need to be appended
          z_FBFWriteBF   Write a buffer/array to file
          z_FBFClose     Close the buffered file

          z_BitClear     Clear the specified bit in a string
          z_BitSet       Set the specified bit in a string
          z_BitTest      Return true if the specified bit in a string is set or not

          z_Date         Return date in a format specified 1-7 (julian date included)
          z_YYMM         Convert julian date to date specification 1-7
          z_Time         Return time in a format specified 1-6

          z_DirSearch    Search specified directory and return a list of directories
          z_FileSearch   Search specified directory/path and return list of matching files
          z_FileExists   Return true/false if file exists (lan check)
          z_FileInfo     Returns file information, size/date....
          z_FileCopy     Copies a file to another file
          z_DelTree      Deletes specified directory w/subdirectories
          z_DirCopy      Same of XCopy
          z_DirMove      Same as XCopy w/Move
          z_SetAttr      Set's file attributes to new attributes
          z_CnvAttr      Convert's internal file's attributes to external

          z_IsAlNum      Returns true if char is alpha-numeric
          z_IsAlpha      Returns true if char is alpha
          z_IsAscii      Returns true if char is ascii
          z_IsCntrl      Returns true if char is control char
          z_IsDigit      Returns true if char is a digit
          z_IsGraph      Returns true if char is graph 
          z_IsLower      Returns true if char is lower-case
          z_IsUpper      Returns true if char is upper-case
          z_IsPrint      Returns true if char is printable
          z_IsPunct      Returns true if char is a punctuation
          z_IsSpace      Returns true if char is a space equivalent
          z_IsHexNm      Returns true if char is a hexadecimal

          z_Grep         Returns true if the specified pattern (starname...) is found in the string
          z_GrepPatVal   Pattern validator/evaluator for above z_Grep function

          z_ExecFile     Execute a program and wait for it's execution

*****     ZiniFile  -    IniFile Replacement Component (16/32Bit)
                         .. (automatically backups INI file)
          {.. Basic Routines Duplicated From TIniClass}
          function    ReadString(const Section, Ident, Default: String):String;
          procedure   WriteString(const Section, Ident, Value: String);
          function    ReadInteger(const Section, Ident: String; Default: LongInt):LongInt;
          procedure   WriteInteger(const Section, Ident: String; Value: LongInt);
          function    ReadBool(const Section, Ident: String; Default: Boolean):Boolean;
          procedure   WriteBool(const Section, Ident: String; Value: Boolean);

          {.. Protection of data}
          procedure Flush;

          {.. Routines To Deal w/Duplicate Indent Values Ex: Device Line SYSTEM.INI}
          procedure   WriteStringCONST(const Section, Ident, Value: String);
          procedure   EraseStringCONST(const Section, Ident, Value: String);
          function    CheckStringCONST(const Section, Ident, Value: String):Boolean;
          procedure   ReadStringCONST(const Section, Ident: String; Strings: TStrings);

          {.. Routines To Deal w/Overall Ini File}
          procedure   ReadSections(Strings: TStrings);
          procedure   ReadSection(const Section: String; Strings: TStrings);
          procedure   ReadSectionValues(const Section: String; Strings: TStrings);
          procedure   EraseSection(const Section: String);

          {.. Restore Initial Backup File To Original State}
          procedure   RestoreFile;

*******************************************************************************
*******************************************************************************

