⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ckglfrm.pas

📁 仓库管理Delphi源码、软件方案,学习实用两不误
💻 PAS
字号:
unit CkglFrm;

interface


uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Tabnotbk, Grids, DBGrids, Db, ADODB, StdCtrls,
  DBCtrls, Buttons, ExtCtrls, Spin, DBGridEh;

type
  TfrmCkgl = class(TForm)

    tblRk: TADOTable;
    tblCk: TADOTable;

    tblTk: TADOTable;
    tblDk: TADOTable;

    tblJc: TADOTable;
    tblGh: TADOTable;

    tblPd: TADOTable;

    dtpRkrq: TDateTimePicker;
    dtpCkrq: TDateTimePicker;
    dtpTkrq: TDateTimePicker;
    dtpDkrq: TDateTimePicker;
    dtpJcRq: TDateTimePicker;
    dtpGhrq: TDateTimePicker;
    dtpBeginDate: TDateTimePicker;

    pgcMain: TPageControl;

    shtRk: TTabSheet;
    shtCk: TTabSheet;
    shtTk: TTabSheet;
    shtDk: TTabSheet;
    shtJc: TTabSheet;
    shtGh: TTabSheet;
    shtPd: TTabSheet;
    grdRk: TDBGrid;
    grdCk: TDBGrid;
    grdTk: TDBGrid;
    grdDk: TDBGrid;
    grdJc: TDBGrid;
    grdGh: TDBGrid;
    grdPd: TDBGrid;
    
    pnlRkTop: TPanel;
    pnlCkTop: TPanel;
    pnlTkTop: TPanel;
    pnlDcTop: TPanel;
    pnlJcTop: TPanel;
    pnlGhTop: TPanel;
    pnlPdTop: TPanel;
            
    dsRk: TDataSource;
    dsCk: TDataSource;
    dsTk: TDataSource;
    dsDk: TDataSource;
    dsGh: TDataSource;
    dsJc: TDataSource;
    dsPd: TDataSource;
        
    mmoRk: TDBMemo;
    pnlCkBottom: TPanel;
    dbngCk: TDBNavigator;
    pnlTkBottom: TPanel;
    dbngTk: TDBNavigator;
    pnlDcBottom: TPanel;
    dbnaDk: TDBNavigator;
    pnlGhBottom: TPanel;
    dbngGh: TDBNavigator;
    pnlJcBottom: TPanel;
    dbngJc: TDBNavigator;
    pnlRkBottom: TPanel;
    dbngRk: TDBNavigator;

    lblRkrq: TLabel;
    lblCkrq: TLabel;
    lblRhrq: TLabel;
    lblPdrq: TLabel;
    lblJcrq: TLabel;
        
    lblRkPzh: TLabel;
    lblCkPzh: TLabel;
    lblTkPzh: TLabel;
    lblDkPzh: TLabel;
    lblJcPzh: TLabel;
    lblGhPzh: TLabel;
    
    mmoCk: TDBMemo;
    mmoTk: TDBMemo;
    mmoDk: TDBMemo;
    mmoGh: TDBMemo;
    mmoPd: TDBMemo;
    mmoJc: TDBMemo;
    btnPd: TButton;
    Label1: TLabel;
    dtpEndDate: TDateTimePicker;
    Button1: TButton;

    procedure FormShow(Sender: TObject);
    procedure tblRkAfterInsert(DataSet: TDataSet);
    procedure grdRkCellClick(Column: TColumn);
    procedure dtpRkrqChange(Sender: TObject);
    procedure tblRkAfterPost(DataSet: TDataSet);
    procedure tblRkAfterEdit(DataSet: TDataSet);
    procedure tblRkAfterDelete(DataSet: TDataSet);
    procedure tblRkBeforePost(DataSet: TDataSet);
    procedure btnPdClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure grdPdDrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


implementation

{$R *.DFM}

uses
  ConstUnt;

procedure TfrmCkgl.FormShow(Sender: TObject);
var
  PtblTemp: ^TADOTable;
  PdptTemp: ^TDateTimePicker;
  PgrdTemp: ^TDBGrid;
  I: Byte;
  vHwlbLst: TStringList;
  vPpcdLst: TStringList;
  vHwggLst: TStringList;
  vShrmLst: TStringList;
  vKhmcLst: TStringList;
  vYsfsLst: TStringList;
  vGhsLst: TStringList;
  vCklbLst: TStringList;
  vJldwLst: TStringList;
  vShdzLst: TStringList;
  vJhrmLst: TStringList;

