TValueListEditor 控件使用方法
CST 2005-07-19
1 文檔目的
1.1 寫作目的
本文簡單介紹了TvalueListEditor控件的基本使用方法。可以使用該控件實現類似DELPHI中OBJECT INSPECTOR的功能。
1.2 備注
下文所有vle爲一個TvalueListEditor對象。
2 簡單操作
操作
代碼
添加個屬性編輯
InsertRow(Field,Value,Append);
刪除一個屬性
DeleteRow(RowIndex);
統計屬性個數
RowCount;
獲得激活的屬性INDEX
Row
定位
根據KEYSTR定位,找到後的位置保存在INDEX中
FindRow(KeyStr,Index);
獲得KEY的內容字符串
skey:=vle.Keys[vle.row];
修改/獲得VALUE的內容字符串
vle.Values[key]:=txtvalue.Text;
屬性值只讀
Vle.ItemProp[I].ReadOnly:=True;
3 數據綁定形式
3.1 數據存儲格式
TvalueListEditor的數據實體是保存在TvalueListEditor對象的Strings成員中,Strings成員是一個Tstring類型對象,通常以TstringList實現。
在TstringList中每個string必須以如下形式存儲:
KeyStr=ValueStr
如果等號沒有找到,整個string會被作爲Value處理,此時Key爲空。
修改GRID內容後,會影響到STRINGS的數據。
3.2 導入導出
TSTRING對象可以將數據導出,函數爲:
SaveToFile和LoadFromFile
4 編輯樣式設置
4.1 KEY字段的樣式
KEY字段(屬性名稱)是4種顯示樣式的組合。
樣式
介紹
KeyEdit
KEY列的內容也可以由用戶修改
KeyAdd
用戶可以添加一個屬性
按INS鍵或者在最後條按DOWN
必須和KEYEDIT配合使用
KeyDelete
用戶可以刪除一個屬性
按DEL鍵(未實現)
KeyUnique
禁止創建重複KEY的屬性
vle.KeyOptions:=[keyUnique, keyEdit, keyAdd] ;
建議使用keyUnique樣式,禁止創建重名的屬性,便于根據KEY定位到值。
當創建重名屬性時會raise一個Exception。
4.2 項目編輯方式
ItemProps.EditStyle屬性決定了編輯的樣式:普通,下拉列表,彈出窗口。
esSimple, esEllipsis, esPickList
4.2.1 下拉列表
先設置某項的ItemProps爲esPickList,然後將一個TstringList對象賦值給ItemProps的PickList成員。該StringList將成爲下拉列表中的選項內容。
ItemProps[I].EditStype:=esPickList;
ItemProps[i].PickList:=TStringList_Object;
其中參數I可以是KEY(STR)也可以是INDEX(INTEGER)。
4.2.2 普通編輯方式
使用Input Mask
ItemProps[I].EditStype:=esSimple;
ItemProps[i].Mask:=StrMaskCharacters;
MASK串的相應功能可以參考HELP。
4.2.3 使用彈出編輯器
ItemProps[i].EditStyle:=esEllipsis;
用戶按下[…]按鈕後會觸發TvalueListEditor的OnEditButtonClick事件。我們可以在此前的OnClick時間中記錄選中的行號:
strGlobalSelKey:=vle.Key(vle.Row);
在事件OnEditButtonClick 中判斷要打開的編輯窗口。爲VLE.STRING每個STRING維護一個TSTRINGLIST,記錄編輯樣式和彈出窗口ID。
1. 根據SWITCH判斷要打開的編輯窗口
2. 將激活的KEY傳遞給編輯窗口
3. 編輯窗口完成編輯後將VLE.VALUE(KEY):=EditValue;保存返回。
(in FormMain Unit)
......
with FormEdit do
begin
key:=FormMain.skey;
Caption:='edit: '+skey ;
ShowModal ;
end;
......
(in FormEditing Unit)
......
formmain.vle.Values[key]:=txtvalue.Text;
self.Close;
......
5 可能會需要用到的一些類型轉換函數
l StrToBool
l StrToDate/StrToDateTime
l StrToFloat
l StrToIntDef
6 小結
本文參考的DELPHI 6的幫助文檔,並簡單描述了TVALUELISTEDITOR的使用方法,研究此控件是爲了在一個DELPHI項目中實現自定義控件的動態編輯。只要對該控件進行一層封裝就可以被自定義的組件所調用。沒有實現的功能爲DELPHI中可以展開的項目。
可以到我的YAHOO公文包下載本文檔的示例。
http://cn.briefcase.yahoo.com/iamcst
歡迎也很感謝大家給我提出寶貴意見。