1、可以双击dbgrid,然后增加columns,如果你想显示三个字段,就增加三个columns,然后再相应的FieldName添上相关的字段名,程序中控制无非就是用程序把我刚才说的写出来而已
2、动态产生报表的原理和上面一样。
3、这个问题可以用个视图或者自己在查询中设定一个条件即可
////建议看基本的书先

解决方案 »

  1.   

    //==============================================================================
    //DBGrid.Columns[i].Visible*****************************************************
    //==============================================================================
    procedure TForm_Cell.ColumnState(Sender: TObject);
    var i: integer;
    begin
      for i:=1 to DBGrid.Columns.Count do
      if DBGrid.Columns[i-1].Field.DisplayLabel=(Sender as TMenuItem).Caption
      then begin
             (Sender as TMenuItem).Checked := not (Sender as TMenuItem).Checked;
             DBGrid.Columns[i-1].Visible := (Sender as TMenuItem).Checked;
             Break;
           end;
    end;动态创建菜单
      ColumnToMenuItem(DBGrid, N_ColState);
      for i:=1 to DBGrid.Columns.Count do N_ColState.Items[i-1].OnClick := ColumnState;
      

  2.   

    1已经没问题了3。将两个表中的内容放在一个报表中显示,字段相同的和字段不同的,应该如何解决?
    使用select a.字段,B.字段 from tbl1,tbl2 where 条件变成一个表
      

  3.   

    1、可以双击dbgrid,然后增加columns,如果你想显示三个字段,就增加三个columns,然后再相应的FieldName添上相关的字段名,然后设置Caption为你想要的列名。
    2、Query,设置sql将两个表合并,再按以上方法加列名
      

  4.   

    select a.字段 as aa,B.字段 as bb from tbl1,tbl2 where 条件
      

  5.   

    1、你可以让列不显示出来DBGrid.Columns[i].visible:=false;
    2、你可将该表的所有字段显示在一个StringGrid中,然后将要打印的选中添加到一个新的打印表中,即可实现。