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.