如第三列对应的字段为'custname'

DBGRIDDW.Columns[3].Visible := False;
可以,但如果后来在custname前增加了一列,需改成
DBGRIDDW.Columns[4].Visible := False;
才可以
想要根据该列对应的字段名判断是否显示,如何实现?

解决方案 »

  1.   

    grid名.列名.visuable;
    先把列添加好,就可以改列名了
      

  2.   

    var
      i: integer;
    begin
      For i := 0 to DBGrid1.Columns.Count - 1 do
      begin
        if DBGrid1.Columns[i].FieldName = 'custname' then
          DBGrid1.Columns[i].Visible := False;
        Break;
      end;
    end;
      

  3.   

    darkwowowo(黑暗中呼啸) 
    不太明白你的意思,要怎么写?,字段名是CustName,列名是什么?D5中好像无此属性。
    这样的写法是不正确的
    DBGRIDDW.CustName.Visible := False;
      

  4.   

    呵呵,对不起,说错了,你要先把列添加进去,比如你用了table——dataresouce——dbgrid,把table设一下active,dbgrid就能看到列了,双击一下dbgrid,弹出一个小窗口,右键,选add all field,所有的列就加进去了,列名(Columns[x])不就固定了吗?你要用到哪些列,就把它设为visible,不用的就设为visible:=fales,问题不就解决了吗。
    我的qq:21030822,可以交流一下,我也这几天刚在学。
      

  5.   

    亲爱的darkwowowo(黑暗中呼啸) ,看来你还是没明白我的问题,列已经添加,用Columns[x]的Visible是可以,但x是个变量,在DBGRID中插入其他Field后,X会变的!
      

  6.   

    ccc_wh(cwh) 
    应该就可以了
      

  7.   

    你先把所有的列都添加完了不就不用再添加了吗?x不就固定了吗?然后再用visible来显示想要显示的列。你如果非要插入其他field的话,只能自己写一段程序啦,我可就不会了,呵呵。
      

  8.   

    var
      i: integer;
    begin
      For i := 0 to DBGrid1.Columns.Count - 1 do
      begin
        if DBGrid1.Columns[i].title.caption = 列名 then
          DBGrid1.Columns[i].Visible := False;
        Break;
      end;
    end;