📄 material_info.pas
字号:
unit material_info;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Spin, StdCtrls, Buttons, ComCtrls, Mask, DBCtrls,
Grids, DBGrids, ImgList, ToolWin, DB, ADODB;
type
TForm_Material_info = class(TForm)
ImageList1: TImageList;
Label14: TLabel;
Label15: TLabel;
DS_material: TDataSource;
ADOQtmp: TADOQuery;
TabSheet: TPageControl;
material: TTabSheet;
Panel_info: TPanel;
Label6: TLabel;
Label8: TLabel;
Label18: TLabel;
Label19: TLabel;
Label20: TLabel;
Label_price: TLabel;
Label23: TLabel;
BitBtn_matid: TSpeedButton;
SpeedButton1: TSpeedButton;
DBE_mat_name: TDBEdit;
DBE_unit: TDBEdit;
DBE_mat_id: TDBEdit;
DBE_price: TDBEdit;
DBCheckBox_flag: TDBCheckBox;
DBMemo1: TDBMemo;
DBLookup_matype: TDBLookupComboBox;
DBComboBox1: TDBComboBox;
TabSheet1: TTabSheet;
DBGrid6: TDBGrid;
Panel1: TPanel;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton_save: TToolButton;
ToolButton_cancel: TToolButton;
ToolButton11: TToolButton;
ToolButton_locate: TToolButton;
ToolButton_refresh: TToolButton;
ToolButton7: TToolButton;
ToolButton_exit: TToolButton;
ADOQ_material: TADOQuery;
ADOT_matype: TADOTable;
ADOQ_materialmat_id: TStringField;
ADOQ_materialmat_name: TStringField;
ADOQ_materialmatype_id: TIntegerField;
ADOQ_materialprice: TBCDField;
ADOQ_materialcolor: TStringField;
ADOQ_materialunit: TStringField;
ADOQ_materialmemo: TStringField;
ADOT_matypematype_id: TAutoIncField;
ADOT_matypematype_name: TStringField;
ADOQ_materialmatype_name: TStringField;
Panel2: TPanel;
Label4: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
Label7: TLabel;
Label9: TLabel;
Bevel1: TBevel;
Edit_id: TEdit;
Edit_name: TEdit;
Edit_color: TEdit;
OKBtn: TBitBtn;
CancelBtn: TBitBtn;
ComboBox1: TComboBox;
Edit1: TEdit;
ComboBox3: TComboBox;
Edit2: TEdit;
ComboBox2: TComboBox;
RadioGroup1: TRadioGroup;
Lookup_matype: TComboBox;
Button2: TButton;
ADOQ_materialflag: TBooleanField;
ToolButton5: TToolButton;
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBCheckBox_flagClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure BitBtn_matidClick(Sender: TObject);
procedure DS_materialStateChange(Sender: TObject);
procedure ToolButton_refreshClick(Sender: TObject);
procedure ToolButton_cancelClick(Sender: TObject);
procedure ToolButton_saveClick(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ADOQ_materialBeforePost(DataSet: TDataSet);
procedure FormCreate(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure ToolButton_exitClick(Sender: TObject);
procedure ToolButton_locateClick(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure ADOQ_materialAfterInsert(DataSet: TDataSet);
procedure DBGrid6DblClick(Sender: TObject);
procedure TabSheetChanging(Sender: TObject; var AllowChange: Boolean);
procedure TabSheetChange(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
private
{ Private declarations }
old_matname:string; //修改记录时物料的名称
old_price:real;
public
{ Public declarations }
end;
var
Form_Material_info: TForm_Material_info;
implementation
uses data, sharevar, sharefun, ColorSetup, Main;
{$R *.dfm}
procedure TForm_Material_info.FormShow(Sender: TObject);
begin
with adoqtmp do
begin
close; sql.Clear;
sql.Add('select matype_name from material_type');
open;
Lookup_matype.Clear;
Lookup_matype.Items.Add(' ');
while not eof do
begin
Lookup_matype.items.Add(fieldvalues['matype_name']);
next;
end;
end;
//添加颜色
DBComboBox1.Clear;
with ADOQtmp do
begin
close;sql.clear;
sql.add('select color from color order by id');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无颜色信息,请先定义!');
exit;
end;
DBComboBox1.Items.Add(' ');
first;
while not eof do
begin
DBComboBox1.Items.Add(fieldvalues['color']);
next;
end;
end;
end;
procedure TForm_Material_info.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
//显示对应物料是否需支付个人工资
procedure TForm_Material_info.DBCheckBox_flagClick(Sender: TObject);
begin
if DBCheckBox_flag.Checked then
begin
Label_price.Visible:=true;
DBE_price.Visible:=true;
DBE_price.Enabled:=true;
end
else
begin
Label_price.Visible:=false;
DBE_price.Visible:=false;
DBE_price.Enabled:=false;
end;
end;
//显示对应物料是否需支付个人工资
procedure TForm_Material_info.SpeedButton1Click(Sender: TObject);
begin
FrmColorSetup:=TFrmColorSetup.create(self);
FrmColorSetup.showmodal;
//添加颜色
DBComboBox1.Clear;
with ADOQtmp do
begin
close;sql.clear;
sql.add('select color from color order by id');
open;
if recordcount =0 then
begin
MsgErr(handle,'当前无颜色信息,请先定义!');
exit;
end;
DBComboBox1.Items.Add(' ');
first;
while not eof do
begin
DBComboBox1.Items.Add(fieldvalues['color']);
next;
end;
end;
end;
//根据物料的类别及颜色得到物料的编号
procedure TForm_Material_info.BitBtn_matidClick(Sender: TObject);
var tmpstr:string;
len_str:integer;
begin
if trim(DBLookup_matype.Text)='' then
begin
MsgOk(handle,'请先确认物料所属的类别!');
DBLookup_matype.SetFocus;
exit;
end;
tmpstr:=getstringpy(trim(DBLookup_matype.Text));
if length(tmpstr)>3 then tmpstr:=copy(tmpstr,1,3)+'-'
else tmpstr:=tmpstr+'-';
if trim(DBComboBox1.Text)<>'' then tmpstr:=tmpstr+copy(getstringpy(trim(DBComboBox1.Text)),1,2);
with ADOQtmp do
begin
close; sql.Clear;
sql.Add('select mat_id from material where mat_id like '+''''+'%'+tmpstr+'%'+'''');
sql.Add('order by mat_id desc');
execsql; open;
len_str:=length(tmpstr);
if recordcount=0 then
tmpstr:=tmpstr+copy('00000000',1,9-len_str)+'1'
else
begin
first;
tmpstr:=fieldvalues['mat_id'];
end;
end;
ADOQ_material.FieldValues['mat_id']:=tmpstr;
end;
procedure TForm_Material_info.DS_materialStateChange(Sender: TObject);
begin
if ((sender as Tdatasource).DataSet.State in [dsinsert,dsedit]) then
begin
ToolButton1.Enabled:=false;
ToolButton2.Enabled:=false;
ToolButton3.Enabled:=false;
ToolButton_save.Enabled:=true;
ToolButton_cancel.Enabled:=true;
Panel_info.Enabled:=true;
ToolButton_locate.Enabled:=false;
if (sender as Tdatasource).DataSet.State in [dsinsert] then
begin
DBE_mat_id.ParentColor:=false;
DBE_mat_id.Color:=clwindow;
BitBtn_matid.Enabled:=true;
end;
if (sender as Tdatasource).DataSet.State in [dsedit] then
begin
BitBtn_matid.Enabled:=false;
DBE_mat_id.ParentColor:=true;
BitBtn_matid.Enabled:=false;
end;
end;
if (sender as Tdatasource).DataSet.State in [dsbrowse] then
begin
ToolButton1.Enabled:=true;
ToolButton2.Enabled:=true;
ToolButton3.Enabled:=true;
ToolButton_save.Enabled:=false;
ToolButton_cancel.Enabled:=false;
dbe_mat_id.ParentColor:=false;
dbe_mat_id.Color:=clwindow;
BitBtn_matid.Enabled:=false;
panel_info.Enabled:=false;
ToolButton_locate.Enabled:=true;
end;
end;
procedure TForm_Material_info.ToolButton_refreshClick(Sender: TObject);
begin
if not adoq_material.Active then exit;
adot_matype.Close; adot_matype.Open;
with adoq_material do
begin
sql.Strings[1]:='';
close; open;
end;
end;
procedure TForm_Material_info.ToolButton_cancelClick(Sender: TObject);
begin
if not adoq_material.Active then exit;
adoq_material.Cancel;
Panel_info.Enabled:=false;
end;
procedure TForm_Material_info.ToolButton_saveClick(Sender: TObject);
begin
if not adoq_material.Active then exit;
if not (adoq_material.State in [dsinsert,dsedit]) then exit;
adoq_material.Post;
Panel_info.Enabled:=false;
end;
procedure TForm_Material_info.ToolButton3Click(Sender: TObject);
begin
if not adoq_material.Active then exit;
if adoq_material.State in [dsinsert, dsedit] then exit;
if adoq_material.RecordCount=0 then exit;
with adoq_material do
begin
if recordcount=0 then exit;
if msgqst(handle,'确定删除物料编号为:['+fieldvalues['mat_id']+'] 的物料 ['+fieldvalues['mat_name']+']吗?')=idno then exit;
try
delete;
except
msgerr(handle,'当前数据在相关连的表中用到,删除失败!');
end;
end;
end;
procedure TForm_Material_info.ToolButton2Click(Sender: TObject);
begin
if not adoq_material.Active then exit;
if adoq_material.State in [dsinsert,dsedit] then exit;
if adoq_material.RecordCount=0 then exit;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -