怎样动态地显示选中的字段?(100分)

  • 主题发起人 Eilsukce
  • 开始时间
E

Eilsukce

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个通讯录,主要就是简单地对一个表进行操作。有一想法是:设立几个选项,多选选项(checkbox)分别是这个表的字段名,选中的列在用户按下“确定”键后显示出来(本来是想在用户选择之后立即显示,但好像不行,如果要实现的话要怎样做?),没有选中的就不显示。用c++ builder 6里TQuery组件的SQL属性,应该怎样做?谢谢各位了!
 
问题问得不是很清楚
 
这个通讯录主要设计的组件是DBGrid、Tquery、TDataSource、一些checkbox和按钮。
现在主要的问题是,我想实现根据用户的选择,显示用户想要显示的字段。如:用户在“姓名”这个CHECKBOX点击,最后按“确定”按钮,这时在Grid中就只显示“姓名”这个字段,其他的不显示。也可以多选,反正就是选中的字段才显示,没有选中的不显示。发现用Tquery的SQL属性好像实现不了,各位帮帮我吧,谢谢了!
 
DBGrid、Tquery中把全部字段都加上,通过设置DBGrid.Columns[iIndex].Visible属性来控制显示哪些列。你需要自己做一个通过字段名查找对应显示列TColumn的函数。
 
同意楼上的,可以选把所有字段查出来,然后再自己决定显示哪些字段。。
 
我的机子出问题了只能提供建议了.实际代码你自己调试.]
把你checkbox 里选择的项,做为你查询字段名不就可以了.
比如:select 姓名,学好,性别,爱好 from 表名 就一条语句解决问题.
 
1.如果仅仅是不显示,那么完全可以即时变化,TField有一个属性当DataGrid默认形成column的时候可以控制在DataGrid的显示,好像是visible,变通的方法也有很多,比如直接修改DataGrid的Column(现成的第三方就不说了)至于字段名的获取完全可以通过DataSet.Get...(StringList)取得(具体哪个函数忘了,必须在Active的时候)
2.如果是动态生成SQL查询.那么首先可以通过Select * where falseh获得字段名,剩下的好像不用再说了吧
 
我再试一下。
 
To orangutang:DBGrid、Tquery中把全部字段都加上,通过设置DBGrid.Columns[iIndex].Visible属性来控制显示哪些列。你需要自己做一个通过字段名查找对应显示列TColumn的函数。
DBGrid->Columns[iIndex].Visible用代码的话,会出现“Visible非TDBGridColumns的成员”这个错误啊,只能在观察器里面设置Columns[0].visible的值,应该怎么办?
还有,通过字段名查找对应显示列TColumn的函数应该怎样做?
 
我暂时解决了这个问题,就是通过Query1->Fields->Fields[0]->Visible来设置,完全解决了这个问题。但还是要谢谢大家这么热心,分数的话……大家说该怎么给我就怎么给了。还有希望有人能给我解答一下“通过字段名查找对应显示列TColumn的函数应该怎样做”这个问题。
 
TColumn有一个属性FieldName可以用。
 
TColumn中的FieldName只能在观察器里面设置,在代码中没有这个成员啊!
 
TColumn中的FieldName只能在观察器里面设置,在代码中没有这个成员啊!

什么意思
直接用就好了嘛
FieldName["字段名"]
 
不用SQL很轻易的实现,CheckBox在一个窗体上,当选中一个的时候,触发一OnChang事件,在事件里做一个过程,先用循环获得那几个CheckBox被选中,将CheckBox的Caption存入一个变量中,然后在用ADOQuery 写SQL语句 “Select 变量 From 表名”,就OK 了
 
顶部