作者:Future Studio.徐景周
版權所有:徐景周
轉載請聯系作者
如果你見過VB中的分類屬性表的話,你一定不會陌生吧!這種屬性表不但美觀,而且十分簡明、易操作。下面有我做的一個類似於這種VB中分類屬性表的控件,例圖如下:
基本構成思想:此控件從ListBox派生,將每一行列表,填充為三列顯示。
其中第一列為分類顯示的位圖所需,第二列為不能編輯的屬性名,第三列為可編輯的按鈕、下拉框、編輯框等。
第一列做更換顯示位圖及展開或收縮其下相關條目使用;第二列顯示創建時的固定屬性名;第三列可根據創建時指定的創建類型,來決定在其中該創建何種控件(按鈕、下拉框、編輯框等)。具體實現方法可參看下載示例中的源碼。
下面我來說說如何在你的工程文件中使用它們:
1、將示例工程中的二個位圖:Expand.bmp和UnExpand.bmp復制到你的工程資源res目錄下,導入它們相應命名為:IDB_PROPERTY_EXPAND和IDB_PROPERTY_UNEXPAND。
2、將示例工程中的控件文件:PropertyList.cpp和PropertyList.h復制到你的工程中,並導入它們。
3、在你的工程文件中相關對話框中新建一ListBox控件,並創建一成員變量m_cList,在頭文件中將其成員變量的派生類從CListBox改為CPropertyList。
4、在上述對話框頭文件中加入#include “PropertyList.h”,在該類中定義變量如下:
CPropertyList* m_pList; //VB屬性表控件
CPropertyItem* m_pClassName; //公用屬性分類名稱
CPropertyItem* m_pName; //名稱
5、在上述該對話框類的初始化對話框OnInitDialog()中,創建其內容,如下:
//初始化VB屬性表控件
m_pList = &m_cList;
//公用屬性,jignzhou xu
m_pClassName = new CPropertyItem("公用屬性","",PIT_EDIT,"",TRUE,TRUE,0);
m_pName = new CPropertyItem("名稱","",PIT_EDIT,"",FALSE,FALSE,0);
6、在上述對話框類中的OnDestroy中,刪除創建的屬性條目,如下:
delete m_pClassName;
delete m_pName;
7、剩下,你就可以從其創建的變量中獲取或設置相應值了,如下:
//賦值給屬性表相應條目
m_pName->m_curValue=pGraph->GetNodeName();
或
//從屬性表相應條目中獲取值
pGraph->NodeName = m_pName->m_curValue