如何将以下三个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;
...全文
26 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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中键的放在一个过程中,
再写一个简单的判断是哪个窗体的过程,就可以比较简单的
调用了,怎么写我就省了阿
  • 打赏
  • 举报
回复
相关推荐
发帖
Delphi
加入

4968

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2004-04-30 12:40
社区公告
暂无公告