CTreePropertySheet
This class implements a generic tree property control (see picture above).
Its features are:
– Supports variable width tree control
– Autosizing depending on the size of the dialogs contained
– As this version is now based upon the CPropertySheet/ CPropertyPage model, all
features of these are available.
– Various styles(for example, like Netscape Communicator’s property sheet)
– Extensibility: Allows to integrate user defined controls (like buttons or static
text boxes) and easily position them.
– Now supports modeless property sheets as well.
How to implement a CTreePropertySheet in your application:
Step 1.
Insert “TreePropertySheet.cpp” to your application.
Step 2.
Insert an
#include “TreePropertySheet.h”
in the class implementation
file in which you want to use the CTreePropertySheet.
Step 3.
Define a function which invokes the property sheet, for example:
void CMyView::OnPropertySheet()
{
// TODO: …
}
Step 4.
Create a CTreePropertySheet object in the handler and the property pages you
want to use with CTreePropertySheet:
…
CTreePropertySheet tpsSheet;
CGeneralPrefsPage cGeneralPrefs;
COtherPrefsPage cOtherPrefs;
// All dialogs contained in the property sheet must (now) be allocated from the stack.
Caution: To make it work, the dialogs you want to include must have the following
style:
– Style: ‘Child’
– Border: None
– Caption: Yes
– Set the caption to the text you wish to appear when the page is selected.
– All other options must be unchecked.
Step 5.
Add the dialogs to the tree property sheet:
…
tpsSheet.AddPage(tps_item_node,&cGeneralPrefs);
tpsSheet.AddPage(tps_item_node,&cOtherPrefs);
You have to specify the resource ID when adding the dialog. The text argument
is the title shown up in the tree control, ‘tps_item_node’ tells that this is
a simple node in the tree.
(See below for more information)
Step 6.
Start the property sheet:
…
int nRetCode=tpsSheet.DoModal();
…
Optionally, you can set a special pre-defined style before
DoModal():
…
tpsSheet.SetLikeNetscape();
int nRetCode=tpsSheet.DoModal();
…
Remarks
To set up the tree structure, there are three different attributes for ‘AddPage()’:
tps_item_branch |
This item has sub-items. All following items are one level below this item, until a ‘tps_item_endbranch’ is found. |
tps_item_node | This item is a simple node in the tree. |
tps_item_endbranch |
This item is the last item of the current sub-branch(which was initiated with an tps_item_branch). All following items are on the same level as the corresponding ‘tps_item_branch’ entry. |
To make it clearer, please take a look at the table below:
(code) | |
AddPage(tps_item_branch, &cMainPrefsPage); | |
AddPage(tps_item_node, &cDirectoriesPage); | |
AddPage(tps_item_node, &cUserPage); | |
AddPage(tps_item_endbranch, &cPluginPage); | |
AddPage(tps_item_node, &cSecurityPage); |
If you want to enhance the CTreePropertySheet by own controls or buttons,
this can be done using InsertExtraControl() / InsertExtraSpace().
For more information about these functions, please take a look into the HTML help file(see below) and into
the example project.
Downloads
Download source – 14 KB
These files can also be downloaded at
http://members.xoom.com/softserv/tps_index.html