【编者按】:网学网DELPHI类作品为您提供DELPHI物资存储管理系统参考,解决您在DELPHI物资存储管理系统学习中工作中的难题,参考学习。
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn |
5.3.1 物资入库管理的设计 (1)选择“File”/“New”/“Other”菜单项,打开“New Items”对话框,选择“bpglxt”选项卡,点选“f_frame”,以继承方式使用该窗体。 单击【OK】按钮添加一个新命名窗体为“f_instore”,设置Caption属性为“物资入库管理”。 (2)在窗体上添加TLabel组件,命名为“Label1”。设置该组件的Caption属性为“物资入库管理”,设置Label1组件的Font属性。 (3)在窗体上添加TPanel组件,命名为“Panel2”。设置该组件的Align属性为“alBottom”;Caption属性为空。 (4)添加4个TLabel组件到Panel2组件上,分别设置它们的Caption属性为“供应商名称”、“负责人”、“操作员”、“时间”。添加4个TEdit组件到Panel2组件上,分别命名为“Providername”,“Principal”,“Operator”。添加TDateTimePicker组件到Panel2组件上,命名为“Date”。 (5)在窗体上添加TPanel组件,命名为“Panel1”。设置该组件的Align属性为“alBottom”,在Panel1组件上添加4个TLabel组件和4个TEdit组件。 (6)在窗体上添加TPanel组件,命名为“Panel3”。在该组件上添加3个TBitBtn组件,分别命名为“Save”、“Cancel”、“Quit”。 (7)添加TStringGrid组件到窗体上,命名为“Reginfo”。设置该组件的Align属性为“alBottom”;ColCount属性为“9”;RowCount属性为“2”;Ctrl3D属性为“False”。 (8)在窗体上添加TDataSource组件,命名为“RegSource”;添加TListBox组件,命名为“List”;添加TComboBox组件,命名为“Comstorage”;添加TDBGrid组件,命名为“Grid”。设置Grid组件的DataSource属性为“RegSource”。设计期物资入库窗体下图8: 图8 设计期物资入库管理模块 5.3.2 相关代码的分析 在窗体的OnShow事件处理过程中设置TStringGrid组件相关属性,将仓库信息添加到TComboBox组件中。代码如下: procedure Tf_instore.FormShow(Sender: TObject); begin inherited; with Reginfo do begin //设置字段名称 Cells[barcode,0]:=''条形码''; Cells[storename,0]:= ''物资名称''; Cells[basicunit,0]:=''基本单位''; Cells[stockunit,0]:= ''采购单位''; Cells[convertions,0]:= ''换算关系''; Cells[unitprice,0]:= ''单价''; Cells[num,0]:=''数量''; Cells[money,0]:= ''金额''; Cells[storagename,0]:=''仓库名称''; end; with t_data.Query1 do //查询仓库名称,将其添加到组合框中 begin CLose; SQL.Clear; SQL.Add(''select storagename from tb_storageinfo''); Open; end; if t_data.Query1.RecordCount>0 then begin while not t_data.Query1.Eof do begin Comstorage.Items.Add(Trim(t_data.Query1.FieldByName(''storagename'').AsString)); t_data.Query1.Next; end; Comstorage.ItemIndex := 0; end; Cancel.Click; end; 在TStringGrid组件的OnKeyPress事件处理过程中限制输入的内容。代码如下: procedure Tf_instore.ReginfoKeyPress(Sender: TObject; var Key: Char); begin inherited; if (col = unitprice)or(col = num)or(col = convertions) then begin if not (Key in [''0''..''9'',''.'',#8]) then //只允许输入数字键和退格键 Key := #0 //输入空字符 end; end; Keypress键盘事件 该事件是当用户按下ASCII字符的键盘时发生的。在该事件下的Key参数是一个数字,代表字符的ASCII值,如13(回车键)或27(ESC键)。示例代码如下: IF Key=#13 then edit2.setfocus //回车后,焦点跳转到edit2组件。 在TStringGrid组件的OnSelectCell事件处理过程中设置单元是否可编辑。代码如下: procedure Tf_instore.ReginfoSelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin inherited; row := ARow; col := ACol; //当物资名称为空时可以编辑条形码,当条形码为空时可以编辑物资名称, //当条形码不为空时可以编辑单价、数量 if (col = barcode)and(Trim(Reginfo.Cells[storename,row])='''')or(col = storename)and(Trim(Reginfo.Cells[barcode,row])='''')or (col = unitprice)and(Trim(Reginfo.Cells[barcode,row])<>'''')or(col = num)and(Trim(Reginfo.Cells[barcode,row])<>'''')or (col = convertions)and(Trim(Reginfo.Cells[barcode,row])<>'''')then Reginfo.Options := Reginfo.Options + [goEditing] else Reginfo.Options := Reginfo.Options - [goEditing]; end; 在TStringGrid组件的OnSetEditText事件处理过程中,设置TDBGrid组件出现的位置。代码如下: procedure Tf_instore.ReginfoSetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String); var CellRect: TRect; //记录单元格的区域,用于设置 begin inherited; if Reg = false then begin Grid.Visible := False; //使辅助录入表格不可用 if (Acol = storename) then //按仓库名称或简码进行匹配查询 begin With t_data.Query1 do begin CLose; SQL.Clear; SQL.Add(''select * from tb_storeinfo where storename Like :Storename or nameshort like :nameshort''); Parameters.ParamByName(''storename'').Value:= Trim(Reginfo.Cells[storename,ARow])+''%'' ; Parameters.ParamByName(''nameshort'').Value:= Trim(Reginfo.Cells[storename,ARow])+''%'' ; Open; end; if t_data.Query1.RecordCount>0 then //根据用户的输入是否有匹配的数据 begin Regsource.DataSet := t_data.Query1; if not Grid.Visible then //计算表格应出现的位置 begin CellRect := Reginfo.CellRect(ACol,ARow); CellRect.Left := CellRect.Left+Reginfo.Left; CellRect.Right := CellRect.Right+ Reginfo.Left; CellRect.Top := Reginfo.Top+ CellRect.Top; Grid.Left := CellRect.Right+1; Grid.Top := CellRect.Top; Grid.Visible := True; end; end else begin RegSource.DataSet := Nil; Grid.Visible := False; Application.MessageBox(''该物资信息不存在.'',''提示'',64); reg := True; Reginfo.Cells[storename,Row]:=''''; Reginfo.Col := storename; end; end; end;
|
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT |
本文选自计算机毕业设计http://myeducs.cn |