您好我正在构建一个项目,在我执行查询后,我在Twwdbgrid类型的数据网格中显示其结果。我的问题是当我使用过滤功能时,如何通常隐藏此数据网格中的列。
我搜索了很多天互联网,并试图将数据网格或列投射到他们的父母之一 - 他们从中继承 - 以便找到一个"隐藏"或者"启用"属性,但它没有'工作
互联网上的一些人建议使用"选择" Twwdbgrid的财产。但是,这是一个非常复杂的解决方案,特别是当您想要在取消过滤操作后重新显示隐藏列时。所以我想问是否有更灵活,更容易实现的方法来实现这一任务。
提前谢谢
答案 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
个后代Query1Title
,Query1FirstName
,Query1LastName
和Query1PhoneNumber
。
我现在可以通过编写以下代码来切换网格中显示的标题的可见性: -
Query1Title.Visible := Not Query1Title.Visible;