从表POS_CatBreakDownValue中将备忘录中的字符串列表项检索到tchecklistbox中

时间:2010-06-24 09:23:19

标签: delphi

我有一个关于如何将备忘录中的项目从表格检索到tchecklistbox的问题...在此之前我执行的程序将已经检查过的项目插入tbl中的备忘录POS_CatBreakDownValue ..但现在我想知道如何从表中检索项目并自动检查tchecklistbox ...谢谢..我的程序将清单插入表中的备忘录..我希望任何人都可以帮助我...谢谢

procedure TfrmSysConfig.saveCatBreakDownValue;   
var  
 lstCat:TStringList;                                                                       
 i     :integer;  
begin  
  lstcat := TStringList.Create;  
  try   
   for i:=0 to clCat.Items.Count-1 do begin  
     if clCat.Checked[i] then begin  
       lstcat.Add(clcat.Items.Strings[i]);  
     end;  
   end;  
   tblMainPOS_CatBreakDownValue.Value := lstCat.Text;  
  finally  
  lstcat.Free;  
  end;  
end;

2 个答案:

答案 0 :(得分:0)

不确定我理解你的问题100%

TCheckListBox可以使用Checked属性检查或取消选中项目。

  CheckListBox.Checked[Index] := True/False;

由于您听起来像是比较字符串,您可能需要根据字符串确定TCheckListBox中的索引,这可以这样做:

  CheckListBox1.Items.IndexOf('StringToFind')

如果找不到字符串,则结果为-1;

如果要检查TMemo控件中的行并查看它们是否作为表中的行存在,您可以执行以下操作。

While not Table.EOF do
begin
  if Memo1.lines.IndexOf(Table.FieldByName('MyField').AsString) = -1 then
  begin
   // What you want to do if not found
  end
  else
  begin
   // what you want to do if it is found.
  end;
  Table.Next;
end;

答案 1 :(得分:0)

procedure TfrmSysConfig.saveCatBreakDownValue;
var 
    lstCat: TStringList;
    i:integer;
begin
    lstcat := TStringList.Create;
    try
        for i:=0 to clCat.Items.Count-1 do begin
            if clCat.Checked[i] then begin
                lstcat.Add(clcat.Items.Strings[i]);
            end;
        end;
        tblMainPOS_CatBreakDownValue.Value := lstCat.Text;
    finally
        lstcat.Free;
    end;
end; 

阅读你的代码我猜你在数据库中有一个MemoField,你正在读取和写入检查值。您还有一个预定义的可检查项目列表。

因此,您需要创建一个新的字符串列表并将该字段读回其中(Revesing the writing code)。对于列表中的每个项目,获取索引并进行检查。

像...这样的东西。

procedure TfrmSysConfig.saveCatBreakDownValue;
var 
    lstCat: TStringList;
    i, Index:integer;
begin
    lstcat := TStringList.Create;
    try
        lstcat.Text = tblMainPOS_CatBreakDownValue.Value;
        for i:=0 to lstcat.Count-1 do 
        begin
            Index := clCat.Items.IndexOf(lstcat.Items[i]) 
            if Index > -1 then 
            begin
                clCat.Checked[Index] := True;
            end;
        end;
    finally
        lstcat.Free;
    end;
end;