📄 partinfo.pas
字号:
unit partinfo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ComCtrls, DBTables, Grids, DBGrids, ExtCtrls, StdCtrls,
Mask, DBCtrls, ADODB;
type
TForm_partinfo = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
DBGrid1: TDBGrid;
Panel2: TPanel;
Panel3: TPanel;
Label5: TLabel;
Label4: TLabel;
Label3: TLabel;
Label2: TLabel;
Label1: TLabel;
DBEdit5: TDBEdit;
DBEdit3: TDBEdit;
DBEdit2: TDBEdit;
DBEdit1: TDBEdit;
DBEdit6: TDBEdit;
Label6: TLabel;
DataSource1: TDataSource;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
StringGrid1: TStringGrid;
Label7: TLabel;
DBEdit7: TDBEdit;
Button2: TButton;
DBEdit8: TDBEdit;
Label8: TLabel;
Button1: TButton;
Button3: TButton;
Button4: TButton;
Label9: TLabel;
DBEdit9: TDBEdit;
Panel1: TPanel;
btn_first: TButton;
btn_prev: TButton;
btn_next: TButton;
btn_last: TButton;
btn_addnew: TButton;
btn_edit: TButton;
btn_save: TButton;
btn_cancel: TButton;
btn_delete: TButton;
DBEdit10: TDBEdit;
ADOQuery1: TADOQuery;
dbedit4: TDBComboBox;
Label10: TLabel;
DBComboBox1: TDBComboBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btn_firstClick(Sender: TObject);
procedure btn_lastClick(Sender: TObject);
procedure btn_addnewClick(Sender: TObject);
procedure btn_saveClick(Sender: TObject);
procedure btn_prevClick(Sender: TObject);
procedure btn_nextClick(Sender: TObject);
procedure btn_editClick(Sender: TObject);
procedure btn_cancelClick(Sender: TObject);
procedure btn_filterfieldClick(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure ADOQuery1AfterOpen(DataSet: TDataSet);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure btn_deleteClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
private
{ Private declarations }
procedure LockEdit;
//定义函数,来改变各个输入框是否可以编辑,当用户再增加新记录
//或者编辑记录以前,不可以修改
procedure UnlockEdit;
//定义函数,用来让输入文本框可以编辑
procedure DisableBtn;
//定义过程,用来使某些按钮失效
procedure EnableBtn;
//定义过程,用来使某些按钮有效
public
{ Public declarations }
//FilterArray:array of string;
//FilterNum:integer;
end;
var
Form_partinfo: TForm_partinfo;
j:integer;
myIndex:array[1..10] of integer;
myValue:array[1..10] of single;
NotFirst:boolean;
implementation
uses wxp_dm, search, Unit_wxp, tongji, rp_part, rp_partsell;
{$R *.dfm}
procedure TForm_partinfo.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
procedure TForm_partinfo.btn_firstClick(Sender: TObject);
begin
aDOQuery1.First ;
end;
procedure TForm_partinfo.btn_lastClick(Sender: TObject);
begin
aDOQuery1.Last ;
end;
procedure TForm_partinfo.btn_addnewClick(Sender: TObject);
begin
//Table1.ReadOnly :=false;
//让文本框可以编辑
UnlockEdit;
DisableBtn;
btn_delete.Enabled :=false;
aDOQuery1.Insert ;
dbedit10.Text :=unit_wxp.myOffice ;
btn_save.Enabled :=true;
btn_cancel.Enabled :=true;
dbedit1.SetFocus ;
end;
procedure TForm_partinfo.btn_saveClick(Sender: TObject);
begin
//aDOQuery1.Post ;
if dbedit1.Text ='' then
begin
showmessage('编号不能为空');
exit;
end;
if dbedit2.Text ='' then
begin
showmessage('名称不能为空');
exit;
end;
if dbedit1.ReadOnly =false then
begin
dm_wxp.ADOQuery1.Close ;
dm_wxp.ADOQuery1.SQL.Clear ;
dm_wxp.ADOQuery1.SQL.Add('select * from pub_z_part where 编号=''' +
dbedit1.Text +'''' );
dm_wxp.ADOQuery1.Active :=true;
if not dm_wxp.ADOQuery1.Eof then
begin
showmessage('该零件编号已经输入过,请重新输入');
dm_wxp.ADOQuery1.Close ;
dbedit1.SetFocus ;
exit;
end;
end;
aDOQuery1.Post ;
btn_save.Enabled :=false;
btn_cancel.Enabled :=false;
//锁住所有文本框
LockEdit;
//使按钮有效
EnableBtn ;
btn_delete.Enabled :=true;
//Table1.ReadOnly :=true;
label23.Caption :=inttostr(self.ADOQuery1.Recordset.RecordCount);
end;
procedure TForm_partinfo.btn_prevClick(Sender: TObject);
begin
if not aDOQuery1.Bof then
aDOQuery1.Prior ;
end;
procedure TForm_partinfo.btn_nextClick(Sender: TObject);
begin
if not aDOQuery1.Eof then
aDOQuery1.Next ;
end;
procedure TForm_partinfo.btn_editClick(Sender: TObject);
begin
//Table1.ReadOnly :=false;
//让文本框可以编辑
UnlockEdit;
dbedit1.ReadOnly :=true;
//使一些按钮失效
DisableBtn;
btn_delete.Enabled :=false;
aDOQuery1.Edit ;
btn_save.Enabled :=true;
btn_cancel.Enabled :=true;
end;
//自定义过程,用来确定每个Edit空间是否可以编辑
procedure TForm_partinfo.LockEdit;
begin
DBEdit1.ReadOnly :=true;
DBEdit2.ReadOnly :=true;
DBEdit3.ReadOnly :=true;
DBEdit4.ReadOnly :=true;
DBEdit5.ReadOnly :=true;
DBEdit6.ReadOnly :=true;
DBEdit7.ReadOnly :=true;
DBEdit8.ReadOnly :=true;
DBEdit9.ReadOnly :=true;
end;
procedure TForm_partinfo.UnlockEdit ;
begin
DBEdit1.ReadOnly :=false;
DBEdit2.ReadOnly :=false;
DBEdit3.ReadOnly :=false;
DBEdit4.ReadOnly :=false;
DBEdit5.ReadOnly :=false;
DBEdit6.ReadOnly :=false;
DBEdit7.ReadOnly :=false;
DBEdit8.ReadOnly :=false;
DBEdit9.ReadOnly :=false;
end;
procedure TForm_partinfo.DisableBtn ;
begin
btn_first.Enabled :=false;
btn_prev.Enabled :=false;
btn_next.Enabled :=false;
btn_last.Enabled :=false;
btn_addnew.Enabled :=false;
btn_edit.Enabled :=false;
end;
procedure TForm_partinfo.EnableBtn ;
begin
btn_first.Enabled :=true;
btn_prev.Enabled :=true;
btn_next.Enabled :=true;
btn_last.Enabled :=true;
btn_addnew.Enabled :=true;
btn_edit.Enabled :=true;
end;
procedure TForm_partinfo.btn_cancelClick(Sender: TObject);
begin
aDOQuery1.Cancel ;
EnableBtn;
LockEdit;
btn_cancel.Enabled :=false;
btn_save.Enabled :=false;
btn_edit.Enabled :=false;
if ADOQuery1.Recordset.RecordCount <>0 then
begin
btn_delete.Enabled :=true;
btn_edit.Enabled :=true;
end;
end;
procedure TForm_partinfo.btn_filterfieldClick(Sender: TObject);
begin
self.ADOQuery1.Active :=false;
self.ADOQuery1.SQL.Clear ;
self.ADOQuery1.SQL.Add('select * from pub_z_part');
self.ADOQuery1.Active :=true;
end;
procedure TForm_partinfo.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
end;
procedure TForm_partinfo.ADOQuery1AfterOpen(DataSet: TDataSet);
var
i:integer;
tempName:string;
begin
//ADOQuery1.Last ;
Label23.Caption :=inttostr(ADOQuery1.RecordCount ) ;
//统计出每个字段的数值
if NotFirst=false then
begin
StringGrid1.Cells [0,1]:='合计';
StringGrid1.Cells [0,0]:='统计数据';
j:=0;
for i:=0 to self.ADOQuery1.FieldList.Count-1 do
begin
//list_fields.Items.Add (TransADO.Fields[i].FieldName );
//将每个字段的字段类型放在数组中
unit_wxp.FieldType[i]:= self.ADOQuery1.Fields[i].DataType;
tempName:= self.ADOQuery1 .Fields[i].FieldName;
if (tempName<>'序号') and (tempName<>'单价') and (tempName<>'最小库存') and (tempName<>'进价') and (tempName<>'销价')then
begin
if (unit_wxp.GetFieldType(i)='number') or (unit_wxp.GetFieldType(i)='money') then
begin
j:=j+1;
StringGrid1.Cells [j,0]:= tempName ;
stringgrid1.ColCount := stringgrid1.ColCount +1;
myIndex[j]:=i;
end;
end;
end;
NotFirst:=true;
end;
while not ADOQuery1.Eof do
begin
for i:=1 to j do
begin
myValue[i]:=myValue[i]+ADOQuery1.Fields.Fields[myIndex[i]].AsFloat ;
end;
ADOQuery1.Next ;
end;
for i:=1 to j do
begin
stringgrid1.Cells[i,1]:=floattostr(myValue[i]);
myValue[i]:=0;
end;
end;
procedure TForm_partinfo.Button1Click(Sender: TObject);
begin
Application.CreateForm(TForm_search, Form_search);
form_search.TransADO :=self.ADOQuery1 ;
unit_wxp.WhichForm:=1;
//showmessage(inttostr(adoquery1.FieldCount));
//adoquery1.FieldCount
form_search.Showmodal ;
end;
procedure TForm_partinfo.Button2Click(Sender: TObject);
begin
self.ADOQuery1.Active :=false;
self.ADOQuery1.SQL.Clear ;
self.ADOQuery1.SQL.Add('select * from pub_z_part where 库存量<最小库存');
self.ADOQuery1.Active :=true;
end;
procedure TForm_partinfo.FormCreate(Sender: TObject);
begin
self.ADOQuery1.Active :=true;
NotFirst:=false;
end;
procedure TForm_partinfo.FormShow(Sender: TObject);
begin
NotFirst:=false;
self.ADOQuery1.Active :=true;
if self.ADOQuery1.Recordset.RecordCount =0 then
begin
btn_delete.Enabled :=false;
btn_edit.Enabled :=false;
end;
end;
procedure TForm_partinfo.Button3Click(Sender: TObject);
begin
self.ADOQuery1.Active :=false;
self.ADOQuery1.SQL.Clear ;
self.ADOQuery1.SQL.Add('select * from pub_z_part ');
self.ADOQuery1.Active :=true;
unit_wxp.FinalSql := 'select * from pub_z_part ';
end;
procedure TForm_partinfo.Button4Click(Sender: TObject);
begin
Application.CreateForm(TQReport_part, QReport_part);
QReport_part.Query1.Active :=false;
QReport_part.Query1.SQL.Clear ;
QReport_part.Query1.SQL.Add(unit_wxp.FinalSql );
QReport_part.Query1.Active :=true;
QReport_part.QRLabel13.Caption:=unit_wxp.myOffice ;
QReport_part.Preview ;
QReport_part.Free ;
end;
procedure TForm_partinfo.btn_deleteClick(Sender: TObject);
begin
if application.MessageBox(pchar('确信要删除这条记录嘛?'),
pchar('注意'),MB_OKCANCEL)=IDOK then
self.ADOQuery1.Delete ;
if self.ADOQuery1.Recordset.RecordCount =0 then
begin
btn_delete.Enabled :=false;
btn_edit.Enabled :=false;
end;
label23.Caption :=inttostr(self.ADOQuery1.Recordset.RecordCount);
end;
procedure TForm_partinfo.FormActivate(Sender: TObject);
begin
dm_wxp.ADOQuery1.Active :=false;
dm_wxp.ADOQuery1.SQL.Clear ;
//showmessage('select 名称,机型,型号 from pub_z_part where 编号='''
//+self.EditDBEdit2.Text +'''');
dm_wxp.ADOQuery1.SQL.Add('select 机型 from std_machine');
dm_wxp.ADOQuery1.Active :=true;
while not dm_wxp.ADOQuery1.Eof do
begin
//dbedit49.AddItem(dm_wxp.ADOQuery1.Fields.Fields[0].AsString);
dbedit4.Items.Add(dm_wxp.ADOQuery1.Fields.Fields[0].AsString);
dm_wxp.ADOQuery1.Next ;
end;
dm_wxp.ADOQuery1.Active :=false;
end;
procedure TForm_partinfo.FormDestroy(Sender: TObject);
begin
Form_partinfo:=nil;
end;
procedure TForm_partinfo.PageControl1Change(Sender: TObject);
begin
if pagecontrol1.TabIndex =0 then
begin
panel1.Enabled :=true;
end
else
begin
panel1.Enabled :=false;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -