//为凭证录入分录表 procedure TDocuInputBitBtnClick(Sender: TObject); begin datasourceDataSetDelete; end; //统计分录表中的各项信息以储存到数据库 procedure TDocuInputSumAccount; var sumoutputsuminput:double; i:integer; begin suminput:=; sumoutput:=; //统计借贷双方的数额 for i:= to do if (stringgridCells[i]<>)and(stringgridCells[i]<>) then begin suminput:=suminput+strtofloat(stringgridCells[i]); sumoutput:=sumoutput+strtofloat(stringgridCells[i]); end; dbeditText:=floattostr(suminput); dbeditText:=floattostr(sumoutput); end; procedure TDocuInputDBEditExit(Sender: TObject); begin SumAccount; end; //设置分录表表头 procedure TDocuInputFormShow(Sender: TObject); begin stringgridCells[]:=科目编码; stringgridCells[]:=科目名称(双击选择); stringgridCells[]:=借方; stringgridCells[]:=贷方; stringgridCells[]:=摘要; end; //当在分录表中输入时不允许在上面有空行的情况下输入一行新的数据 procedure TDocuInputStringGridSelectCell(Sender: TObject; ACol ARow: Integer; var CanSelect: Boolean); begin //防止在输入数据时上面有空行 if stringgridCells[Arow]= then begin showmessage(请先完成上行中空的项目); exit; end; //保存选取的单元行列值 curRow:=ARow; curCol:=ACol; if (curCol<=)and(curCol>=) then stringgridOptions:=stringgridOptions+[goEditing]; //防止选中标题栏 if ARow= then curRow:=ARow+; //统计借贷双方信息 sumAccount(); end; //在输入分录表时调用DLL中的表格选择科目名称和号码 procedure TDocuInputStringGridDblClick(Sender: TObject); var showForm:TShowDllForm; module:Thandle; begin //只有双击指定列才有效 if curCol<> then exit; //读入DLL module:=loadlibrary(secdll); //如果读入错误则module会是一个小于的错误代码 //由此可以判断是否读入成功 if module< then exit; @showForm:=getprocaddress(modulepchar()); if @showForm=nil then exit; //通过DLL传递参数 stringgridCells[curRow]:=showForm(applicationHandle选择科目名称科目表); //为科目代码添加科目名称 adoqueryClose; adoquerySQLClear; adoquerySQLAdd(select 科目名称 from 科目表 where 科目代码 =+stringgridCells[curRow]+); adoqueryOpen; stringgridCells[curRow]:=adoqueryfieldbyname(科目名称)AsString; end; [] [] [] |