0

所以我有一个 TDBGrid,它通过 SQL 显示查询的内容。我需要能够只显示在 TCheckListBox 中选择的字段/列。我该如何解决这个问题?

在这种情况下,不应包含“Lengte”字段

4

2 回答 2

1

这些列链接回数据源,因此您可以遍历它们,直到找到所需的列。

  for cnt := 0 to DBGrid1.Columns.Count -1 do
    if DBGrid1.Columns[cnt].FieldName = 'Lengte'
      then DBGrid1.Columns[cnt].Visible := false;
于 2018-10-01T14:05:50.273 回答
0

让它工作!

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;
于 2018-10-01T18:17:44.387 回答