如果只想显示的话,可应用TSTRINGGRID或TDRAWGRID。
将数据源中的数据按记录数设置它的列数,然后,在程序中用循环的方法将表中两字段的数据赋上去。

解决方案 »

  1.   

      Delphi的DBGRid支持嵌套的字段显示,如某个字段由其他几个字段组成,但是好象只有Oracle数据库支持嵌套字段,如果你使用的是其他数据库引擎,就不好办了。只有重新定制DBGrid,或者增加一个计算字段,自己负责显示了。
      

  2.   

    929兄真是一句话点醒梦中人,本来我这个程序就只需要显示,用StringGrid的确方便多了,呵呵,只要是数据库,就情不自禁的跟DBGrid联系起来,到把STringGrid这东西给忘了:-)另外,小弟这各标题好像打错了,应该是“一个记录做两行显示”,呵呵,5214:-q
      

  3.   

    不过,还有一点想请教各位:在使用DBGrid时,我要使网格中不同数值的数据以不同的颜色显示,通常只需编写DBGrid的OnDrawColumnCell事件,根据条件更改颜色,然后调用DBGrid的成员函数DefaultDrawColumnCell;
    而在使用StringGrid时,相对应的事件是OnDrawCell,对应的成员函数是DrawCell,但是我查看Grids.pas,发现TStringGrid居然把DrawCell(这是从TDrawGrid继承而来)声明成了protect,所以我无法在OnDrawCell事件响应函数(因为这个函数是Form1的成员)中调用DrawCell。
    当然,要解决这一问题,有很多种方法,例如:不用DrawCell,而用TextRect或其他函数,或者干脆修改Grids.pas,把DrawCell声明成public,编译后再覆盖lib下的Grids.dcu(呵呵,这一招有点绝:-)但是我尝试用这个方法,却好像行不通:定一一个新类TStringGrid0继承TStringGrid,然后为TStringGrid0声明一public的成员函数,在函数中调用DrawCell;即:type TStringGrid0=class(TStringGrid)
      public
        procedure DrawCell0(…………); //参数声明跟DrawCell一样
    end;procedure TStringGrid0.DrawCell0(…………);
    begin
          DrawCell(…………);
    end;//然后更改StringGrid1的定义
    Var StringGrid1:TStringGrid0;再在*.dfm文件中更改
    object StringGrid1:TStringGrid0;从理论上讲,这应该是可以的,因为TForm1就是这样声明的,但是编译的时候提示我StringGrid1的声明错误,是否更正!
    请各位指教,我还疏漏了什么???
      

  4.   

    TStringGrid0没有Register!
    解决方法有两个:
    1、自己编写一个组件并注册;
    2、将Form设计面板上的StringGrid1删掉,在程序运行中动态创建该StringGrid1,注意设置其Parent属性。