Property Listbox
Environment: Visual C++ 6 SP4
About
This article describes a Property List Box. This kind of list box is used by several IDE's such as VB to set properties for controls. I wrote this originally for a custom Java IDE that I have been developing. Like the property boxes used by apps. like VB, the control (such as a combo box) that is associated with a property is only displayed when the user click on the property's row.
With the list box you can specify each property row to contain either an edit box, a combo box, an RBG color value, a font name, or a file name. When the user wants to specify a color, font, or file name, the appropriate common dialog is displayed.
The property list box even allows the user to resize the columns!
Adding a CPropertyList box to a dialog
- Add the files ProperyList.h and PropertyList.cpp to your project.
- Add a list box to the dialog in which you wish to place a property list box.
- Set the properties for the list box to:
- Selection: Single
- Owner Draw: Variable
- Check the 'Has Strings' box and Uncheck the 'Sort' box
- Using the ClassWizard add a CPropertyList member variable for the list box. If you don't see a choice called CPropertyList, then select CListBox instead, and then manually edit the dialog class and set the variable to type CPropertyList.
- Include the file "PropertyList.h" in your dialog class.
Using the CPropertyList box
- Create an object of type CPropertyItem. The constructor syntax is as follows:
CPropertyItem(CString propName, CString curValue, int nItemType, CString cmbItems)where- propName is a name for the property and is displayed in the first column
- curValue is the initial value for the property
- nItemType is either
- PIT_COMBO (combo box control)
- PIT_EDIT (edit box control)
- PIT_COLOR (color chooser)
- PIT_FONT (font selector)
- PIT_FILE (file chooser)
- cmbItems are the combo items if nItemType is set to PIT_COMBO, e.g., "TRUE|FALSE|".
- Add the CPropertyItem object to the CPropertyList box using the AddPropItem method:
int AddPropItem(CPropertyItem* pItem);
Examples:
The following lines add a property of each type to a CPropertyList box (m_propList).
//Add an edit box for a property called 'ToolTip Text'
CPropertyItem* propItem1 =
new CPropertyItem("ToolTip Text","",PIT_EDIT,"");
m_propList.AddPropItem(propItem1);
//Add a combo box with the choices 'true' and 'false'
//for a property called 'Enabled'
CPropertyItem* propItem2 =
new CPropertyItem("Enabled","true",PIT_COMBO,"true|false|");
m_propList.AddPropItem(propItem2);
//Add a color chooser for a property called 'Back. Color'
CPropertyItem* propItem3 =
new CPropertyItem("Back. Color","",PIT_COLOR,"");
m_propList.AddPropItem(propItem3);
//Add a file chooser for a property called 'File Name'
CPropertyItem* propItem4 =
new CPropertyItem("File Name","",PIT_FILE,"");
m_propList.AddPropItem(propItem4);
//Add a font chooser for a property called 'Font'
CPropertyItem* propItem5 = new CPropertyItem("Font","",PIT_FONT,"");
m_propList.AddPropItem(propItem5);
That's it. Download the project file to see a working example. The source for the CPropertyList class contains additional documentation pertaining to the code.
Downloads
Download demo project - 25 KbDownload source - 5 Kb

Comments
Helluva good job!
Posted by manudino on 06/02/2005 08:46amExcellent job with very few lines of code!
Replyhelp me!
Posted by Legacy on 01/08/2004 12:00amOriginally posted by: shanmukh
pls i want these files code
#define PIT_COMBO 0 //PIT = property item type
#define PIT_EDIT 1
#define PIT_COLOR 2
#define PIT_FONT 3
#define PIT_FILE 4
#define IDC_PROPCMBBOX 712
Reply#define IDC_PROPEDITBOX 713
#define IDC_PROPBTNCTRL 714
thanking u,
shanmukh
How to get the data from editable cell
Posted by Legacy on 05/13/2003 12:00amOriginally posted by: Tim Guo
Who can advicse me how to get the data from editable cell on this page, I wamt to use this property page as input window.
Thanks very much
Tim
ReplyBug found, and here is my solution.
Posted by Legacy on 12/22/2002 12:00amOriginally posted by: ruxming
ReplyA few nice changes
Posted by Legacy on 11/26/2002 12:00amOriginally posted by: Philippe Dykmans
ReplyIt can't be used in pocket PC environment
Posted by Legacy on 10/23/2002 12:00amOriginally posted by: Sky Sapphire
When I used it (just showing text), it gives me a blank rect.
ReplyHow can I enable and disable items
Posted by Legacy on 06/18/2002 12:00amOriginally posted by: Thomas
First of all, it's a very good work... i've saved a lot of time with this code.
ReplyCould somebody tell me how i can enable and disable some items in a proplist?
No OnKillFocus for ComboBox with DropDown Style
Posted by Legacy on 05/23/2002 12:00amOriginally posted by: Burkhard
Hi,
first thanks for you work. It helped me to implement my own PropertyControl.
ReplyI've one problem with a CCombobox using DropDown Style (editable text). For this control the OnKillFocus will not be called as expected.
I hide my controls on OnVScroll message. Before this the framework calls normlay OnKillFocus so I can read the changings. This works for CEdit and CComboBox with DropDownList Style, but not for DropDown Style.
Has anyone an idea?
How can I reach the edit fields with the tab key (tab stop)
Posted by Legacy on 11/05/2001 12:00amOriginally posted by: Keivan
Hi,
thank you for your Code.
I want to reach every edit field with the tab stop. How is it possible? (Till now I must click with the mouse on every field. It is not comfortable)
Thank you again for your help.
Keivan
ReplyHow can I add an horizontal scrollbar to it.
Posted by Legacy on 10/18/2001 12:00amOriginally posted by: Dan
Hi , your code is great and saved me a lot of time.
Do you know how can I add an horizontal scrollbar for a long text properties ?
10x
Reply
Loading, Please Wait ...