程序调试通过了,但是在点击一个菜单时,出现了“access violation at address 00000000.read of address 00000000”错误,找了老半天也找不到出错的地方。请大家帮帮小弟看看,非常感谢啊!unit FMFeeList;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, MasDtlModule, dxExEdtr, dxLayoutLookAndFeels, ActnList,
  cxSplitter, dxInspct, dxDBInsp, dxCntner, dxTL, dxDBCtrl, dxDBGrid,
  dxDBGrid3, ExtCtrls, Gradpan, dxLayoutControl, StdCtrls, cxControls,  Modules,DMSrc, dxDBTLCl, dxGrClms, dxInspRw, dxDBInRw,
  Excel2000,ObjTrainClass,DB, ComObj,OleServer,
  StrUtils,ObjOther,ObjFee,
  ObjStudy,Menus, ExcelXP,FMIsptAddEditFee;
type
  TFMFeeListMoney = class(TMasterDetailModule)
    Grid1FeeID: TdxDBGridMaskColumn;
    Grid1FeeName: TdxDBGridMaskColumn;
    Grid1FeeCount: TdxDBGridMaskColumn;
    Grid1FeeType: TdxDBGridMaskColumn;
    Grid1ChargePerson: TdxDBGridMaskColumn;
    Grid1ReceiptFirstNum: TdxDBGridMaskColumn;
    Grid1ReceiptLastNum: TdxDBGridMaskColumn;
    Grid1License: TdxDBGridMaskColumn;
    Grid1TrainNum: TdxDBGridMaskColumn;
    Grid1ReTrainNum: TdxDBGridMaskColumn;
    Grid1FeeDate: TdxDBGridDateColumn;
    ActAdd: TAction;
    ActiModify: TAction;
    DBIsptRow1: TdxInspectorDBRow;
    DBIsptRow2: TdxInspectorDBMaskRow;
    DBIsptRow3: TdxInspectorDBMaskRow;
    DBIsptRow4: TdxInspectorDBDateRow;
    DBIsptRow5: TdxInspectorDBMaskRow;
    DBIsptRow6: TdxInspectorDBRow;
    DBIsptRow7: TdxInspectorDBMaskRow;
    DBIsptRow8: TdxInspectorDBMaskRow;
    DBIsptRow9: TdxInspectorDBMaskRow;
    DBIsptRow10: TdxInspectorDBRow;
    DBIsptRow11: TdxInspectorDBMaskRow;
    DBIsptRow12: TdxInspectorDBMaskRow;
    DBIsptRow13: TdxInspectorDBMaskRow;
    DBIsptRow14: TdxInspectorDBMaskRow;
    ActDel: TAction;
    ActQuery: TAction;
    ActExcel: TAction;
    procedure ActAddExecute(Sender: TObject);
    procedure ActiModifyExecute(Sender: TObject);
    procedure ActDelExecute(Sender: TObject);
    procedure ActQueryExecute(Sender: TObject);
    procedure ActExcelExecute(Sender: TObject);
  private
    { Private declarations }
    Fee:TFee;
    Other:TOther;
    procedure DelayForAWhile;
    //procedure FillTempArray;
  public
    { Public declarations }
    procedure Init;override;
    destructor Destroy;override;
  end;var
  FMFeeListMoney: TFMFeeListMoney;implementationuses Global,FMPrompt, PrintForm;
{$R *.dfm}
destructor TFMFeeListMoney.Destroy;
begin
  Fee.Free;
  Other.Free;
  inherited;
end;procedure TFMFeeListMoney.Init;
begin
//初始化
  inherited;  Fee:=TFee.Create;
  Other:=TOther.Create;
  CategoryListItem.Visible:=False;  //if Grid1.ADOConnection=nil then
    //Grid1.ADOConnection:=DM.ADOConnection;
  if not Grid1.Active then
    Grid1.Active:=True;  if Grid1.Active then
    Grid1.OnClick(nil);
end;procedure TFMFeeListMoney.ActAddExecute(Sender: TObject);
begin
//添加
  if AddEditFee(0) then
  begin
    //为了防止界面出现呆板,加入5毫秒的延迟,并让程序有空刷新界面,然后再刷新列表
    DelayForAWhile;
    Grid1.Refresh;
    Grid1.OnClick(nil);
  end;
end;procedure TFMFeeListMoney.ActiModifyExecute(Sender: TObject);
begin
  inherited;
if AddEditFee(Grid1.GetKeyValue) then
  begin
    DelayForAWhile;
    Grid1.Refresh;
    Grid1.OnClick(nil);
  end;
end;procedure TFMFeeListMoney.ActDelExecute(Sender: TObject);
begin
//删除
  inherited;  if YesOrNoMsg('确实要删除“'+
    Grid1.DataSource.DataSet.FieldByName('FeeName').AsString+'”的收费记录吗?')
    =IDYes then
  begin
    if Fee.Delete(Grid1.GetKeyValue) then
    begin
      DelayForAWhile;
      Grid1.RefreshAfterDelete;
      Grid1.OnClick(nil);
    end;
  end;end;procedure TFMFeeListMoney.DelayForAWhile;
var I:Integer;
begin
//为了防止界面出现呆板,加入5毫秒的延迟,并让程序有空刷新界面,然后再刷新列表
  for I:=0 to 4 do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;
end;
procedure TFMFeeListMoney.ActQueryExecute(Sender: TObject);
begin
  inherited;  Grid1.BuildinQuery;
end;procedure TFMFeeListMoney.ActExcelExecute(Sender: TObject);
begin
  inherited;  ExportToExcel(TdxDBGrid(Grid1));
end;initialization
  ModuleInfoManager.RegisterModule('FMFeeListMoney',TFMFeeListMoney,'收费情况','培训管理');end.