{$IFDEF __DEBUG}
  BeTime: Real;
{$ENDIF}
begin
{$IFDEF __DEBUG}
  BeTime := GetTickCount;
{$ENDIF}

  pgcMain.ActivePageIndex := 0;
  
  with LogonInf do
  begin
    vHwlbLst := HwlbLst;
    vPpcdLst := PpcdLst;
    vHwggLst := HwggLst;
    vShrmLst := ShrmLst;
    vKhmcLst := KhmcLst;
    vYsfsLst := YsfsLst;
    vGhsLst := GhsLst;
    vCklbLst := CklbLst;
    vJldwLst := JldwLst;
    vShdzLst := ShdzLst;
    vJhrmLst := JhrmLst;
  end;

  PtblTemp := @tblRk;
  PdptTemp := @dtpRkrq;
  PgrdTemp := @grdRk;
  for I := 0 to 5 do
  begin
    PtblTemp^.Connection := LogonInf.dbCkgl;
    PtblTemp^.Open;
    PdptTemp^.DateTime := Date;

    with PgrdTemp^, LogonInf do
    begin

{      Columns[1].PickList := vHwlbLst;
      Columns[2].PickList := vPpcdLst;
      Columns[3].PickList := vHwggLst;
      case I of
        0:
          begin
            Columns[6].PickList := vShrmLst;
            Columns[4].PickList := vGhsLst;
          end;
        1:
          begin
            Columns[4].PickList := vKhmcLst;
            Columns[6].PickList := vShdzLst;
            Columns[8].PickList := vYsfsLst;
          end;

        2: Columns[4].PickList := vGhsLst;
        3: Columns[4].PickList := vCklbLst;
        4, 5: Columns[4].PickList := vJhrmLst;
      end;
      Columns[5].PickList := vCklbLst;
      Columns[7].PickList := vJldwLst;
}
      with pgcMain.Pages[I], FunctionLst do
        TabVisible :=  Strings[I + 6] = 'True';
    end;
    Inc(PtblTemp);
    Inc(PdptTemp);
    Inc(PgrdTemp);

  end;
  dtpBeginDate.DateTime := Date - 1;
  dtpEndDate.DateTime := Date;
  tblPd.Connection := LogonInf.dbCkgl;
  tblPd.Open;
  with pgcMain.Pages[6], LogonInf.FunctionLst do
    TabVisible :=  Strings[12] = 'True';

{$IFDEF __DEBUG}
  BeTime := GetTickCount - BeTime;
  BeTime := (Round((BeTime / 1000) * 100)) / 100;
  ShowMessage(Format('%f 秒', [BeTime]));
{$ENDIF}  

end;

procedure TfrmCkgl.tblRkAfterInsert(DataSet: TDataSet);
var
  PdtpTemp: ^TDateTimePicker;
  PgrdTemp: ^TDBGrid;
  CurrIndex: Byte;
  TableName: ShortString;  
begin
  TableName := Copy(DataSet.Name, 4, Length(DataSet.Name));

  CurrIndex := pgcMain.Pages[pgcMain.ActivePageIndex].TabIndex;
  DataSet.FieldByName('bh').AsInteger :=
    GetTableMaxValue(LogonInf.dbCkgl, TableName, 'bh');
  PdtpTemp := @dtpRkrq;
  Inc(PdtpTemp, CurrIndex);
  DataSet.FieldByName('czy').AsString := LogonInf.UserName;
  DataSet.FieldByName(TableName + 'rq').AsString :=
    DateToStr(PdtpTemp^.Date);
  DataSet.FieldByName('pzh').AsString := LogonInf.GetNextPzh(
    TableName, DateToStr(PdtpTemp^.Date));

  PgrdTemp := @grdRk;
  Inc(PgrdTemp, CurrIndex);
  with PgrdTemp^ do
    Fields[5].AsString := Columns[5].PickList.Strings[0];


    
end;

procedure TfrmCkgl.grdRkCellClick(Column: TColumn);
var
  PlblTemp: ^TLabel;
  PtblTemp: ^TADOTable;
  CurrIndex: Byte;
begin
  CurrIndex := pgcMain.Pages[pgcMain.ActivePageIndex].TabIndex;
  PlblTemp := @lblRkPzh;
  PtblTemp := @tblRk;
  Inc(PlblTemp, CurrIndex);
  Inc(PtblTemp, CurrIndex);
  with PlblTemp^, PtblTemp^.FieldByName('pzh') do
    Caption := Format('凭证号:%s', [AsString]);
  with PlblTemp^ do
    Width := Canvas.Font.Size * Length(Caption);
    
end;

procedure TfrmCkgl.dtpRkrqChange(Sender: TObject);
var
  PdtpTemp: ^TDateTimePicker;
  PtblTemp: ^TADOTable;
  CurrIndex: Byte;
