Итак, у меня есть TDBGrid, который отображает содержимое запроса через SQL.Мне нужно иметь возможность показывать только те поля / столбцы, которые выбраны в TCheckListBox.Как мне решить эту проблему?
В этом случае поле 'Lengte' не должно быть включено '
Работай!
var i, j: integer; arrColsToHide: array[0..11] of string; begin // resets all columns to VISIBLE and clears array for i := 0 to 11 do begin arrColsToHide[i]:= ''; dbGridExport.Columns[i+1].Visible:= true; end; // if item is not checked, add it to the array for i := 0 to 11 do if not(clbFieldsToExport.Checked[i]) then arrColsToHide[i]:= clbFieldsToExport.Items.Strings[i]; // compares value of array to fieldname, and hide if same for j := 0 to 11 do begin for i := 1 to dbGridExport.Columns.Count-1 do if dbGridExport.Columns[i].FieldName = arrColsToHide[j] then dbGridExport.Columns[i].Visible := false; end; end;
Столбцы ссылаются на источник данных, поэтому вы можете перебирать их, пока не найдете нужный.
for cnt := 0 to DBGrid1.Columns.Count -1 do if DBGrid1.Columns[cnt].FieldName = 'Lengte' then DBGrid1.Columns[cnt].Visible := false;