Upgrading from SimTabTree? Take a look at
        this FAQ 
      
      
     
    Introduction
     TabTree allows you to add a Sheet-Management control
      to a window. It creates a list of all the tabs in a list box. You can then
      navigate between tabs using either the keyboard or mouse and the list
      itself. 
      
      This approach is especially useful on windows where the sheet control
      contains many tabs, so many that the sheet control "overflows". It's also
      very useful on windows where you have Sheet Controls on another tab. By
      presenting the tab list as a tree, the layout of the window becomes a lot
      simpler. 
    Features:
    
      
        - User friendly and modern looking tab selection.
- Handles nested Sheet controls (i.e. sheets on tabs).
- Allows you to set the Sheet as Wizard and/or NoSheet at runtime -
          thus making design easier.
- Tree selection matches tab selection (where tabs are
          programmatically selected).
- Multiple TabTree controls on each window.
- Automatically scans all the Sheet and Tab properties and builds the
          list appropriately.
- Supports Single EXE and Multi-DLL.
 
     
    Jump Start
    
      
        - Open your application in the Clarion IDE.
- Add the Activate CapeSoft TabTree Global
          Extension template to your application. To do this, Click on Global,
          then Extensions, then Insert,
          scroll down to the Class TabTree templates
          and double-click on the Activate CapeSoft TabTree
          template.
- Now open the window containing a sheet that you want to replace with
          the TabTree list, and proceed to the window formatter.
- Make some space in your window for the TabTree list box (usually on
          the left).
- Place the TabTree control template on your window. To do this, from
          the Populate menu, select Control
            Template... and select the SimTree
          control template from the Class SimTabTreeControl items. You don't
          need to select a Queue in the From field - and if Clarion prompts you
          for one, simply click the cancel button.
      If you are adding this to a MultiDLL application, then follow the steps in
      the 
Multi-DLL section of this document. 
 
    The TabTree Templates
    
      
      The Global Extension Template
        
        
          - Click the Disable all TabTree features
            checkbox to disable TabTree globally. This is useful for debugging -
            if you suspect that TabTree is causing problems in your application
            (compile or otherwise).
 
        
          - The Icons group is used to specify
            icons used by default for the items in the tab tree lists throughout
            your application.
            - The Header Icon is used to show sheet
              entries in the tab list
- The Header Disabled Icon is used to
              show sheet entries (or tabs with sheets on them) that are
              disabled.
- The Branch Icon is used to show
              selectable tabs
- The Branch Disabled Icon is used to
              show tabs that are disabled.
- The Selected Icon is used to show the
              tab that is currently selected.
- The Listbox Line Height is used to
            globally set the listbox lineheight. If KeepingTabs or Makeover is
            added to this application, then this entry field will not be
            available.
- INIMgr.Fetch returns a value is used for
            compatibility with old INI Managers, and is not usually on for
            modern Clarion versions.
