起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1123|回复: 1

[分享]主界面上功能窗体切换时候做一些动作**

[复制链接]
发表于 2007-9-25 11:57:10 | 显示全部楼层 |阅读模式
需求描述:
  在主界面上,切换到某个功能时候,执行一个动作,最典型是切换功能窗体以后,刷新功能中数据集。

困难:
  目前没有任何一个事件可以在这个过程中触发,无法捕捉这个机会

解决方法:
  在主界面上有一个OnFuncActivate的事件,利用这个事件,来满足上述需求

在 系统空间简洁风格\界面库窗体库\标准风格主窗体 中,红色部分为新增的代码,调用功能窗体的RefreshData方法
procedure TSTANDARDSTYLEMAINFORM.DoFuncActivate(Sender: TObject; AFunc: TFunc);
var
  lContainer: TFuncContainer;
begin
  lContainer := FindContainer(AFunc);
  if lContainer = nil then
    Exit;

  ShowContainer(lContainer);
  try
    ObjectHelper.CallMethod(AFunc.MainForm, 'RefreshData', []);
  except
  end;

end;

在自己的功能窗体上定义一个RefreshData方法
procedure TMainForm.RefreshData;
begin
  DataSetBroker1.DataSet.Refresh;
end;
这样当功能窗体切换时候,就会调用这个RefreshData方法了,如果窗体上没有定义这个方法,就什么也不做


注:
这样修改后,在Studio中调试运行会出错(ObjectHelper.CallMethod时的错误"该方法不存在"),用ie或者busness.exe就不会报错了
如果想studio中也不报错,请如图设置


请如图设置


在Studio中调试运行会出错

无标题.jpg

34.3 KB, 下载次数: 288

回复

使用道具 举报

发表于 2009-8-20 17:31:13 | 显示全部楼层
procedure TSTANDARDSTYLEMAINFORM.ShowContainer(AContainer: TFuncContainer);
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-4-20 06:44 , Processed in 0.045818 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表