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

📄 spdj.~pas

📁 这是用Delphi编写的中小企业管理系统
💻 ~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 + -