- Apply Wizard/Nosheet to Selected Sheet If this is
            on and a TabTree control has either the Set Prop:wizard or Set
            prop:Nosheet set, and no sheets are selected in Sheet Selection,
            then the prop:Wizard and/or prop:Nosheet will be applied to the
            Sheet Control (as set on the General tab for that TabTree control.)
            This global option exists for backward compatibility - if you
            specifically don't want he control to be a Wizard etc then tick this
            option off.
 
        
          - This is part of a Multi-DLL program: If this app
            is part of a Multi-App system (ie where you are creating your own
            DLL's from multiple apps) then tick this option on. Do this for all
            DLL apps and EXE apps in the system.
- Export TabTree Class from this DLL: If the above
            option is on, then in the Data DLL(*) (and only the Data DLL) turn
            this option on. The Data DLL is the one that exports all your file
            declarations. 
 
 (*) Advanced: You can export the class from any of your DLL's - it
            doesn't have to be the Data DLL. However any other app that contains
            the TabTree control needs to link in whichever DLL is exporting the
            class. The simplest approach is to put it in the Data DLL, but it is
            possible to use a different DLL.
 
        
          - The classes tab allows you to inspect, and refresh the classes
            automatically read in from the TabTree.Inc file. The Class version
            is the date of the last read.
 
      TabTree Control Template
      
     
    Using TabTree in Multi-DLL applications
     In your Data-DLL:
      
        - Add the TabTree Global Extension template
- On the Multi-DLL Tab turn on both options..
      In your other applications (that require the use of TabTree in that
      application) including DLL's and EXE's:
      
        - Add the TabTree Global Extension template
- On the Multi-DLL Tab turn on ONLY the first option.
TabTree Frequently Asked Questions
    Check out general product 
        CompilerErrors.
    
      Runtime Problems
      
      Feature Questions
      
      Upgrading Issues 
      
       1.1) I have a contract box on my
        root - but it won't contract the list?  
      
      This is unfortunately a limitation of Clarion (as of writing - C6 9058).
      You will need to switch to using a root (see the 
template
        section) which will not have the contract box. 
      
      
 2.1) How do I change the icons?
        
       In the Global extension you can choose which icons to use for the
      tree. At the local level you can override the icons for any one TabTree
      control. 
      
      
 2.2) How do I Hand Code TabTree,
        do you support hand coding without templates? 
      
      TabTree, like almost all of our products, is straight forward to hand
      code. We recommend using the template as a "quick start" for hand coding,
      as they generate the project and basic code for you:
      
        - Create a new empty application. This can be ABC or Legacy.
- Add the TabTree global extension, and add a window with one or more
          Tab controls (you can import a window from an actual application,
          which can be helpful).
- Add the TabTree local extension.
- Generate the application
      This provides you with the basic code that you need to use TabTree, and
      you can export the Project file from the application in order to see what
      needs to be added to your Project. This approach in very helpful for using
      any of the CapeSoft templates in a hand coded application, and allows you
      to use the templates and generator to build the basic code for you. The
      code can then be copied and pasted into your hand coded applications and
      modified as needed. 
      
      
 3.1) How much does it cost to
        update to the latest version of TabTree from previous versions? 
      
      It is CapeSoft's policy not to charge for updates for as long as we can,
      so typically you can upgrade to the latest release of TabTree from any
      previous version for free. Visit the CapeSoft web site at 
www.capesoft.com
      to get the latest version.
      
      
3.2) How do I upgrade from
        SimTabTree to TabTree? 
      
      You must only add the TabTree global extension to your application. The
      other settings will remain consistent from the SimTabTree local extension
      template.
 
    Support
     Your questions, comments and suggestions are welcome.
      See our web page (
www.capesoft.com)
      for new versions. You can also contact us in one of the following ways:
      
        
          
            | CapeSoft Support | 
          
            | Email |   | 
          
            | Telephone | +27 87 828 0123 | 
          
            | Fax | +27 21 715 2535 | 
          
            | Post | PO Box 511, Plumstead, 7801, Cape Town, South Africa | 
        
      
      
      
        
          
            | CapeSoft Sales | 
          
            | Web | www.capesoft.com | 
          
            | Email |  | 
          
            | Telephone | +27 87 828 0123 | 
          
            | Fax | +27 21 715 2535 | 
          
            | Post | PO Box 511, Plumstead, 7801, Cape Town, South Africa | 
        
      
      
      
    Installation
     Run the supplied installation file. 
    Distribution
     TabTree is supplied as source and compiled into your
      application, you do not need to ship additional files. 
    Examples
    
      
Notes on getting started.
      Start Here 
      
      There is an example in your
        \Clarion\3rdParty\Examples\TabTree\ directory. The examples are
      a great way to get started and see a few of the ways you can use CapeSoft
      TabTree. 
    License & Copyright
     This template is copyright © 2025 by CapeSoft
      Software. None of the included files may be distributed. Your programs
      which use TabTree can be distributed without any TabTree royalties.
      
      Each developer needs his own license to use TabTree. (Need to 
buy more licenses?) 
      
      This product is provided as-is. CapeSoft Software and CapeSoft Electronics
      (collectively trading as CapeSoft), their employees and dealers explicitly
      accept no liability for any loss or damages which may occur from using
      this package. Use of this package constitutes agreement with this license.
      This package is used entirely at your own risk. 
      
      Use of this product implies your acceptance of this, along with the
      recognition of the copyright stated above. In no way will CapeSoft , their
      employees or affiliates be liable in any way for any damages or business
      losses you may incur as a direct or indirect result of using this product.
      
      For the full EULA see 
