Отображать только поля, выбранные в TCheckListBox в DBGrid через SQL - PullRequest
0 голосов
/ 01 октября 2018

Итак, у меня есть TDBGrid, который отображает содержимое запроса через SQL.Мне нужно иметь возможность показывать только те поля / столбцы, которые выбраны в TCheckListBox.Как мне решить эту проблему?

В этом случае поле 'Lengte' не должно быть включено '

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Работай!

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;
0 голосов
/ 01 октября 2018

Столбцы ссылаются на источник данных, поэтому вы можете перебирать их, пока не найдете нужный.

  for cnt := 0 to DBGrid1.Columns.Count -1 do
    if DBGrid1.Columns[cnt].FieldName = 'Lengte'
      then DBGrid1.Columns[cnt].Visible := false;
...