(http://tech.ddvip.com/2009-05/1242747992119973_4.html)
细心的读者可能会发现,在前面的几个MDI子窗体中,相同的部分是非常多的。例如各个窗体标题栏下面的工具栏以及查询功能等。对于布局非常相似的窗体,在程序设计过程中可以先设计一个父窗体,其他窗体从父窗体继承,对应有类继承概念的开发工具这是非常方便的。这一方法的使用我们留在下一章中再介绍,这里我们用一种更简易的方法来实现主生产计划维护窗体。
(1) 在前面的主需求计划维护窗体设计好后,选择File | Save As...菜单命令,将这个窗体另存为MainProduceForm.pas,并将窗体改名为MainProduce,再将它加入工程并从自动创建列表 中删除。然后再根据需要对窗体上的控件设置进行修改,例如移动一些控件的位置,增加一些新的控件等等,如图3.38。
图3.38 主生产计划维护窗体
(2) 在修改好各个控件的布置之后,应该进一步修改各控件的属性设置,新的属性设置如表3.9所示。
表3.9 主生产计划维护窗体控件属性设置
主需求计划和主生产计划窗体相似之处非常多,它们的很多代码都是非常相似的,只不过所操作的数据表由主需求计划改为了主生产计划,这样只需要对主需求计划维护窗体的时间处理代码做少许修改即可达到目的。
(3) 下面给出主生产计划窗体事件处理程序的代码,请读者参考主需求计划窗体时间处理程序的代码加以理解,并特别注意其中的不同之处。
uses MainForm,ChooseForm;
{$R *.dfm}
//--------------
下一条记录
------------
procedure TMainProduce.BitBtn3Click(Sender: TObject);
begin
datasource2.DataSet.Next;
end;
//--------------
上一条记录
------------
procedure TMainProduce.BitBtn2Click(Sender: TObject);
begin
datasource2.DataSet.Prior;
end;
//--------------
首条记录
------------
procedure TMainProduce.BitBtn1Click(Sender: TObject);
begin
datasource2.DataSet.First;
end;
//--------------
末条记录
------------
procedure TMainProduce.BitBtn4Click(Sender: TObject);
begin
datasource2.DataSet.Last;
end;
//--------------
关闭窗体
------------
procedure TMainProduce.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=cafree;
end;
procedure TMainProduce.BitBtn10Click(Sender: TObject);
begin
close;
end;
//--------------
查询数据
------------
procedure TMainProduce.BitBtn12Click(Sender: TObject);
begin
adoquery2.Close;
adoquery2.SQL.Clear;
adoquery2.SQL.Add('select * from
主生产计划
where (
物料编号
like ''%'+edit1.Text+'%'')and');
adoquery2.SQL.Add('(
年份
like ''%'+edit2.Text+'%'')and(
计划期
like ''%'+edit3.Text+'%'')');
adoquery2.Open;
edit1.Clear;
edit2.Clear;
edit3.Clear;
end;
procedure TMainProduce.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
bitbtn12.Click;
end;
procedure TMainProduce.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
bitbtn12.Click;
end;
procedure TMainProduce.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
bitbtn12.Click;
end;
//--------------
新增记录
------------
procedure TMainProduce.FormActivate(Sender: TObject);
begin
//
如果是新增按钮被按下,则将从物料主文件中选取得零件的编号
//
名称等信息送到主需求窗口中,并初始化一些数据
if insflag=1 then
begin
dbedit1.Text:=main.str;
dbedit2.Text:=main.str2;
end;
if insflag=2 then
begin
dbedit3.Text:=main.str;
dbedit4.Text:=main.str2;
dbedit5.Text:=main.str3;
dbedit6.Text:=main.str4;
end;
end;
procedure TMainProduce.BitBtn5Click(Sender: TObject);
begin
datasource2.DataSet.Insert;
//
将插入、删除、修改和移动按钮关闭,防止错误操作
bitbtn6.Enabled:=false;
bitbtn7.Enabled:=false;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Enabled:=false;
//
打开保存和取消按钮的使能,允许保存或者取消
bitbtn8.Enabled:=true;
bitbtn9.Enabled:=true;
//
将两个浏览按钮使能打开
bitbtn11.Enabled:=true;
bitbtn13.Enabled:=true;
//
必须用保存按钮才能提交
dbgrid2.Enabled:=false;
//
允许对需求数量和备注进行修改
dbedit7.ReadOnly:=false;
dbedit7.Text:='0';
dbedit9.ReadOnly:=false;
dbedit9.Text:='0';
dbedit8.ReadOnly:=false;
dbedit10.ReadOnly:=false;
dbedit11.ReadOnly:=false;
dbmemo1.ReadOnly:=false;
end;
//--------------
调用
choose
窗体,从物料主文件中选择数据
------------
procedure TMainProduce.BitBtn13Click(Sender: TObject);
var
newform:Tchoose;
begin
//
标识从主需求窗体调用物料主文件窗口
main.bomflag:=4;
newform:=Tchoose.Create(application);
//
将本窗口灰化
self.Enabled:=false;
//
标识为第一个检索按钮按下
insflag:=1;
end;
//--------------
从工厂日历表中选择数据
------------
procedure TMainProduce.BitBtn11Click(Sender: TObject);
begin
main.bomflag:=5;
main.N5.Click;
//
将本窗口灰化
self.Enabled:=false;
//
标识为第一个检索按钮按下
insflag:=2;
end;
//--------------
修改记录
------------
procedure TMainProduce.BitBtn6Click(Sender: TObject);
begin
datasource2.DataSet.Edit;
//
将插入、删除、修改和移动按钮关闭,防止错误操作
bitbtn6.Enabled:=false;
bitbtn7.Enabled:=false;
bitbtn1.Enabled:=false;
bitbtn2.Enabled:=false;
bitbtn3.Enabled:=false;
bitbtn4.Enabled:=false;
bitbtn5.Enabled:=false;
//
打开保存和取消按钮的使能,允许保存或者取消
bitbtn8.Enabled:=true;
bitbtn9.Enabled:=true;
//
将两个浏览按钮使能打开
bitbtn11.Enabled:=true;
bitbtn13.Enabled:=true;
//
必须用保存按钮才能提交
dbgrid2.Enabled:=false;
//
允许对需求数量和备注进行修改
dbedit7.ReadOnly:=false;
dbedit9.ReadOnly:=false;
dbedit8.ReadOnly:=false;
dbedit10.ReadOnly:=false;
dbedit11.ReadOnly:=false;
dbmemo1.ReadOnly:=false;
end;
//--------------
保存记录
----------------
procedure TMainProduce.BitBtn8Click(Sender: TObject);
begin
datasource2.DataSet.Post;
//
将插入、删除、修改和移动按钮打开
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=true;
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=true;
bitbtn5.Enabled:=true;
//
关闭保存和取消按钮的使能
bitbtn8.Enabled:=false;
bitbtn9.Enabled:=false;
//
将两个浏览按钮使能关闭
bitbtn11.Enabled:=false;
bitbtn13.Enabled:=false;
//
恢复
dbgrid
的选取功能
dbgrid2.Enabled:=true;
//
恢复
dbedit
的只读属性
dbedit7.ReadOnly:=true;
dbedit9.ReadOnly:=true;
dbedit8.ReadOnly:=true;
dbedit10.ReadOnly:=true;
dbedit11.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
dbmemo1.ReadOnly:=true;
//
刷新数据
adoquery2.Active:=false;
adoquery2.Active:=true;
end;
//--------------
取消操作
----------------
procedure TMainProduce.BitBtn9Click(Sender: TObject);
begin
datasource2.DataSet.Cancel;
//
将插入、删除、修改和移动按钮打开
bitbtn6.Enabled:=true;
bitbtn7.Enabled:=true;
bitbtn1.Enabled:=true;
bitbtn2.Enabled:=true;
bitbtn3.Enabled:=true;
bitbtn4.Enabled:=true;
bitbtn5.Enabled:=true;
//
关闭保存和取消按钮的使能
bitbtn8.Enabled:=false;
bitbtn9.Enabled:=false;
//
将两个浏览按钮使能关闭
bitbtn11.Enabled:=false;
bitbtn13.Enabled:=false;
//
恢复
dbgrid
的选取功能
dbgrid2.Enabled:=true;
//
恢复
dbedit
的只读属性
dbedit7.ReadOnly:=true;
dbedit9.ReadOnly:=true;
dbedit8.ReadOnly:=t
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/93029/viewspace-1023882/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/93029/viewspace-1023882/