https://capesoft.com/eula.htmlVersion History
     Download latest version 
here
      
      
      Version 2.22 (27 May 2025) 
      
        - Add: Clarion 12 to install.
Version 2.21 (25 May 2021)
        - Add: Clarion 11.1 to install.
Version 2.20 (18 Sept 2018)
        - Add: Clarion 11 to install.
Version 2.19(27 June 2016)
        - Fix: In Clarion 10, in the Window Designer, the Sheet list (for
          Sheet Control setting) could be blank.
Version 2.18( 1 June 2015)
        - Moved PrepareAlerts code.
- Moved bumpup test in SetSheetProps
Version 2.17( 25 February 2015)
      
      Version 2.16 (3 February 2014)
      
      Version 2.15 (13 September 2013)
        - Add: Wizard and NoSheet properties for all primary Sheet controls
          can be set from Global extension.
- Add: Activate Auto Tab Trees Global Extension.
- Change: Default Header changed from "Select From" to blank.
- Change: Default "Make List Not Tree" changed from 0 to 1
- Change: Default for "Set Prop Wizard" changed from 0 to 1
- Change: When control template is populated onto a window, it
          populates to a default spot (it can be moved and resized after that.)
- Fix: If Column Header is completely blank (no empty quotes) then a
          compile error occurs.
- Update: Documentation updated.
- Add ControlWidth and ControlOffset properties to class.
- Add: Init, SetSheetProps, SetWindow and _BumpChildren methods to
          class.
Version 2.14 (1 May 2013)
        - Build for Clarion 9
- Link attribute added to class, name attribute removed from the _Look
          method
Version 2.13 (14 March 2013)
        - Changed to Ver4 object/template management system. IMPORTANT
           READ
              THIS.
- Add: support for Multi-Proj in C8
Version 2.12 (25 January 2013)
        - Fix: Added Trace method to Export list.
Version 2.11 (23 January 2013)
        - Add: Trace method to class
- Fix: Removed variable ds which was being declared in the CLW module.
Version 2.10 (28 June 2010)
        - Move RebuildTabTreeQueue to PrepareAlerts (for both ABC and legacy).
- Global check in template to switch INIMgr return on or off.
- Remember tab turns KeepingTabs off (otherwise conflict).
- Class change - if Select pos is blank, then get the legal tab
          (rather than self.selected, which might not be legal anymore).
Version 2.09 (25 November 2008)
        - Clarion 7 support for #pdefine (was not adding the project define
          automatically in Clarion 7).
Version 2.07 (10 November 2008)
        - Clarion 7 compatible install.
- New methods: Next and Previous make programmatic navigation easier.
          Use the WrapAround parameter to generate a continuous Next/Previous.
Version 2.06 (11 July 2008)
        - Template fix - regression in 2.04. Removed superfluous reference to
          removed template variables.
Version 2.05 (8 July 2008)
        - Template fix - regression in 2.04. Removed superfluous reference to
          removed template variables.
Version 2.04 (17 June 2008)
        - Fix for contract box in the root of the tree (requires a root for
          the tree in the control template prompts).
- Removed NoLines and NoBoxes superfluous tree options from the
          control template options.
- Improved FAQ documentation.
Version 2.03 (3 June 2008)
        - Fix for legacy Multi-DLL applications. Compile error exporting the
          _Look function of the TabTree class.
Version 2.02 (28 May 2008)
        - Fix for legacy applications - syntax error in the template.
- Legacy applications - stores the tab selected in an INI file.
Version 2.01 (26 May 2008)
        - Include old SimTabTree icons in the install.
Version 2.00 (21 May 2008)