在Twwdbgrid中隐藏列 - Delphi 7& Infopower 2000

时间:2014-06-24 10:05:41

标签: delphi datagrid

您好我正在构建一个项目,在我执行查询后,我在Twwdbgrid类型的数据网格中显示其结果。我的问题是当我使用过滤功能时,如何通常隐藏此数据网格中的列。

我搜索了很多天互联网,并试图将数据网格或列投射到他们的父母之一 - 他们从中继承 - 以便找到一个"隐藏"或者"启用"属性,但它没有'工作

互联网上的一些人建议使用"选择" Twwdbgrid的财产。但是,这是一个非常复杂的解决方案,特别是当您想要在取消过滤操作后重新显示隐藏列时。所以我想问是否有更灵活,更容易实现的方法来实现这一任务。

提前谢谢

2 个答案:

答案 0 :(得分:0)

如果更改显示的列的最佳方法是使用TwwDBGrid Selected属性,如下所示:

  // Clear the Columns
  grid.Selected.Clear;
  // Add the Columns you want shown
  // Selected.Add is a #9 (tab) delimited string with 3 to 4 parts
  //   First is the database column name
  //   Second is the column display size
  //   Third is the column heading (if multi-row heading you can use ~ to as a line break)
  //   Forth value Read-Only and is optional, it defaults to F (false)
  // Add a read-only column
  grid.Selected.Add('Field1'#9'10'#9'Column Heading 1'#9'T');
  grid.Selected.Add('Field2'#9'10'#9'Column~Heading~2'#9'T');

  // If you do not want a column, do not add it to the Selected list
  if ShowThisColumn then
   grid.Selected.Add('Field3'#9'10'#9'Column Heading 3')

  // You can also control/change the column types
  if ShowThisColumnAsACheckBox then
   begin
    grid.SetControlType('Field4', fctCheckBox, 'True;False');
    grid.Selected.Add('Field4'#9'10'#9'Column Heading 4');
   end;

  // Add a NOT read-only column
  grid.Selected.Add('Field5'#9'10'#9'Column Heading 5');

  // Then apply the selected column changes
  grid.ApplySelected;

答案 1 :(得分:0)

正如我在评论中提到的,您可以将网格的UseTFields属性设置为True,然后使用TField Visible属性来控制其在网格中的显示。 / p>

例如,假设我有一个与Title,Firstname,LastName和Phonenumber的联系人表。

我的查询的SQLText属性设置为Select * From Contacts;

我在设计时右键单击我的查询,然后选择“添加所有字段”。

我现在有4个TField个后代Query1TitleQuery1FirstNameQuery1LastNameQuery1PhoneNumber

我现在可以通过编写以下代码来切换网格中显示的标题的可见性: -

Query1Title.Visible := Not Query1Title.Visible;