Hi,
This is because a CSV file will always be string based. So True and False are actually just the strings and not the boolean value. You can actually use the following code to loop through the cells afterwards and turn them into booleans
Grid1.LoadFromCSVStream(ms);
for C := Grid1.FixedColumns to Grid1.ColumnCount - 1 do
begin
for R := Grid1.FixedRows to Grid1.RowCount - 1 do
begin
s := Grid1.Cells[C, R];
if (UpperCase(s) = 'TRUE') or (UpperCase(s) = 'FALSE') then
begin
Grid1.Cells[C, R] := '';
Grid1.Booleans[C, R] := StrToBool(s);
end;
end;
end;