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

📄 comepas.pas

📁 一个桌球室收费系统
💻 PAS
字号:
unit ComePas;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Variants, DB, Xeduser, StdCtrls, DBCtrls, Mask, ComCtrls, Grids, DBGrids, ExtCtrls;

type
  TComeForm = class(TForm)
    Group1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Group2: TGroupBox;
    Edit13: TEdit;
    Label5: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Button3: TButton;
    Label7: TLabel;
    Edit06: TEdit;
    Label10: TLabel;
    Edit14: TEdit;
    Button1: TButton;
    Edit05: TComboBox;
    Edit11: TDBLookupComboBox;
    Label6: TLabel;
    Label11: TLabel;
    Edit01: TComboBox;
    Edit02: TDateTimePicker;
    Edit03: TComboBox;
    Edit12: TDBEdit;
    SBar: TPanel;
    Edit04: TEdit;
    Edit21: TDateTimePicker;
    Check1: TCheckBox;
    Button4: TButton;
    Timer1: TTimer;
    Image1: TImage;
    Button2: TButton;
    Label12: TLabel;
    CardList: TComboBox;
    Label13: TLabel;
    DBEdit1: TDBEdit;
    procedure FormCreate(Sender: TObject);
    procedure Edit03Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Edit01Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button4Click(Sender: TObject);
    procedure Edit13Exit(Sender: TObject);
    procedure Check1Exit(Sender: TObject);
    procedure Edit03Change(Sender: TObject);
    procedure Edit05Click(Sender: TObject);
    procedure Edit06KeyPress(Sender: TObject; var Key: Char);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Edit01DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure FormCanResize(Sender: TObject; var NewWidth,
      NewHeight: Integer; var Resize: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ComeForm: TComeForm;

implementation

uses Work01, Data, Printers;

{$R *.DFM}

var Change: Boolean = False;
  NtCode: Word;
  Newer: Boolean;
  PSort: Word;

procedure TComeForm.FormCreate(Sender: TObject);
var
  I: Word;
begin
  DM.Water.Open;
  DM.Ball00.Open;
  DM.Ball01.Open;
  DM.Ball02.Open;
  DM.Ball03.Open;
  DM.Rate.Open;
  DM.Ball01.Last;
  if DM.Ball01.Bof or not VarIsNull(DM.Ball01['娱乐类别']) then
    DM.Ball01.AppendRecord([]);

  NtCode := DM.Ball01['流水号'];

  DM.State.Close;
  DM.State.SQL.Text :=
    'Select 流水号 From Ball01 Where ' +
    '(结帐标志 = False or 结帐标志 is NULL)';
  DM.State.Open;
  with DM.State do while not Eof do begin
      I := FieldByName('流水号').AsInteger;
      Edit01.Items.Add(Format('%8d', [I]));
      DM.State.Next;
    end;
  DM.State.Close;

  DM.Ball00.First;
  repeat
    Edit03.Items.Add(DM.Ball00['名称']);
    DM.Ball00.Next;
  until DM.Ball00.Eof;

  Edit01.ItemIndex := Edit01.Items.Count - 1;
  Edit01Click(Self);
end;

procedure TComeForm.Edit03Click(Sender: TObject);
begin
  Edit03Change(Self);
  Edit05Click(Self);
end;

procedure TComeForm.Button3Click(Sender: TObject);
var
  T: TDateTime;
  Code, Num9: Word;
  Price: Real;
begin
  Code := StrToInt(Trim(Edit01.Text));
  if Check1.Checked then begin
    if not DM.Ball03.Locate('流水号', Code, []) then begin
      T := DM.Ball01['开始时间']; // 初次截钟
      DM.Ball03.Append;
      DM.Ball03['流水号'] := Code;
      DM.Ball03['开始时间'] := T;
      DM.Ball03['结束时间'] := Edit21.DateTime;
      DM.Ball03.POST;
      ShowMessage('[初次]截钟时间已经增加');
    end else begin //再次截钟
      DM.Ball03.Last; //得到最后截钟时间
      while DM.Ball03['流水号'] <> Code do DM.Ball03.Prior;
      T := DM.Ball03['结束时间'];
      DM.Ball03.Append;
      DM.Ball03['流水号'] := Code;
      DM.Ball03['开始时间'] := T;
      DM.Ball03['结束时间'] := Edit21.DateTime;
      DM.Ball03.Post;
      ShowMessage('[新的]截钟时间已经增加');
    end;
    Check1.Checked := False;
  end;
  if Trim(Edit13.Text) = '' then Exit;
  Num9 := StrToInt(Edit13.Text);
  if Num9 = 0 then Exit;
  Price := DM.Water['单价'];
  Edit14.Text := FloatToStr(Price * Num9);
  with DM.Ball02 do begin
    if Locate('流水号;名称', VarArrayof([Code, Edit11.Text]), [])
      then begin
      Num9 := Num9 + DM.Ball02['数量'];
      Edit;
    end else begin
      Append;
      FieldByName('流水号').asInteger := Code;
      FieldByName('名称').AsString := Edit11.Text;
    end;
    FieldByName('数量').AsInteger := Num9;
    FieldByName('单价').AsCurrency := Price;
    FieldByName('金额').AsCurrency := Round(Num9 * Price);
    Post;
    Edit13.Text := '';
    Edit14.Text := '';
    Showmessage('新的酒水记录已经增加');
  end;
  Button3.Enabled := False;
end;

procedure TComeForm.Button1Click(Sender: TObject);
var
  LastCode: Boolean;
  Pri1: Real;
  Num1: Word;
  B: TBookMark;
begin
  if Trim(Edit03.Text) = '' then Exit;
  if Trim(Edit05.Text) = '' then Exit;
  Button1.Enabled := False;
  Button4.Enabled := True;
  Button4.SetFocus;
  Group2.Enabled := True;
  with DM.Ball01 do begin
    Locate('流水号', Edit01.Text, []);
    LastCode := VarIsNull(DM.Ball01['娱乐类别']);
    Edit;
    DM.Ball01['日期'] := Edit02.DateTime;
    DM.Ball01['开始时间'] := Edit02.DateTime;
    DM.Ball01['娱乐类别'] := Edit04.Text;
    DM.Ball01['编号'] := Copy(Edit05.Text, 4, 2);
    DM.Ball01['结帐标志'] := False;
    if Trim(Edit06.Text) = '' then Edit06.Text := '0';
    Pri1 := DM.Ball00['租拍单价'];
    Num1 := StrToInt(Edit06.Text);
    DM.Ball01['租拍数量'] := Num1;
    DM.Ball01['租拍金额'] := Pri1 * Num1;
    Post;
  end;
  SBar.Font.Color := clWhite;
  SBar.Caption := '该客户的数据已经记录';
  if LastCode then begin
    B := DM.Ball01.GetBookMark;
    DM.Ball01.Append;
    DM.Ball01.Post;
    NtCode := DM.Ball01['流水号'];
    Edit01.Items.Add(Format('%8d', [NtCode]));
    DM.Ball01.GotoBookMark(B);
  end;
end;

procedure TComeForm.Edit01Click(Sender: TObject);
var
  Code, Sort: Word;
//  Indx: Word;
  Codes, SortName: string;
begin
  Newer := Edit01.Text = Format('%8d', [NtCode]);
  Group2.Enabled := not Newer;
  Button4.Enabled := False;
  Button1.Enabled := False;
//  Edit03.Enabled := Newer;
  if Newer then begin
    SBar.Font.Color := clWhite;
    SBar.Caption := '提示信息:新的客户记录';
    Edit02.DateTime := Now;
    Edit03.ItemIndex := -1;
    Edit04.Text := '';
    Edit05.ItemIndex := -1;
    Edit06.Text := '0';
  end else begin
    SBar.Font.Color := clGray;
    SBar.Caption := '提示信息:已有客户记录';
    with DM.Ball01 do
      if Locate('流水号', Edit01.Text, []) then begin
        Edit02.DateTime := FieldByName('开始时间').AsDateTime;
        Sort := DM.Ball01['娱乐类别'];
        DM.Ball00.Locate('娱乐类别', Sort, []);
        SortName := DM.Ball00['名称'];
        Edit03.ItemIndex := Edit03.Items.IndexOf(SortName);
        Edit03Change(Self);
        Code := FieldByName('编号').Value;
        Codes := Format('第 %2d 号', [Code]);
        Edit05.Items.Add(CodeS);
        Edit05.ItemIndex := Edit05.Items.IndexOf(Codes);
        Edit05.Update;
        if VarIsNull(DM.Ball01['租拍数量']) then
          Edit06.Text := '0' else Edit06.Text :=
          FieldByName('租拍数量').Value;
      end;
  end;
end;

procedure TComeForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DM.Water.Close;
  DM.Ball00.Close;
  DM.Ball01.Close;
  DM.Ball02.Close;
  DM.Ball03.Close;
  DM.Rate.Close;
  Action := caFree;
end;

procedure TComeForm.Button4Click(Sender: TObject);
var
  Prnt: TextFile;
begin
  Button4.Enabled := False;
  SBar.Caption := '提示信息:正在打印客户开台单....';
  AssignPRN(Prnt);
  Rewrite(Prnt);
  Printer.Canvas.Font.Name := '宋体';
  Printer.Canvas.Font.Style := [];
  Printer.Canvas.Font.PixelsPerInch :=
    GetDeviceCaps(Printer.Canvas.Handle, LOGPIXELSY);
  Printer.Canvas.Font.Size := 16;
  Printer.Canvas.Font.Name := '黑体';
  Writeln(Prnt, '雄 祺 体 育 活 动 中 心');
  Writeln(Prnt);
  Printer.Canvas.Font.Name := '宋体';
  Printer.Canvas.Font.Size := 12;
  Writeln(Prnt, '流水号: ' + Edit01.text);
  Writeln(Prnt, Edit03.Text + Edit05.Text);
  Writeln(Prnt, '收费标准:');
  DM.Ball00.Locate('娱乐类别', PSort, []);
  Writeln(Prnt,
    DM.Ball00['时间1']: 8, '--',
    DM.Ball00['时间2'], '单价:': 8,
    DM.Ball00['单价1']: 2, '元/小时');
  Writeln(Prnt,
    DM.Ball00['时间2'], '--',
    DM.Ball00['时间3']: 2, '单价:': 8,
    DM.Ball00['单价2'], '元/小时');
  Writeln(Prnt,
    DM.Ball00['时间3'], '以后', '': 6, '单价:': 8,
    DM.Ball00['单价3']: 2, '元/小时');
  Writeln(Prnt);
  Printer.Canvas.Font.Name := '黑体';
  Printer.Canvas.Font.Size := 14;
  Writeln(Prnt, '开台时间: ' + timetostr(Edit02.time));

  Writeln(Prnt);
  Writeln(Prnt, '注:最低消费时间一小时起');
  Printer.Canvas.Font.Name := '宋体';
  Printer.Canvas.Font.Size := 11;
  CloseFile(Prnt);
end;

procedure TComeForm.Edit13Exit(Sender: TObject);
var
  Price, Num9: Real;
begin
  Button3.Enabled := Check1.Checked or (Edit13.Text <> '');
  if not Button3.Enabled then Exit;
  Num9 := StrToInt(Edit13.Text);
  if Num9 = 0 then Exit;
  Price := DM.Water.FieldByName('单价').AsFloat;
  Edit14.Text := FloatToStr(Price * Num9);
end;

procedure TComeForm.Check1Exit(Sender: TObject);
begin
  Edit21.DateTime := Now;
  Button3.Enabled := Check1.Checked or (Edit13.Text <> '');
end;

procedure TComeForm.Edit03Change(Sender: TObject);
var
  I, Sort, Summ: Word;
  S: string;
begin
  Button3.Enabled := False;
  DM.Ball00.Locate('名称', Edit03.Text, []);
  Sort := DM.Ball00['娱乐类别'];
  PSort := Sort;
  Summ := DM.Ball00['数量'];
  Edit04.Text := Format('%d', [Sort]);
  DM.State.SQL.Text :=
    'Select * From Ball01 Where ' +
    '(结帐标志 = False or 结帐标志 is NULL) ' +
    'and 娱乐类别="' + Edit04.Text + '"';
  DM.State.Open;
  Edit05.Items.Clear;
  for I := 1 to Summ do Edit05.Items.Add(Format('第 %2d 号', [I]));
  while not DM.State.Eof do begin
    I := DM.State['编号'];
    S := Format('第 %2d 号', [I]);
    with Edit05.Items do Delete(Indexof(S));
    DM.State.Next;
  end;
  DM.State.Close;
end;

procedure TComeForm.Edit05Click(Sender: TObject);
begin
  Button1.Enabled := (Edit03.Text <> '') and (Edit05.Text <> '');
end;

procedure TComeForm.Edit06KeyPress(Sender: TObject; var Key: Char);
begin
  Button1.Enabled := (Edit03.Text <> '') and (Edit05.Text <> '');
end;

procedure TComeForm.Timer1Timer(Sender: TObject);
begin
  ShowTime(image1);
end;

procedure TComeForm.Button2Click(Sender: TObject);
begin
  Close;
end;

procedure TComeForm.Edit01DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  if odSelected in State then Begin
    Edit01.Canvas.Brush.Color := clBlue;
  End;
  Edit01.Canvas.FillRect(Rect);
  Edit01.Canvas.TextOut(Rect.Left + 01, Rect.Top + 1, Edit01.Items[Index]);
end;

procedure TComeForm.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
begin
  NewHeight := 450;
end;

end.

⌨️ 快捷键说明

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