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

📄 partinfo.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 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 + -