tags:

views:

46

answers:

2

hi... i have a problem on how to retrieve the items in memo from table into tchecklistbox...before this i do the procedure to insert the items that have been checked into memo in tbl POS_CatBreakDownValue..but now i want to know how to retrieve items from table and automatic check in tchecklistbox...thanks..here my procedure to insert the checklist into memo in table..i hope anyone can help me..thanks

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;
A: 

Not sure I understand your question 100%

TCheckListBox can check or uncheck items using the Checked Property.

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

Since you sound like your comparing strings you may need to determine the index in the TCheckListBox based on the string this can be done like this:

  CheckListBox1.Items.IndexOf('StringToFind')

If the string is not found then the result is -1;

If you want to check lines in a TMemo Control and see if they exists as rows in a table you can do the following.

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;
Robert Love
A: 
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; 

Reading your code I'm guessing you've got a MemoField in a database that you are reading and writing the checked values from/to. You also have a predefined list of checkable items.

So you'll need to create a new string list and read the field back into it (Revesing the writing code). for each item in the list get the Index and check it.

Something like..

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; 
JamesB