2013-09-25 33 views
1

在我的軟件中,我使用標準的TCheckListBox,使其在應用程序代碼中感知數據。如何創建數據感知型TCheckListBox?

它正在工作。當我要救,我用這個代碼:

for i := 0 to clbGrp.Items.Count-1 do 
begin 
    if clbGrp.Checked[i] then grp:=grp+'1' else grp:=grp+'0'; 
end; 

i : smallint;grp: string

而當我想說明的形式,我用這個:

var i:smallint; 
begin 
    for i := 0 to clbGrp.Items.Count-1 do clbGrp.Checked[i]:=False; 
    for i := 0 to clbGrp.Items.Count-1 do 
     begin 
     clbGrp.Checked[i]:=StrToBool(Dm.TblFytFytGrup.AsString[i+1]); 
     end; 

這裏是問題。

我需要這個任務,因爲我不想每次都在代碼中執行這種掃描數據行。

所以我想創建這個組件的數據感知版本。

我該如何做到這一點?

我知道存在一些商業組件,但我想學會自己做。

+0

您可以嘗試挖掘示例的VCL代碼。例如,你可以看看'TDBEdit'的實現,因爲你的組件應該鏈接到一個*單列值*,就像編輯組件(而不是鏈接到一個*行集合*,比如' TDBGrid')。 –

回答

1

我知道存在一些商業成分,但我想學會做我。

然後看看Is there a data-aware tab control available?它處理多記錄數據集。

+0

正如你在我的代碼中看到的,我的checklistbox只在一個字段上使用字節值作爲字符串。但感謝提議和虐待嘗試看看它並學習技術。 – ikutluay

+0

我說多記錄,不是多字段。您必須與放置設計時間的選項卡控件上顯示的幾個控件混淆。只有標籤標題由組件管理,就像您的ListBox將爲字符串項目執行的操作一樣。 – NGLN