📄 spdj.~pas
字号:
unit spdj;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, DB, Gauges, Spin, ExtCtrls, Buttons;
type
Tf_spdj = class(TForm)
DataSource1: TDataSource;
Grid: TDBGrid;
Panel1: TPanel;
Label1: TLabel;
spmc: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
Panel2: TPanel;
Label2: TLabel;
bzsj: TEdit;
bfb: TEdit;
Spin: TSpinButton;
bfbxs: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
List: TListBox;
procedure FormShow(Sender: TObject);
procedure bfbKeyPress(Sender: TObject; var Key: Char);
procedure SpinDownClick(Sender: TObject);
procedure SpinUpClick(Sender: TObject);
procedure bfbChange(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure GridCellClick(Column: TColumn);
procedure spmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure bzsjChange(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
Procedure Init;//初始化
procedure BitBtn2Click(Sender: TObject);
procedure ListDblClick(Sender: TObject);
procedure ListExit(Sender: TObject);
procedure ListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure bfbExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
f_spdj: Tf_spdj;
implementation
uses DataModal;
{$R *.dfm}
procedure Tf_spdj.FormShow(Sender: TObject);
begin
List.Left := Panel1.Left + spmc.Left;
List.Top := Panel1.Top + spmc.Top+spmc.Height;
Spin.Left := bfb.Left+bfb.Width-Spin.Width-1;
Spin.Top := bfb.Top+2;
With Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select distinct spmc from t_spjcxx where spdm in (select spdm from t_kc where spdm Not in(select spdm from t_spsj))');
Open;
end;
List.Clear;
if Data.Query2.RecordCount>0 then
while Not Data.Query2.Eof do
begin
List.Items.Add(Data.Query2.Fields[0].AsString);
Data.Query2.Next;
end;
end;
procedure Tf_spdj.bfbKeyPress(Sender: TObject; var Key: Char);
var
i: Boolean;
begin
i := (Key<#8)or(Key>#8)and(Key<#46)or(Key>#46)and(Key<#48)or(Key>#57);
if i then
Key := #0;
end;
procedure Tf_spdj.SpinDownClick(Sender: TObject);
begin
if Trim(bfb.Text)<>'' then
begin
if StrToFloat(bfb.Text)-1>=0 then
bfb.Text := FloatToStr(StrToFloat(bfb.Text)-1);
end
else
bfb.Text := '0';
end;
procedure Tf_spdj.SpinUpClick(Sender: TObject);
begin
if Trim(bfb.Text)<>'' then
bfb.Text := FloatToStr(StrToFloat(bfb.Text)+1)
else
bfb.Text := '0';
end;
procedure Tf_spdj.bfbChange(Sender: TObject);
begin
if Trim(bfb.Text)<>'' then
begin
Try
StrToFloat(bfb.Text);
Grid.OnCellClick(Nil);
Except
Application.MessageBox('请输入合法数据.','提示',64);
bfb.Clear;
Exit;
End;
bfbxs.Caption := Trim(bfb.Text+'%');
end
else
begin
bfbxs.Caption := '0%';
bzsj.Clear;
end;
end;
procedure Tf_spdj.RadioButton1Click(Sender: TObject);
begin
if RadioButton1.Checked = True then
begin
bzsj.ReadOnly := True;
bfb.Text := '0';
Spin.Enabled := True;
bfb.ReadOnly := False;
end;
end;
procedure Tf_spdj.RadioButton2Click(Sender: TObject);
begin
if RadioButton2.Checked = True then
begin
bzsj.ReadOnly := False;
bfb.Clear;
bfb.ReadOnly := True;
Spin.Enabled := False;
bzsj.Clear;
end;
end;
procedure Tf_spdj.BitBtn1Click(Sender: TObject);
var
cbj: real;
begin
if Trim(spmc.Text)<>'' then
begin
With Data.Query1 do
begin
Close;
SQL.Clear;
//查询在库存表中存在,在商品售价表中不存在的商品信息
SQL.Add('select distinct * from t_spjcxx where spdm in (select spdm from t_kc where spdm Not in(select spdm from t_spsj))and (spdm = :a or spmc =:a )');
paramByName('a').AsString := Trim(spmc.Text);
Open;
end;
if Data.Query1.RecordCount>0 then
begin
spmc.Text := Data.Query1.FieldByName('spmc').AsString;
DataSource1.DataSet := Data.Query1;
cbj := Data.Query1.FieldByName('hsj').AsFloat;
if RadioButton1.Checked = True then
bzsj.Text := Format('%8.4f',[(cbj*(1+StrToFloat(bfb.Text)/100))])
else
bzsj.Clear;
end
else
begin
Application.MessageBox('商品不存在或已经定价,请重新输入商品信息.','提示',64);
spmc.Clear;
DataSource1.DataSet := Nil;
end;
end;
end;
procedure Tf_spdj.GridCellClick(Column: TColumn);
var
cbj: real;//含税价
begin
if Data.Query1.Active = True then
if Data.Query1.RecordCount>0 then
if RadioButton1.Checked = True then
begin
cbj := Data.Query1.FieldByName('hsj').AsFloat;
bzsj.Text := Format('%8.4f',[(cbj*(1+StrToFloat(bfb.Text)/100))]);
end
else
bzsj.Clear;
end;
procedure Tf_spdj.spmcKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
BitBtn1.OnClick(Sender)
else if Key = vk_Next then
begin
List.Visible := True;
List.SetFocus;
end;
end;
procedure Tf_spdj.bzsjChange(Sender: TObject);
begin
if Trim(bzsj.Text)<>'' then
Try
StrToFloat(bzsj.Text);
Except
Application.MessageBox('请输入合法数据.','提示',64);
bzsj.Clear;
End;
end;
procedure Tf_spdj.BitBtn3Click(Sender: TObject);
begin
Close;
end;
procedure Tf_spdj.BitBtn2Click(Sender: TObject);
begin
if (Data.Query1.Active = True)and(Trim(bzsj.Text)<>'') then
if Data.Query1.RecordCount>0 then
begin
if StrToFloat(bzsj.Text)<Data.Query1.FieldByName('hsj').AsFloat then
begin
Application.MessageBox('标准售价不能小于含税价.','提示',64);
Exit;
end;
With Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from t_spsj where spdm = :a');
ParamByName('a').AsString := Trim(Data.Query1.FieldByName('spdm').AsString);
Open;
end;
Try
if Data.Query2.RecordCount>0 then
begin
With Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('update t_spsj set bzsj = :a where spdm = :b');
ParamByName('a').AsFloat := StrToFloat(bzsj.Text);
ParamByName('b').AsString := Trim(Data.Query1.FieldByName('spdm').AsString);
ExecSQL;
end;
end
else
begin
With Data.Query2 do
begin
Close;
SQL.Clear;
SQL.Add('insert t_spsj Values(:a,:b)');
ParamByName('b').AsFloat := StrToFloat(bzsj.Text);
ParamByName('a').AsString := Trim(Data.Query1.FieldByName('spdm').AsString);
ExecSQL;
end;
end;
Application.MessageBox('操作成功.','提示',64);
Init;
Except
Application.MessageBox('操作失败.','提示',64);
End;
end;
end;
procedure Tf_spdj.Init;
begin
spmc.Clear;
RadioButton1.Checked := True;
bfb.Text := '0';
DataSource1.DataSet := Nil;
bzsj.Clear;
OnShow(Nil);
end;
procedure Tf_spdj.ListDblClick(Sender: TObject);
begin
if List.Items.Count>0 then
begin
spmc.Text := List.Items[List.ItemIndex];
List.Visible := False;
spmc.SetFocus;
end;
end;
procedure Tf_spdj.ListExit(Sender: TObject);
begin
List.Visible := False;
end;
procedure Tf_spdj.ListKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = vk_Return then
List.OnDblClick(Sender);
end;
procedure Tf_spdj.bfbExit(Sender: TObject);
begin
if Trim(bfb.Text)='' then
bfb.Text := '0';
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -