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

📄 handle.~pa

📁 一个典当行的业务管理系统程序
💻 ~PA
📖 第 1 页 / 共 2 页
字号:
unit Handle;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBCtrls, StdCtrls, ComCtrls, Grids, DBGrids, ExtCtrls, Spin;

type
  TfrmHandle = class(TForm)
    GroupBox1: TGroupBox;
    dgHandle: TDBGrid;
    GroupBox2: TGroupBox;
    GroupBox3: TGroupBox;
    Label1: TLabel;
    txtBeginMoney: TEdit;
    Label2: TLabel;
    txtEndMoney: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    txtName: TEdit;
    Label10: TLabel;
    txtCategory: TEdit;
    txtSpec: TEdit;
    txtPreMoney: TEdit;
    txtNumber: TEdit;
    cmdOk: TButton;
    cmdCancel: TButton;
    cmdExit: TButton;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    cmbCategory: TComboBox;
    cmdQuery: TButton;
    Label8: TLabel;
    Label9: TLabel;
    txtHandlePrice: TEdit;
    Label15: TLabel;
    txtHandleNum: TEdit;
    staHandle: TStaticText;
    txtYear: TSpinEdit;
    txtMonth: TSpinEdit;
    txtDay: TSpinEdit;
    procedure cmdExitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure cmbCategoryKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure dgHandleCellClick(Column: TColumn);
    procedure txtBeginMoneyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure txtEndMoneyKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    //procedure txtYearKeyUp(Sender: TObject; var Key: Word;
    //  Shift: TShiftState);
    //procedure txtYearExit(Sender: TObject);
    //procedure txtMonthKeyUp(Sender: TObject; var Key: Word;
    //  Shift: TShiftState);
    //procedure txtDayKeyUp(Sender: TObject; var Key: Word;
    //  Shift: TShiftState);
    procedure cmdCancelClick(Sender: TObject);
    procedure cmdQueryClick(Sender: TObject);
    procedure txtHandleNumKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure cmdOkClick(Sender: TObject);
    procedure txtHandlePriceKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure txtHandleNumKeyPress(Sender: TObject; var Key: Char);
    procedure txtYearKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure txtMonthKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure txtDayKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
    procedure IniCategoryBox;
    procedure ClearForm;
  public
    { Public declarations }
  end;

var
  frmHandle: TfrmHandle;

implementation

uses DmPawn, Msg;

{$R *.DFM}
var
   //Sql:string;
   NowToTen:TDateTime;
   PawnNumber:integer;
   PawnCode:String;
   LineNum:integer;
   CertiEnterTimes:Integer; //证件名称选择时用到(即组合框用键盘控制时用到)

procedure TfrmHandle.ClearForm;
begin
     txtName.Text:='';
     txtCategory.Text:='';
     txtSpec.Text:='';
     txtNumber.Text :='';
     txtPreMoney.Text:='';
     txtHandlePrice.Text :='';
     txtHandleNum.Text :='';
     txtBeginMoney.Text:='';
     txtEndMoney.Text:='';
     txtYear.Text:='';
     txtMonth.Text:='';
     txtDay.Text:='';
     cmbCategory.Text:='';
end;

procedure TfrmHandle.IniCategoryBox;
begin
  with cmbCategory.Items do
     begin
          with dmPawnFrm do
          begin
               tblCategory.Open;
               tblCategory.First ;
               while not tblCategory.Eof do
               begin
                    Add(tblCategory.fieldByName('Name').asstring);
                    tblCategory.Next ;
               end;
               tblCategory.Close;
          end;
     end;
     cmbCategory.ItemIndex :=0;
end;

procedure TfrmHandle.cmdExitClick(Sender: TObject);
begin
     close;
end;

procedure TfrmHandle.FormShow(Sender: TObject);
var
   Year,NYear,Month,NMonth,Day,NDay:word;
   NowDate:TDateTime;
   DaysElapsed:TDateTime;
   Sql:string;
   //DayLimit:integer;
begin
     IniCategoryBox;
     cmbCategory.Text:='';
     txtYear.Text:='';
     txtMonth.Text:='';
     txtDay.Text:='';
     DecodeDate(Now,Year,Month,Day);
     NowDate:=EncodeDate(Year,Month,Day);
     DaysElapsed:=NowDate-10;
     DecodeDate(DaysElapsed,NYear,NMonth,NDay);
     NowToTen:=EncodeDate(NYear,NMonth,NDay);
     //将所有绝当物品显示出来
     //先从库存表中取出当票编号,去头表中取出当票编号相同的结果集放入dqDeadHead
     with dmPawnFrm do
     begin
          dqDeadDetail.Close;
          dqDeadDetail.SQL.Clear;
          Sql:='SELECT d.PawnTicketCode, d.PawnLineNum,d.PawnName, d.PawnCategory,';
          Sql:=Sql+ 'd.PawnSpec, d.PawnNumber, d.AppriseValue, d.DiscountRate,';
          Sql:=Sql+ 'd.PawnMoney, h.PawnEndDate FROM PawnDetail_Tbl AS d, ';
          Sql:=Sql+ 'Stockpile_Tbl AS s INNER JOIN PawnHead_Tbl AS h ON h.PawnTicketCode=s.PawnCode ';
          Sql:=Sql+ 'WHERE  True and d.PawnTicketCode=h.PawnTicketCode ';
          Sql:=Sql+ 'and (h.Status=''绝当'' or h.Status=''半处'') ';
          //DateDiff("d",h.PawnEndDate,Now())>10';
          Sql:=Sql+'and (d.Status='''' or d.Status=''半处'') ';
          dqDeadDetail.SQL.Add(Sql);
          //dqDeadDetail.ParamByName('Sta1').asstring:='绝当';
          //dqDeadDetail.ParamByName('DateElapsed').asDateTime:=NowToTen;
          //dqDeadDetail.ParamByName('Sta1').asstring:='半处';
          //dqDeadDetail.ParamByName('Sta3').asstring:='解挂';
          dqDeadDetail.Open;
     end;
end;

procedure TfrmHandle.cmbCategoryKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
     begin
          if CertiEnterTimes=0 then
          begin
               CertiEnterTimes:=CertiEnterTimes+1;
               if SendMessage((Sender as TComBoBox).handle,CB_GetDroppedState,0,0)
                  =0 then
                  PostMessage((Sender as TComBoBox).handle,CB_SHOWDROPDOWN,1,0);
          end
          else
          begin
               CertiEnterTimes:=0;
          end;
     end;

end;

procedure TfrmHandle.dgHandleCellClick(Column: TColumn);
var
   PreMoney:Double;
begin

     PawnCode:=dgHandle.Columns[0].Field.AsString;

     LineNum:=dgHandle.Columns[1].Field.AsInteger;

     txtName.Text:=dgHandle.Columns[2].Field.AsString;

     txtCategory.Text:=dgHandle.Columns[3].Field.AsString;

     txtSpec.Text :=dgHandle.Columns[4].Field.AsString;

     PreMoney:=dgHandle.Columns[8].Field.AsFloat;
     txtPreMoney.Text :=format('%8.1f',[PreMoney]);
     
     PawnNumber:=dgHandle.Columns[5].Field.AsInteger;
     txtNumber.Text:=inttostr(PawnNumber);
     txtHandleNum.SetFocus;
end;

procedure TfrmHandle.txtBeginMoneyKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
        txtEndMoney.SetFocus ;
end;

procedure TfrmHandle.txtEndMoneyKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
     if key=VK_RETURN then
        txtYear.SetFocus ;
end;

{procedure TfrmHandle.txtYearKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Present: TDateTime;
   Year, Month, Day: Word;
begin
     Present:= Now;
     DecodeDate(Present, Year, Month, Day);
     if txtYear.Text =''then
        txtYear.Text := IntToStr(Year);
     if (length(txtYear.text)=4) then {or
        (length(txtPawnBeginYear.text)=2)then
        txtMonth.SetFocus ;
end;}

{procedure TfrmHandle.txtYearExit(Sender: TObject);
var
   InputYear : Integer;
   Present: TDateTime;
   Year, Month, Day: Word;
begin
     Present:= Now;
     DecodeDate(Present, Year, Month, Day);
     if txtYear.Text =''then
        txtYear.Text :=IntToStr(Year);
     InputYear:=strtoint(txtYear.text);
     case InputYear of
          0:txtYear.Text :='2000';
          1..9:txtYear.Text :='190'+inttostr(InputYear);
          10..64:txtYear.Text :='19'+inttostr(InputYear);
          65..99:txtYear.Text :='19'+txtYear.Text ;
     end;
end;}

{procedure TfrmHandle.txtMonthKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Present: TDateTime;
   Year, Month, Day: Word;
   InputMonth:integer;
begin
     Present:= Now;
     DecodeDate(Present, Year, Month, Day);

     if txtMonth.Text ='' then
        txtMonth.Text:=IntToStr(Month);
     if (length(txtMonth.text)=2)then
     begin
          InputMonth:=strtoint(txtMonth.Text);
        if (InputMonth>12)or(InputMonth<1) then
        begin
             txtMonth.Text :=IntToStr(Month);
        end;
        txtDay.SetFocus ;
     end;
end;

procedure TfrmHandle.txtDayKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
   Present: TDateTime;
   Year, Month, Day: Word;
begin
     Present:= Now;
     DecodeDate(Present, Year, Month, Day);
     if txtDay.Text =''then
        txtDay.Text:=IntToStr(Day);
     if length(txtDay.text)=2 then
     begin
        if (strtoint(txtDay.text)<1)or
           (strtoint(txtDay.text)>31) then
        begin
             txtDay.Text :=IntToStr(Day);
        end;
        cmbCategory.SetFocus;
     end;
end;}

procedure TfrmHandle.cmdCancelClick(Sender: TObject);
begin
    ClearForm;
end;

procedure TfrmHandle.cmdQueryClick(Sender: TObject);
var
   SearchDate:TDateTime;
   DateMark:Boolean;
   BeginMoneyMark,MoneyMark:Boolean;
   Sql:string;
begin
     BeginMoneyMark:=False;
     MoneyMark:=False;
     DateMark:=False;

     Sql:='SELECT d.PawnTicketCode, d.PawnLineNum,d.PawnName, d.PawnCategory,';
     Sql:=Sql+ 'd.PawnSpec, d.PawnNumber, d.AppriseValue, d.DiscountRate,';
     Sql:=Sql+ 'd.PawnMoney, h.PawnEndDate FROM PawnDetail_Tbl AS d, ';
     Sql:=Sql+ 'Stockpile_Tbl AS s INNER JOIN PawnHead_Tbl AS h ON h.PawnTicketCode=s.PawnCode ';
     Sql:=Sql+ 'WHERE  True and d.PawnTicketCode=h.PawnTicketCode ';
     Sql:=Sql+ 'and (h.Status=''绝当'' or h.Status=''半处'') ';
     Sql:=Sql+'and (d.Status='''' or d.Status=''半处'') ';
     
     if txtYear.Text<>''then
     begin
          if txtMonth.Text<>''then
          begin
               if txtDay.Text<>''then
               begin
                    SearchDate:=EncodeDate(txtYear.Value,txtMonth.Value,
                                           txtDay.Value);
                    DateMark:=True;
                    Sql:=Sql+ 'and h.PawnEndDate>=:SearchDate ';
               end
               else
               begin
                   {//必须输入日期
                   messagedlg(Msg.MsgDayInfo,mtWarning,[mbYes],0);
                   exit;}
                   //不判断日期
                   DateMark:=False;
               end;
          end
          else
              //不判断日期
              DateMark:=False;
     end
     else
         //不判断日期
         DateMark:=False;

⌨️ 快捷键说明

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