【delphi开源代码栏目提醒】:网学会员鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“DocuInputForm.pas”一文,供大家参考学习
unit DocuInputForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, ImgList, Grids, DBGrids, ExtCtrls, StdCtrls,
Buttons, DB, ADODB, DBCtrls, Mask,mainform;
type
TDocuInput = class(TForm)
ImageList1: TImageList;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
ToolButton10: TToolButton;
ToolButton11: TToolButton;
ToolButton12: TToolButton;
ToolButton13: TToolButton;
Panel1: TPanel;
DBGrid1: TDBGrid;
Panel2: TPanel;
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Label3: TLabel;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
BitBtn1: TBitBtn;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
DBComboBox1: TDBComboBox;
DBEdit4: TDBEdit;
Label11: TLabel;
DBEdit5: TDBEdit;
Label12: TLabel;
DBEdit6: TDBEdit;
Label13: TLabel;
DBEdit7: TDBEdit;
DataSource2: TDataSource;
ADOQuery2: TADOQuery;
Panel3: TPanel;
ADOQuery3: TADOQuery;
StringGrid1: TStringGrid;
ADOCommand1: TADOCommand;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure ToolButton8Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure ToolButton13Click(Sender: TObject);
procedure ToolButton10Click(Sender: TObject);
procedure ToolButton11Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure DBEdit9Exit(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure StringGrid1DblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure SetToolBar(isEnable:bool);
procedure SumAccount();
//当执行新增和编辑后,保存时执行不同的代码
procedure OpType(opname:string);
end;
//对将要从dll中的调用的函数的声明
type
Tshowdllform=function(Ahandle:Thandle;Acaption:string;tablename:string):string;stdcall;
Ttable=array[1..20] of string;
var
DocuInput: TDocuInput;
maxnum,recordnum,curRow,curCol:integer;
mytable:Ttable;
op:string;
implementation
{$R *.dfm}
procedure TDocuInput.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;
//----------------初始化表----------------------
procedure TDocuInput.DataSource1DataChange(Sender: TObject;
Field: TField);
var
i,j:integer;
begin
//设置数据表宽度
dbgrid1.Columns[0].Width:=48;
dbgrid1.Columns[1].Width:=64;
dbgrid1.Columns[2].Width:=64;
//显示与凭证编号对应的分录表
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select distinct a.*,c.科目名称 from 分录表 a,凭证表 b,科目表 c where (a.凭证编号='''+dbedit1.Text+''')and(a.科目代码=c.科目代码) order by 编号');
adoquery2.Open;
//初始化表,将表格清空
for i:=1 to 20 do
for j:=0 to 4 do
if op<>'insert' then
stringgrid1.Cells[j,i]:='';
//将分录表数据读入表格,并保存编号数据以供后面的数据库操作使用
i:=1;
recordnum:=0;
while not adoquery2.Eof do
begin
stringgrid1.Cells[0,i]:=adoquery2.fieldbyname('科目代码').AsString;
stringgrid1.Cells[1,i]:=adoquery2.fieldbyname('科目名称').AsString;
stringgrid1.Cells[2,i]:=adoquery2.fieldbyname('借方').AsString;
stringgrid1.Cells[3,i]:=adoquery2.fieldbyname('贷方').AsString;
stringgrid1.Cells[4,i]:=adoquery2.fieldbyname('摘要').AsString;
mytable[i]:=adoquery2.fieldbyname('编号').AsString;
i:=i+1;
recordnum:=recordnum+1;
adoquery2.Next;
end;
//设置分录表的列宽度
stringgrid1.ColWidths[0]:=48;
stringgrid1.ColWidths[1]:=116;
stringgrid1.ColWidths[2]:=64;
stringgrid1.ColWidths[3]:=64;
stringgrid1.ColWidths[4]:=150;
//显示凭证数
label2.Caption:=inttostr(datasource1.DataSet.RecordCount);
end;
//-----------------设置工具栏按钮--------------------
procedure TDocuInput.SetToolBar(isEnable: bool);
begin
if isEnable=true then
begin
//将首记录等记录移动按钮设置为不可用
toolbutton1.Enabled:=false;
toolbutton2.Enabled:=false;
toolbutton3.Enabled:=false;
toolbutton4.Enabled:=false;
//将新增修改等按钮设置为不可用
toolbutton6.Enabled:=false;
toolbutton7.Enabled:=false;
toolbutton8.Enabled:=false;
//将保存和取消按钮设置为可用
toolbutton10.Enabled:=true;
toolbutton11.Enabled:=true;
//将窗体内的数据显示控件设为可修改
dbedit2.Enabled:=true;
dbedit3.Enabled:=true;
dbcombobox1.Enabled:=true;
stringgrid1.Enabled:=true;
dbgrid1.Enabled:=false;
end;
if isEnable=false then
begin
//将首记录等记录移动按钮设置为可用
toolbutton1.Enabled:=true;
toolbutton2.Enabled:=true;
toolbutton3.Enabled:=true;
toolbutton4.Enabled:=true;
//将新增修改等按钮设置为可用
toolbutton6.Enabled:=true;
toolbutton7.Enabled:=true;
toolbutton8.Enabled:=true;
//将保存和取消按钮设置为不可用
toolbutton10.Enabled:=false;
toolbutton11.Enabled:=false;
//将窗体内的数据显示控件设为不可修改
dbedit2.Enabled:=false;
dbedit3.Enabled:=false;
dbcombobox1.Enabled:=false;
dbgrid1.Enabled:=true;
stringgrid1.Enabled:=false;
end;
end;
//---------------新增记录----------------
procedure TDocuInput.ToolButton6Click(Sender: TObject);
var
totalnum:string;
begin
//刷新数据,得到凭证数据中最大编码并加一,防止编码重复
adoquery3.Close;
adoquery3.SQL.Clear;
adoquery3.SQL.Add('select max(凭证编号) 最大编号 from 凭证表');
adoquery3.Open;
totalnum:=adoquery3.FieldByName('最大编号').Asstring;
totalnum:=copy(totalnum,1,6);
if totalnum='' then totalnum:='0';
totalnum:=inttostr(strtoint(totalnum)+1);
//开始新增
SetToolBar(true);
datasource1.DataSet.Insert;
//组成六位的凭证编码
if length(totalnum)=1 then
dbedit1.Text:='00000'+totalnum;
if length(totalnum)=2 then
dbedit1.Text:='0000'+totalnum;
if length(totalnum)=3 then
dbedit1.Text:='000'+totalnum;
//默认凭证字号
dbcombobox1.SelText:='收';
//加入当前日期
dbedit2.Te
上一篇:
DocThread.pas
下一篇:
博士梦-强国梦