📄 booksell.pas
字号:
unit booksell;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, baseform, DB, DBGrids, Grids, ComCtrls, StdCtrls, ExtCtrls,ADODB;
type
Tf_booksell = 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;
Panel3: TPanel;
Label3: TLabel;
Save: TButton;
Cancel: TButton;
Rebate: TEdit;
Panel1: TPanel;
Label2: TLabel;
Label4: TLabel;
Label9: TLabel;
Operator: TEdit;
Counter: TComboBox;
Picker: TDateTimePicker;
Grid: TStringGrid;
Grid1: TDBGrid;
Source1: TDataSource;
Author: TEdit;
Label5: TLabel;
sumprice: TEdit;
aaa: TLabel;
Paymoney: TEdit;
Label12: TLabel;
Factmoney: TEdit;
Label14: TLabel;
Change: TEdit;
procedure priceKeyPress(Sender: TObject; var Key: Char);
procedure FormShow(Sender: TObject);
procedure BarcodeKeyPress(Sender: TObject; var Key: Char);
procedure BooknameKeyPress(Sender: TObject; var Key: Char);
procedure CounterKeyDown(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 CounterEnter(Sender: TObject);
procedure Grid1DblClick(Sender: TObject);
procedure BarcodeKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure priceChange(Sender: TObject);
procedure RebateExit(Sender: TObject);
procedure RebateChange(Sender: TObject);
procedure PaymoneyChange(Sender: TObject);
procedure GridSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure GridKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CancelClick(Sender: TObject);
procedure Grid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SaveClick(Sender: TObject);
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_booksell: Tf_booksell;
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_booksell.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_booksell.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_booksell.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_booksell.BooknameKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if Trim(barcode.Text)<>'' then
Key := #0;
end;
procedure Tf_booksell.CounterKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key = vk_Return then
FindNext(True);
end;
procedure Tf_booksell.PickerKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
inherited;
if Key =vk_Return then
Barcode.SetFocus;
end;
procedure Tf_booksell.BooknameChange(Sender: TObject);
begin
inherited;
if (Trim(Bookname.Text)<>'')and(Bookname.Focused) then
begin
With t_data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select a.bookname,a.barcode,a.bookconcern,author,b.sellprice from tb_bookinfo a inner join tb_fixprice b on a.barcode = b.barcode and a.bookname like :name');
Parameters.ParamByName('name').Size := 100;
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_booksell.Grid1Exit(Sender: TObject);
begin
inherited;
Grid1.Visible := False;
end;
procedure Tf_booksell.CounterEnter(Sender: TObject);
begin
inherited;
Grid1.Visible := False;
end;
procedure Tf_booksell.Grid1DblClick(Sender: TObject);
begin
inherited;
Price.Text :=Trim(Source1.DataSet.FieldByName('sellprice').AsString);
Barcode.Text := Trim(Source1.DataSet.FieldByName('barcode').AsString);
Bookname.Text := Trim(Source1.DataSet.FieldByName('bookname').AsString);
Author.Text := Trim(Source1.DataSet.FieldByName('author').AsString);
Grid1.Visible := False;
Sum.SetFocus;
end;
procedure Tf_booksell.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
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 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.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('sellprice').AsString);
Author.Text := Trim(t_data.Query1.FieldByName('Author').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
With t_data.Query1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from tb_bookcounter where counter = :counter and barcode = :barcode');
Parameters.ParamByName('counter').Value := Trim(Counter.Text);
Parameters.ParamByName('barcode').Value := Trim(Barcode.Text);
Open;
end;
if t_data.Query1.RecordCount<1 then
begin
Application.MessageBox('该书籍在当前柜台中不存在.','提示',64);
Exit;
end;
Grid.Cells[c_barcode,Grid.RowCount-1]:= Trim(Barcode.Text);
Grid.Cells[c_bookname,Grid.RowCount-1]:= Trim(Bookname.Text);
Grid.Cells[c_price,Grid.RowCount-1]:= Trim(Price.Text);
Grid.Cells[c_author,Grid.RowCount-1]:= Trim(Author.Text);
Grid.Cells[c_sum,Grid.RowCount-1] := Trim(Sum.Text);
Grid.Cells[c_money,Grid.RowCount-1]:= Trim(Money.Text);
Grid.RowCount := Grid.RowCount+1;
if Trim(Sumprice.Text)= '' then
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -