如何将以下三个IF段合并成一串通用的过程!高难度分数可加!

yvqq 2004-04-30 12:40:58
//产品销售计划执行分析
if FormName='Frm_Sal_Qry_SalePlanOfItemAnalyse' then
begin
Frm_Sal_Qry_SalePlanOfItemAnalyse:=TFrm_Sal_Qry_SalePlanOfItemAnalyse.Create(Mainform);
Frm_Sal_Qry_SalePlanOfItemAnalyse.SetSysParam(FLoginId,FModuleCode,FTmpSysMenuid,FLoginDate);
Frm_Sal_Qry_SalePlanOfItemAnalyse.SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
Frm_Sal_Qry_SalePlanOfItemAnalyse.InitForm(Connection,True);
Frm_Sal_Qry_SalePlanOfItemAnalyse.Show;
end;

//营销业务员销售计划执行分析
if FormName='Frm_Sal_Qry_SalePlanOfSalerAnalyse' then
begin
Frm_Sal_Qry_SalePlanOfSalerAnalyse:=TFrm_Sal_Qry_SalePlanOfSalerAnalyse.Create(Mainform);
Frm_Sal_Qry_SalePlanOfSalerAnalyse.SetSysParam(FLoginId,FModuleCode,FTmpSysMenuid,FLoginDate);
Frm_Sal_Qry_SalePlanOfSalerAnalyse.SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
Frm_Sal_Qry_SalePlanOfSalerAnalyse.InitForm(Connection,True);
Frm_Sal_Qry_SalePlanOfSalerAnalyse.Show;
end;

//部门销售计划执行分析菜单调用
if FormName='Frm_Sal_Qry_SalePlanOfDeptAnalyse' then
begin
Frm_Sal_Qry_SalePlanOfDeptAnalyse:=TFrm_Sal_Qry_SalePlanOfDeptAnalyse.Create(Mainform);
Frm_Sal_Qry_SalePlanOfDeptAnalyse.SetSysParam(FLoginId,FModuleCode,FTmpSysMenuid,FLoginDate);
Frm_Sal_Qry_SalePlanOfDeptAnalyse.SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
Frm_Sal_Qry_SalePlanOfDeptAnalyse.InitForm(Connection,True);
Frm_Sal_Qry_SalePlanOfDeptAnalyse.Show;
end;
...全文
1012 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yvqq 2004-04-30
  • 打赏
  • 举报
回复
如果这种方式改起来比较麻烦的话,不知道大家有没有别的变通方法:
原则:动态菜单——单击鼠标时,程序从数据库中取出需要显示的form的名字然后显示这个form.
另外还需要再增加一些参数就更好了。
windindance 2004-04-30
  • 打赏
  • 举报
回复
初学啊……那没办法了,建议你先不要考虑合并了,即使合并了也容易出错,并且你难以修改。
windindance 2004-04-30
  • 打赏
  • 举报
回复
建议看一些关于OO的书。
windindance 2004-04-30
  • 打赏
  • 举报
回复
TFrm_Sal_Qry_SalePla,TFrm_Sal_Qry_SalePlanOfSalerAnalyse,TFrm_Sal_Qry_SalePlanOfDeptAnalyse
均继承于一个TForm_Sal_Query_Base窗体。
TForm_Sal_Query_Base在该窗体中:
SetSysParam,SetUserParam,InitForm 均定义为虚函数。
增加一个函数Deal;
procedure Deal;
begin
SetSysParam(FLoginId,FModuleCode,FTmpSysMenuid,FLoginDate);
SetUserParam(Param1,Param2,Param3,Param4,Param5,Param6);
InitForm(Connection,True);
Show;
end;


这样,该段代码可以直接写为:
Deal;
jinjazz 2004-04-30
  • 打赏
  • 举报
回复
if FormName='Frm_Sal_Qry_SalePlanOfDeptAnalyse' then
begin
Frm_Sal_Qry_SalePlanOfDeptAnalyse:=TFrm_Sal_Qry_SalePlanOfDeptAnalyse.Create

你的意思是把 引号里面的东西 对应到相应的Tform上面??

好像...
你可以考虑把相应的form单独建立dll或者exe,再调用
yvqq 2004-04-30
  • 打赏
  • 举报
回复
以上说的方法我也知道,我希望将所有的(N重复行)菜单的执行模块变成一个语句块,即下面这句
变成类变量的模式处理
Frm_Sal_Qry_SalePlanOfDeptAnalyse:=变量.Create(Mainform)
因为每个菜单对应的form名称及相应的参数我是写在数据库中的,所以我希望能有通用的方法去处理,而我现在用的方法是最老式的处理方法很方便。

希望高手能多给些意见!
msn:yvqq@hotmail.com
liuqifeiyu 2004-04-30
  • 打赏
  • 举报
回复
up
jinjazz 2004-04-30
  • 打赏
  • 举报
回复
case
wenjianyao 2004-04-30
  • 打赏
  • 举报
回复
吧begin end中键的放在一个过程中,
再写一个简单的判断是哪个窗体的过程,就可以比较简单的
调用了,怎么写我就省了阿

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