程序调试通过了,但是在点击一个菜单时,出现了“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.
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.
解决方案 »
- 菜鸟级问题!请大家指点!!
- 大家来看一下我写的窗体类,但不知道Create不能调用?!请高手指点一下!
- WHERE条件语句后面是否可以跟变量?(再续)
- DateSet操作的一个难题(再线等)
- win32调试API的问题
- 各位大虾,怎样才能实现焦点从RichEdit移走,仍保持RichEdit中的选中文字标记。
- 哪儿能够下载到0day发行的DVD Rip电影?
- 救命啊,为什么让我遇到这么难的一个问题,如果我以后再也遇不到这么难的问题怎么办?救命啊!
- 如何截取这样的字符串?
- 有没有简单的方法将stringgrid内容清空??
- 如何将数据表中固定列的合值打印出来
- 如何用代码实现控制某控件的滚动条的移动,如上移或下移,鼠标的滚动滑轮滚动时会触发什么事件?
请大家帮帮小弟我吧,很急啊!特别需要高手们的帮助。