请教一下dbgrid列的显示和隐藏问题!
大家好,我有两个表,A表
biao ziduan visible
进货单 yjmc true
进货单 yjxh true
进货单 danwei false
销售单 yjmc false
...
B表在dbgrid中显示,
biao yjmc yjxh danwei 。。
进货单 啤酒 5 斤
进货单 酒类 6 斤
请问一下,A表字段visible为true的时候,怎么把B表中的yjmc,yjxh这两列在dbgrid中隐藏!谢谢拉!
问题点数:50、回复次数:10Top
1 楼scu96124678(冰河)回复于 2002-11-21 16:12:08 得分 0
dbgrid1.Columns[i].VisibleTop
2 楼delphichuxue(delphi)回复于 2002-11-21 16:14:03 得分 0
谢谢!能不能说详细点呀,我也知道是dbgrid.columns[i].visble呀!Top
3 楼mrfanghansheng(☆☆☆木鱼☆☆☆)回复于 2002-11-21 17:06:04 得分 25
加一个Tadoquery组件,窗体show的时候加入下面的代码
adoquery1.close;
adoquery1.SQL.clear;
adoquery1.SQL.add('select * from a');
adoquery1.open;
for i:=0 to dbgrid1.Columns.Count-1
begin
adoquery1.Locate('ziduan',dbgrid1.Columns[i].Field.Name,[loPartialKey]);
if adoquery1.FieldByName('visible').value then
dbgrid1.Columns[i].Visible:=true
else
dbgrid1.Columns[i].Visible:=false;
end;
Top
4 楼delphichuxue(delphi)回复于 2002-11-21 17:29:04 得分 0
mrfanghansheng你好呀,没有反映呀!这样不行的。能不能在帮我看看!Top
5 楼mc43(火猴)回复于 2002-11-21 17:44:10 得分 0
dbgrid.Columns[i].Visible:=False;
或者动态生成SQL语句
Top
6 楼xml1123(明)回复于 2002-11-21 17:56:41 得分 25
procedure SetDataSetFieldVisible(CurDataSet: TDataSet; sField: String; Visible: Boolean);
Var
j: Integer;
begin
try
for j:=0 to CurDataSet.FieldCount-1 do
if UpperCase(CurDataSet.Fields[j].FieldName)= UpperCase(sField) then
begin
CurDataSet.FieldByName(sField).Visible:= Visible;
break;
end;
except
end;
end;Top
7 楼fongming()回复于 2002-11-21 20:59:14 得分 0
upTop
8 楼delphichuxue(delphi)回复于 2002-11-22 15:34:54 得分 0
up!大家好呀!不行呀!我这样写为什么不行,因为我A表中包含有程序中全部的字段!
var
i :integer;
begin
for i:=0 to dbgrid.Columns.Count-1 do
begin
with adoquery2 do
begin
close;
sql.Clear;
sql.Add('select * from visible where biao=''jhmx''');
open;
with adoquery2 do
begin
close;
sql.clear;
sql.add('select * from jhmx')
open
end;
//先从表visible中找出ttt这个字段,在看看ziduan这个字段的数据是否和dbgrid的字段一样。如果是就隐藏,可这样为什么没有显示?
if adoquery1.fieldbyname('ttt').AsBoolean=true then
and (adoquery1.fieldbyname('ziduan').AsString=dbgrid1.Columns[i].FieldName) then
begin
dbgrid1.Columns[i].Visible:=false;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from jhmx');
open;
end;
end;
这样为什么没有隐藏?快来帮忙呀,各位,这个问题没有解决,自定义报表没有办法做呀!Top
9 楼zhangweibase(小马的拳)回复于 2002-11-22 17:15:01 得分 0
大哥,不要慌,小弟来也。
设计程序时,双击DBGrid组件,出现对话框,填加要显示的单元,并将每个单元与数据库的字段连接,用时,将对应的单元dbgrid1.Columns[i].Visible设置为真或假就可以了。希望给我5分。Top
10 楼delphichuxue(delphi)回复于 2002-11-22 23:07:17 得分 0
不是5分的问题呀,如果这个问题帮我解决了,我可用分全送都可以呀!可是上面所说的,都没有点到骨子里面,或者小弟太笨!看不懂!帮帮忙呀各位!Top
相关问题
- 我用的是Table和DBGrid,请问如何隐藏一列数据,使其不在DBGrid中显示出来?再请问如何隐藏DBGrid中横向的滚动条?
- DataGrid数据列显示/隐藏问题!!!
- DataGrid数据列显示 / 隐藏问题!!!
- 我在ADOTABLE+DBGRID中用ADOTABLE.FIELD[0].VISIBLE:=FALSE;来隐藏第一列,但是我现在要恢复显示第一列.怎么做呢?
- 如何隐藏DBGrid中的几个列(不是删除)?
- 请问怎么样隐藏dbgrid的一列?
- INFORPOWER中的WWDBGRID如何动态隐藏和显示某一列
- 如何用程序隐藏和显示DataGrid中的一列
- 显示、隐藏DATAGRIDE的COLUMN列的小问题。
- 如何隐藏/显示StringGrid中的某一列




