现在用一个DataModules窗口把所有的ADO数据库组件都放在这里。
自己另建一个新FORM
放DBGrid组件。我如何调用DM中的ADOTable呢?
如何才能让DBGrid 显示我想的数据呢?
dm_main.pas
unit dm_main;interfaceuses
  SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
  Dialogs, DBTables, DB, ADODB;type
  TDM = class(TDataModule)
    ADOConn_RD: TADOConnection;
    DS_FormTzd: TADODataSet;
    FormTzd: TDataSource;
    procedure LineItemsCalcFields(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  DM: TDM;implementation{$R *.dfm}procedure TDM.LineItemsCalcFields(DataSet: TDataSet);
begin
  LineItemsExtendedPrice.Value := LineItemsPrice.Value *
    ((100 - LineItemsDiscount.Value) / 100);
  LineItemsTotal.Value := LineItemsExtendedPrice.Value *
    LineItemsQty.Value;
end;end.
tzd.pas
unit tzd;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, Grids, DBGrids;type
  TFormTzd = class(TForm)
    DBGrid1: TDBGrid;
    PopupMenu1: TPopupMenu;
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  FormTzd: TFormTzd;implementationuses dm_main,main, DS_FormTzd;{$R *.dfm}end.我现在tzd.pas的代码应如何写?

解决方案 »

  1.   

    DBGrid1.datasource := dm_main.FormTzd
      

  2.   

    加一个datasource,dbgrid 的 datasource 属性指向这个 datasource,然后在form的单元 uses 那个 DataModules 单元,然后将datasource的dataset属性指向 DataModules 中的 adotable 或者 adoquery.
      

  3.   

    在tzd.pas单元的implementation下uses dm_main单元,然后指定dbgrid的datasource为adotable就可以了