begin
  CurrIndex := pgcMain.Pages[pgcMain.ActivePageIndex].TabIndex;
  PtblTemp := @tblRk;
  PdtpTemp := @dtpRkrq;
  
  Inc(PtblTemp, CurrIndex);
  Inc(PdtpTemp, CurrIndex);
  with PtblTemp^, PdtpTemp^ do
  begin
    Filter := TableName + 'rq = ''' + DateToStr(Date) + #39;
    Filtered := True;
  end;

end;

procedure TfrmCkgl.tblRkAfterPost(DataSet: TDataSet);
var
  TableName: ShortString;
begin
  TableName := LowerCase(Copy(DataSet.Name, 4, Length(DataSet.Name)));

  with LogonInf do
    UpdateLog(AppTitle + TabCnNameLst.Strings[TabEnNameLst.IndexOf(
      TableName)] + ' - 增加操作');
end;

procedure TfrmCkgl.tblRkAfterEdit(DataSet: TDataSet);
begin

  with LogonInf do
    UpdateLog(AppTitle + TabCnNameLst.Strings[TabEnNameLst.IndexOf(
      LowerCase(Copy(DataSet.Name, 4, Length(DataSet.Name))))]
        + ' - 修改操作');

end;

procedure TfrmCkgl.tblRkAfterDelete(DataSet: TDataSet);
begin
  with LogonInf do
    UpdateLog(AppTitle + TabCnNameLst.Strings[TabEnNameLst.IndexOf(
      LowerCase(Copy(DataSet.Name, 4, Length(DataSet.Name))))]
        + ' - 删除操作');

end;

procedure TfrmCkgl.tblRkBeforePost(DataSet: TDataSet);
var
  TableName: ShortString;

begin
  TableName := LowerCase(Copy(DataSet.Name, 4, Length(DataSet.Name)));

  if Pos(DataSet.Name, 'tblJc tblGh') = 0 then
    with DataSet do
    begin
      Edit;
      FieldByName(TableName + 'ze').AsFloat :=
        FieldByName(TableName + 'dj').AsFloat *
          FieldByName(TableName + 'sl').AsInteger;
    end;


  if DataSet.State <> dsInsert then
    Exit;
  with DataSet do
  begin
    if TableName = 'rk' then
      LogonInf.UpdateKc(FieldByName('cfck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,
        FieldByName('rksl').Value,
        FieldByName('rkdj').Value);

    if TableName = 'ck' then
      LogonInf.UpdateKc(FieldByName('chck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,
        -FieldByName('cksl').AsFloat,
        FieldByName('ckdj').AsFloat);

    if TableName = 'tk' then
      LogonInf.UpdateKc(FieldByName('cfck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,
        -FieldByName('tksl').Value,
        FieldByName('tkdj').Value);

    if TableName = 'dk' then
    begin
      LogonInf.UpdateKc(FieldByName('dcck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,
        -FieldByName('dcsl').Value,
        FieldByName('dcdj').Value);

      LogonInf.UpdateKc(FieldByName('drck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,
        FieldByName('dcsl').Value,
        FieldByName('dcdj').Value);        
    end;

    if TableName = 'jc' then
      LogonInf.UpdateKc(FieldByName('jcck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,        
        -FieldByName('jcsl').Value,
        0);

    if TableName = 'gh' then
      LogonInf.UpdateKc(FieldByName('ghck').AsString,
        FieldByName('hplb').AsString,
        FieldByName('gg').AsString,
        FieldByName('jldw').AsString,
        FieldByName('cd').AsString,        
        FieldByName('ghsl').Value,
        0);
    
  end;



end;

procedure TfrmCkgl.btnPdClick(Sender: TObject);
begin
  LogonInf.Ckpd(FormatDateTime(GDateFormat, dtpBeginDate.Date),
    FormatDateTime(GDateFormat, dtpEndDate.Date));

  tblPd.Close;
  tblPd.Open;
    
end;

procedure TfrmCkgl.Button1Click(Sender: TObject);
begin

  LogonInf.DeletePdData('pd');

  tblPd.Close;
  tblPd.Open;
{$IFDEF __DEBUG}
  grdDk.Columns[1].PickList := LogonInf.HwlbLst;
  grdDk.ReadOnly := -1 = 1;
{$ENDIF}

end;

procedure TfrmCkgl.grdPdDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  {if tblPd.IsEmpty or (DataCol <> 6) then
    Exit;

  //ShowMessage(Format('%d', [tblPd.FieldByName('pky').AsInteger]));
  if tblPd.FieldByName('pky').AsInteger < 0 then
  begin
    Column.Color := clRed;
    Column.Font.Color := clYellow;
  end

  else
  begin
    Column.Color := clWhite;
    Column.Font.Color := clBlack;
  end;
   }
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -