TValueListEditor 控件使用方法

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

歡迎也很感謝大家給我提出寶貴意見。

 
VISUAL C++中的OCX控件的使用方法
新一代32位操作系統WINDOWS 95舍棄了VBX控件,取而代之的是OCX控件。OCX控件具有功能強大,界面美觀的特點,然而許多參考書中並沒有詳細闡述OCX控件的使用方法,使得一些如數據庫表格,遠程數據控件等接口複雜的OCX難...查看完整版>>VISUAL C++中的OCX控件的使用方法
 
IE 控件一些高級使用方法
IE 控件一些高級使用方法 作者: 本文介紹如下內容 1、如何顯示內存中的 HTML 網頁; 2、如何屏蔽掉鼠標右鍵的上下文菜單; 3、如何擴展 HTML 中的腳本(external)對象; ...查看完整版>>IE 控件一些高級使用方法
 
.net控件FreeTextBox使用方法
高手見笑了。我在此網站下載了FreeTextBox 1.6.3 中文版 FreeTextBox 1.6.3 中文版源代碼 1.先把freetextbox.dll添加到項目中2.把 - ftb.colorpicker.aspx - ftb.imagegallery.aspx - ftb.inser...查看完整版>>.net控件FreeTextBox使用方法
 
第三方控件使用方法
不是由BORLAND提供的組件叫第三方組件:安裝方法:就目前常見的各種形式的組件的安裝方法介紹一下。 1 只有一個DCU文件的組件。DCU文件是編譯好的單元文件,這樣的組件是作者不想把源碼公布。一般來說,作者必須說...查看完整版>>第三方控件使用方法
 
VISUAL C++中的OCX控件的使用方法
新一代32位操作系統WINDOWS 95舍棄了VBX控件,取而代之的是OCX控件。OCX控件具有功能強大,界面美觀的特點,然而許多參考書中並沒有詳細闡述OCX控件的使用方法,使得一些如數據庫表格,遠程數據控件等接口複雜的OCX難...查看完整版>>VISUAL C++中的OCX控件的使用方法