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

📄 cancelbook.pas

📁 1、系统环境要求:WindowsXP/2000 2、DELPHI7.0企业版 3、如果数据库为SQL Server数据库
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit cancelbook;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, baseform, DB, DBGrids, Grids, ComCtrls, StdCtrls, ExtCtrls,ADODB;

type
  Tf_cancelbook = class(Tf_baseform)
    Label1: TLabel;
    Panel2: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Barcode: TEdit;
    price: TEdit;
    Money: TEdit;
    Bookname: TEdit;
    Sum: TEdit;
    Author: TEdit;
    Panel1: TPanel;
    Label2: TLabel;
    Label4: TLabel;
    Label9: TLabel;
    Operator: TEdit;
    Counter: TComboBox;
    Picker: TDateTimePicker;
    Grid: TStringGrid;
    Grid1: TDBGrid;
    Source1: TDataSource;
    Panel3: TPanel;
    Label3: TLabel;
    Label5: TLabel;
    aaa: TLabel;
    Save: TButton;
    Cancel: TButton;
    Rebate: TEdit;
    sumprice: TEdit;
    Paymoney: TEdit;
    Quit: TButton;
    procedure QuitClick(Sender: TObject);
    procedure priceKeyPress(Sender: TObject; var Key: Char);
    procedure BarcodeKeyPress(Sender: TObject; var Key: Char);
    procedure BooknameKeyPress(Sender: TObject; var Key: Char);
    procedure RebateKeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
    procedure CounterEnter(Sender: TObject);
    procedure CounterKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BarcodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Grid1DblClick(Sender: TObject);
    procedure Grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure priceChange(Sender: TObject);
    procedure RebateChange(Sender: TObject);
    procedure RebateExit(Sender: TObject);
    procedure CancelClick(Sender: TObject);
    procedure PickerKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BooknameChange(Sender: TObject);
    procedure GridKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SaveClick(Sender: TObject);
    procedure GridSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
  private
    { Private declarations }
  public
    Function DetailIsNull: Boolean;
    Procedure ClearGrid;
    Procedure ClearDetail;
    Function MasterIsValid: Boolean;
    Function GridIsNull: Boolean;
    Function AccountIsNull: Boolean;
    { Public declarations }
  end;

var
  f_cancelbook: Tf_cancelbook;
  x:integer = 1;
  y: Integer = 0;
const
  c_barcode = 0;
  c_bookname = 1;
  c_author = 2;
  c_price = 3;
  c_sum = 4;
  c_money = 5;
implementation
  uses data,main;
{$R *.dfm}

procedure Tf_cancelbook.QuitClick(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure Tf_cancelbook.priceKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Not (Key in ['0'..'9','.',#8])then
    Key := #0
  else if (key = '.')and(Pos(Key,Trim(TEdit(Sender).Text))<>0) then
    Key := #0;
end;

procedure Tf_cancelbook.BarcodeKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if (Not (Key in ['0'..'9',#8]))or(Trim(Bookname.Text)<>'') then
    Key := #0;
end;

procedure Tf_cancelbook.BooknameKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Trim(barcode.Text)<>'' then
    Key := #0;
end;

procedure Tf_cancelbook.RebateKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Not (Key in ['0'..'9','.',#8])then
    Key := #0
  else if (key = '.')and(Pos(Key,Trim(TEdit(Sender).Text))<>0) then
    Key := #0;
end;

procedure Tf_cancelbook.FormShow(Sender: TObject);
begin
  inherited;
  Picker.DateTime := Now;
  Grid.Cells[c_barcode,0]:= '条形码';
  Grid.Cells[c_bookname,0]:= '书籍名称';
  Grid.Cells[c_author,0]:='作者';
  Grid.Cells[c_price,0]:= '单价';
  Grid.Cells[c_sum,0]:='数量';
  Grid.Cells[c_money,0]:= '金额';
  Operator.Text := Username;
  With t_data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select counter from tb_counter');
    Open;
  end;
  while not t_data.Query1.Eof do
  begin
    Counter.Items.Add(Trim(t_data.Query1.Fields[0].Value));
    t_data.Query1.Next;
  end;
end;

procedure Tf_cancelbook.CounterEnter(Sender: TObject);
begin
  inherited;
  Grid1.Visible := False;
end;

procedure Tf_cancelbook.CounterKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
    FindNext(True);
end;

function Tf_cancelbook.AccountIsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i := 0 to Panel3.ControlCount-1 do
    if Panel3.Controls[i]is TEdit then
      if Trim(TEdit(Panel3.Controls[i]).Text)= '' then
      begin
        Result := True;
        Break;
      end;
end;

procedure Tf_cancelbook.ClearDetail;
var
  i: Integer;
begin
  For i:= 0 to Panel2.ControlCount-1 do
    if Panel2.Controls[i]is TEdit then
      TEdit(Panel2.Controls[i]).Clear;
end;

procedure Tf_cancelbook.ClearGrid;
var
  x,y: Integer;
begin
  For x := 1 to Grid.RowCount-1 do
    For y := 0 to Grid.ColCount-1 do
      Grid.Cells[y,x]:='';
  Grid.RowCount := 2;
end;

function Tf_cancelbook.DetailIsNull: Boolean;
var
  i: Integer;
begin
  Result := False;
  For i := 0 to Panel2.ControlCount-1 do
    if Panel2.Controls[i]is TEdit then
      if Trim(TEdit(Panel2.Controls[i]).Text)='' then
      begin
        Result := True;
        Break;
      end;
end;

function Tf_cancelbook.GridIsNull: Boolean;
var
  i,j: Integer;
begin
  Result := False;
  if Grid.RowCount =2 then
  begin
    Result := True;
    Exit;
  end;
  For i := 1 to Grid.RowCount-2 do
  begin
    For j := 0 to Grid.ColCount-1 do
      if Trim(Grid.Cells[j,i])= '' then
      begin
        Result := True;
        Break;
      end;
  end;
end;

function Tf_cancelbook.MasterIsValid: Boolean;
begin
  Result := True;
  if Trim(Counter.Text)='' then
  begin
    Result := False;
    Exit;
  end;
  With t_data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select * from tb_counter where counter = :counter');
    Parameters.ParamByName('counter').Value := Trim(Counter.Text);
    Open;
  end;
  if t_data.Query1.RecordCount<1 then
    Result := False;
end;

procedure Tf_cancelbook.BarcodeKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited ;
  if Key = vk_delete then
    Key := 0;
  if Key = vk_Return then
  begin
    if Sender is TEdit then
      if (Trim(Barcode.Text)<>'')and(Trim(Bookname.Text)='')and(TEdit(Sender).Name = 'Barcode') then
      begin
        With t_data.Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select a.bookname,a.barcode,a.bookconcern,a.author,b.sellprice from tb_bookinfo a inner join tb_fixprice b on a.barcode = b.barcode and a.barcode = :barcode');
          Parameters.ParamByName('barcode').Value := Trim(Barcode.Text);
          Open;
        end;
        if t_data.Query1.RecordCount>0 then
        begin
          Barcode.Text := Trim(t_data.Query1.FieldByName('barcode').AsString);
          Bookname.Text := Trim(t_data.Query1.FieldByName('bookname').AsString);
          Price.Text :=Trim(t_data.Query1.FieldByName('sellprice').AsString);
          Author.Text := Trim(t_data.Query1.FieldByName('Author').AsString);
        end
        else
          Application.MessageBox('该条形码不存在或没有定价.','提示',64);
      end

⌨️ 快捷键说明

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