我有一个关于如何将备忘录中的项目从表格检索到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;
答案 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;