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

📄 indepot.~pas

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

interface

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

type
  Tf_indepot = class(Tf_baseform)
    Label1: TLabel;
    Source1: TDataSource;
    Panel2: TPanel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label13: TLabel;
    Barcode: TEdit;
    price: TEdit;
    Money: TEdit;
    Bookname: TEdit;
    Sum: TEdit;
    Panel3: TPanel;
    Save: TButton;
    Quit: TButton;
    Cancel: TButton;
    Panel1: TPanel;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label9: TLabel;
    Operator: TEdit;
    Principal: TEdit;
    Provider: TComboBox;
    Picker: TDateTimePicker;
    Storage: TComboBox;
    Grid1: TDBGrid;
    Grid: TStringGrid;
    Label3: TLabel;
    summoney: TEdit;
    procedure QuitClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure BarcodeKeyPress(Sender: TObject; var Key: Char);
    procedure priceKeyPress(Sender: TObject; var Key: Char);
    procedure priceChange(Sender: TObject);
    procedure ProviderKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure PickerKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BooknameChange(Sender: TObject);
    procedure Grid1Exit(Sender: TObject);
    procedure BooknameEnter(Sender: TObject);
    procedure Grid1DblClick(Sender: TObject);
    procedure Grid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BarcodeKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure BooknameKeyPress(Sender: TObject; var Key: Char);
    procedure CancelClick(Sender: TObject);
    procedure GridSelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
    procedure GridKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SaveClick(Sender: TObject);
  private
    { Private declarations }
  public
    Procedure ClearGrid;
    Function DetailIsNull: Boolean;
    Procedure ClearDetail;
    Function MasterIsNull: Boolean;
    Function GridIsNull: Boolean;
    Function ProviderIsValid: Boolean;//判断供应商名称是否合法
    { Public declarations }
  end;

var
  f_indepot: Tf_indepot;
  x:integer = 1;
  y: Integer = 0;
const
  bar= 0; //条形码
  book = 1;
  unitprice = 2;
  amount = 3;
  sumprice = 4;
  Depot= 5;
implementation
  uses Data,main;
{$R *.dfm}

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

procedure Tf_indepot.FormShow(Sender: TObject);
begin
  inherited;
  Picker.DateTime := Now;
  Grid.Cells[bar,0]:= '条形码';
  Grid.Cells[book,0]:='书籍名称';
  Grid.Cells[unitprice,0]:= '单价';
  Grid.Cells[amount,0]:= '数量';
  Grid.Cells[sumprice,0]:= '金额';
  Grid.Cells[depot,0]:='仓库';
  With t_data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select providername from tb_providerinfo');
    Open;
  end;
  if t_data.Query1.RecordCount>0 then
  begin
    while Not t_data.Query1.Eof do
    begin
      Provider.Items.Add(Trim(t_data.Query1.Fields[0].Value));
      t_data.Query1.Next;
    end;
  end;
  With t_data.Query1 do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select depotname from tb_depotinfo');
    Open;
  end;
  if t_data.Query1.RecordCount>0 then
  begin
    while Not t_data.Query1.Eof do
    begin
      Storage.Items.Add(Trim(t_data.Query1.Fields[0].Value));
      t_data.Query1.Next;
    end;
  end;
  Cancel.Click;
end;

procedure Tf_indepot.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_indepot.priceKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Not (Key in ['0'..'9','.',#8])then
    Key := #0
  else if (key = '.') then
    Key := #0;
end;

procedure Tf_indepot.priceChange(Sender: TObject);
begin
  inherited;
  if (Trim(Price.Text)<>'')and(Trim(sum.Text)<>'') then
    Money.Text := FloatToStr(StrToFloat(Price.Text)*StrToFloat(sum.Text))
  else
    Money.Clear;
end;

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

procedure Tf_indepot.PickerKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
    Barcode.SetFocus;
end;

procedure Tf_indepot.BooknameChange(Sender: TObject);
begin
  inherited;
  If Trim(Bookname.Text)<>'' then
  begin
    With t_data.Query1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select * from tb_bookinfo where bookname like :name');
      Parameters.ParamByName('name').Value := Trim(Bookname.Text)+'%';
      Open;
    end;
    if t_data.Query1.RecordCount>0 then
    begin
      Source1.DataSet := t_data.Query1;
      Grid1.Visible := True;
    end
    else
    begin
      t_data.Query1.Close;
      Grid1.Visible := False;
    end;
  end;
end;

procedure Tf_indepot.Grid1Exit(Sender: TObject);
begin
  inherited;
  Grid1.Visible := False;
end;

procedure Tf_indepot.BooknameEnter(Sender: TObject);
begin
  inherited;
  Grid1.Visible := False;
end;

procedure Tf_indepot.Grid1DblClick(Sender: TObject);
begin
  inherited;
  Barcode.Text := Trim(Source1.DataSet.FieldByName('barcode').AsString);
  Bookname.Text := Trim(Source1.DataSet.FieldByName('bookname').AsString);
  Price.Text :=Trim(Source1.DataSet.FieldByName('price').AsString);
  Grid1.Visible := False;
  Sum.SetFocus;
end;

procedure Tf_indepot.Grid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
  if Key = vk_Return then
    Grid1.OnDblClick(Sender);
end;

procedure Tf_indepot.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 * from tb_bookinfo where 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('price').AsString);
        end
        else
          Application.MessageBox('该条形码不存在.','提示',64);
      end
      else if (TEdit(Sender).Name = 'Bookname')and(Trim(Bookname.Text)<>'')and(Trim(Barcode.Text)='') then
      begin
        With t_data.Query1 do
        begin
          Close;
          SQL.Clear;
          SQL.Add('select * from tb_bookinfo where bookname = :name');
          Parameters.ParamByName('name').Value := Trim(Bookname.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('price').AsString);
        end
        else
          Application.MessageBox('该书籍不存在.','提示',64);
      end;
    FindNext(True);
  end
  else if (Key = vk_control)and(Grid1.Visible = True) then
    Grid1.SetFocus
  else if (Key = vk_insert)and(DetailIsNull = False) then
  begin
    Grid.Cells[bar,Grid.RowCount-1]:= Trim(Barcode.Text);
    Grid.Cells[book,Grid.RowCount-1]:= Trim(Bookname.Text);
    Grid.Cells[unitprice,Grid.RowCount-1]:= Trim(Price.Text);
    Grid.Cells[amount,Grid.RowCount-1] := Trim(Sum.Text);
    Grid.Cells[sumprice,Grid.RowCount-1]:= Trim(Money.Text);
    Grid.Cells[depot,Grid.RowCount-1]:= Trim(Storage.Text);
    Grid.RowCount := Grid.RowCount+1;
    if Trim(Summoney.Text)= '' then
      SumMoney.Text := Money.Text
    else
      SumMoney.Text := FloatToStr(StrToFloat(SumMoney.Text)+ StrToFloat(Money.Text));
    ClearDetail;
  end
  else if Key =vk_escape then
  begin
    ClearDetail;
  end;
end;

procedure Tf_indepot.BooknameKeyPress(Sender: TObject; var Key: Char);

⌨️ 快捷键说明

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